Merge branch 'perf/fast' into perf/core
[profile/ivi/kernel-adaptation-intel-automotive.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_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14422                                 (s8) wlapi_getintvar(shim,
14423                                                      BRCMS_SROM_MAXP2GA0);
14424                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425                                 (s8) wlapi_getintvar(shim,
14426                                                      BRCMS_SROM_MAXP2GA1);
14427                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14428                                 (s16) wlapi_getintvar(shim,
14429                                                       BRCMS_SROM_PA2GW0A0);
14430                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14431                                 (s16) wlapi_getintvar(shim,
14432                                                       BRCMS_SROM_PA2GW0A1);
14433                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14434                                 (s16) wlapi_getintvar(shim,
14435                                                       BRCMS_SROM_PA2GW1A0);
14436                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14437                                 (s16) wlapi_getintvar(shim,
14438                                                       BRCMS_SROM_PA2GW1A1);
14439                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14440                                 (s16) wlapi_getintvar(shim,
14441                                                       BRCMS_SROM_PA2GW2A0);
14442                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14443                                 (s16) wlapi_getintvar(shim,
14444                                                       BRCMS_SROM_PA2GW2A1);
14445                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14446                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14447                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14448                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14449
14450                         pi->cck2gpo = (u16) wlapi_getintvar(shim,
14451                                                             BRCMS_SROM_CCK2GPO);
14452
14453                         pi->ofdm2gpo =
14454                                 (u32) wlapi_getintvar(shim,
14455                                                       BRCMS_SROM_OFDM2GPO);
14456
14457                         pi->mcs2gpo[0] =
14458                                 (u16) wlapi_getintvar(shim,
14459                                                       BRCMS_SROM_MCS2GPO0);
14460                         pi->mcs2gpo[1] =
14461                                 (u16) wlapi_getintvar(shim,
14462                                                       BRCMS_SROM_MCS2GPO1);
14463                         pi->mcs2gpo[2] =
14464                                 (u16) wlapi_getintvar(shim,
14465                                                       BRCMS_SROM_MCS2GPO2);
14466                         pi->mcs2gpo[3] =
14467                                 (u16) wlapi_getintvar(shim,
14468                                                       BRCMS_SROM_MCS2GPO3);
14469                         pi->mcs2gpo[4] =
14470                                 (u16) wlapi_getintvar(shim,
14471                                                       BRCMS_SROM_MCS2GPO4);
14472                         pi->mcs2gpo[5] =
14473                                 (u16) wlapi_getintvar(shim,
14474                                                       BRCMS_SROM_MCS2GPO5);
14475                         pi->mcs2gpo[6] =
14476                                 (u16) wlapi_getintvar(shim,
14477                                                       BRCMS_SROM_MCS2GPO6);
14478                         pi->mcs2gpo[7] =
14479                                 (u16) wlapi_getintvar(shim,
14480                                                       BRCMS_SROM_MCS2GPO7);
14481                         break;
14482                 case 1:
14483
14484                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14485                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14486                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14487                                 (s8) wlapi_getintvar(shim,
14488                                                      BRCMS_SROM_MAXP5GA1);
14489                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14490                                 (s16) wlapi_getintvar(shim,
14491                                                       BRCMS_SROM_PA5GW0A0);
14492                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14493                                 (s16) wlapi_getintvar(shim,
14494                                                       BRCMS_SROM_PA5GW0A1);
14495                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14496                                 (s16) wlapi_getintvar(shim,
14497                                                       BRCMS_SROM_PA5GW1A0);
14498                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14499                                 (s16) wlapi_getintvar(shim,
14500                                                       BRCMS_SROM_PA5GW1A1);
14501                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14502                                 (s16) wlapi_getintvar(shim,
14503                                                       BRCMS_SROM_PA5GW2A0);
14504                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14505                                 (s16) wlapi_getintvar(shim,
14506                                                       BRCMS_SROM_PA5GW2A1);
14507                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14508                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14509                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14510                                 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14511
14512                         pi->ofdm5gpo =
14513                                 (u32) wlapi_getintvar(shim,
14514                                                       BRCMS_SROM_OFDM5GPO);
14515
14516                         pi->mcs5gpo[0] =
14517                                 (u16) wlapi_getintvar(shim,
14518                                                       BRCMS_SROM_MCS5GPO0);
14519                         pi->mcs5gpo[1] =
14520                                 (u16) wlapi_getintvar(shim,
14521                                                       BRCMS_SROM_MCS5GPO1);
14522                         pi->mcs5gpo[2] =
14523                                 (u16) wlapi_getintvar(shim,
14524                                                       BRCMS_SROM_MCS5GPO2);
14525                         pi->mcs5gpo[3] =
14526                                 (u16) wlapi_getintvar(shim,
14527                                                       BRCMS_SROM_MCS5GPO3);
14528                         pi->mcs5gpo[4] =
14529                                 (u16) wlapi_getintvar(shim,
14530                                                       BRCMS_SROM_MCS5GPO4);
14531                         pi->mcs5gpo[5] =
14532                                 (u16) wlapi_getintvar(shim,
14533                                                       BRCMS_SROM_MCS5GPO5);
14534                         pi->mcs5gpo[6] =
14535                                 (u16) wlapi_getintvar(shim,
14536                                                       BRCMS_SROM_MCS5GPO6);
14537                         pi->mcs5gpo[7] =
14538                                 (u16) wlapi_getintvar(shim,
14539                                                       BRCMS_SROM_MCS5GPO7);
14540                         break;
14541                 case 2:
14542
14543                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14544                                 (s8) wlapi_getintvar(shim,
14545                                                      BRCMS_SROM_MAXP5GLA0);
14546                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14547                                 (s8) wlapi_getintvar(shim,
14548                                                      BRCMS_SROM_MAXP5GLA1);
14549                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14550                                 (s16) wlapi_getintvar(shim,
14551                                                       BRCMS_SROM_PA5GLW0A0);
14552                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14553                                 (s16) wlapi_getintvar(shim,
14554                                                       BRCMS_SROM_PA5GLW0A1);
14555                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14556                                 (s16) wlapi_getintvar(shim,
14557                                                       BRCMS_SROM_PA5GLW1A0);
14558                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14559                                 (s16) wlapi_getintvar(shim,
14560                                                       BRCMS_SROM_PA5GLW1A1);
14561                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14562                                 (s16) wlapi_getintvar(shim,
14563                                                       BRCMS_SROM_PA5GLW2A0);
14564                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14565                                 (s16) wlapi_getintvar(shim,
14566                                                       BRCMS_SROM_PA5GLW2A1);
14567                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14568                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14569
14570                         pi->ofdm5glpo =
14571                                 (u32) wlapi_getintvar(shim,
14572                                                       BRCMS_SROM_OFDM5GLPO);
14573
14574                         pi->mcs5glpo[0] =
14575                                 (u16) wlapi_getintvar(shim,
14576                                                       BRCMS_SROM_MCS5GLPO0);
14577                         pi->mcs5glpo[1] =
14578                                 (u16) wlapi_getintvar(shim,
14579                                                       BRCMS_SROM_MCS5GLPO1);
14580                         pi->mcs5glpo[2] =
14581                                 (u16) wlapi_getintvar(shim,
14582                                                       BRCMS_SROM_MCS5GLPO2);
14583                         pi->mcs5glpo[3] =
14584                                 (u16) wlapi_getintvar(shim,
14585                                                       BRCMS_SROM_MCS5GLPO3);
14586                         pi->mcs5glpo[4] =
14587                                 (u16) wlapi_getintvar(shim,
14588                                                       BRCMS_SROM_MCS5GLPO4);
14589                         pi->mcs5glpo[5] =
14590                                 (u16) wlapi_getintvar(shim,
14591                                                       BRCMS_SROM_MCS5GLPO5);
14592                         pi->mcs5glpo[6] =
14593                                 (u16) wlapi_getintvar(shim,
14594                                                       BRCMS_SROM_MCS5GLPO6);
14595                         pi->mcs5glpo[7] =
14596                                 (u16) wlapi_getintvar(shim,
14597                                                       BRCMS_SROM_MCS5GLPO7);
14598                         break;
14599                 case 3:
14600
14601                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14602                                 (s8) wlapi_getintvar(shim,
14603                                                      BRCMS_SROM_MAXP5GHA0);
14604                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14605                                 (s8) wlapi_getintvar(shim,
14606                                                      BRCMS_SROM_MAXP5GHA1);
14607                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14608                                 (s16) wlapi_getintvar(shim,
14609                                                       BRCMS_SROM_PA5GHW0A0);
14610                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14611                                 (s16) wlapi_getintvar(shim,
14612                                                       BRCMS_SROM_PA5GHW0A1);
14613                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14614                                 (s16) wlapi_getintvar(shim,
14615                                                       BRCMS_SROM_PA5GHW1A0);
14616                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14617                                 (s16) wlapi_getintvar(shim,
14618                                                       BRCMS_SROM_PA5GHW1A1);
14619                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14620                                 (s16) wlapi_getintvar(shim,
14621                                                       BRCMS_SROM_PA5GHW2A0);
14622                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14623                                 (s16) wlapi_getintvar(shim,
14624                                                       BRCMS_SROM_PA5GHW2A1);
14625                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14626                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14627
14628                         pi->ofdm5ghpo =
14629                                 (u32) wlapi_getintvar(shim,
14630                                                       BRCMS_SROM_OFDM5GHPO);
14631
14632                         pi->mcs5ghpo[0] =
14633                                 (u16) wlapi_getintvar(shim,
14634                                                       BRCMS_SROM_MCS5GHPO0);
14635                         pi->mcs5ghpo[1] =
14636                                 (u16) wlapi_getintvar(shim,
14637                                                       BRCMS_SROM_MCS5GHPO1);
14638                         pi->mcs5ghpo[2] =
14639                                 (u16) wlapi_getintvar(shim,
14640                                                       BRCMS_SROM_MCS5GHPO2);
14641                         pi->mcs5ghpo[3] =
14642                                 (u16) wlapi_getintvar(shim,
14643                                                       BRCMS_SROM_MCS5GHPO3);
14644                         pi->mcs5ghpo[4] =
14645                                 (u16) wlapi_getintvar(shim,
14646                                                       BRCMS_SROM_MCS5GHPO4);
14647                         pi->mcs5ghpo[5] =
14648                                 (u16) wlapi_getintvar(shim,
14649                                                       BRCMS_SROM_MCS5GHPO5);
14650                         pi->mcs5ghpo[6] =
14651                                 (u16) wlapi_getintvar(shim,
14652                                                       BRCMS_SROM_MCS5GHPO6);
14653                         pi->mcs5ghpo[7] =
14654                                 (u16) wlapi_getintvar(shim,
14655                                                       BRCMS_SROM_MCS5GHPO7);
14656                         break;
14657                 }
14658         }
14659
14660         wlc_phy_txpwr_apply_nphy(pi);
14661 }
14662
14663 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14664 {
14665         struct phy_shim_info *shim = pi->sh->physhim;
14666
14667         pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14668         pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14669         pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14670
14671         pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14672                                                       BRCMS_SROM_TSSIPOS2G);
14673         pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14674                                                         BRCMS_SROM_EXTPAGAIN2G);
14675         pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14676                                                         BRCMS_SROM_PDETRANGE2G);
14677         pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14678         pi->srom_fem2g.antswctrllut =
14679                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14680
14681         pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14682                                                       BRCMS_SROM_TSSIPOS5G);
14683         pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14684                                                         BRCMS_SROM_EXTPAGAIN5G);
14685         pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14686                                                         BRCMS_SROM_PDETRANGE5G);
14687         pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14688         if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14689                 pi->srom_fem5g.antswctrllut =
14690                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14691         else
14692                 pi->srom_fem5g.antswctrllut =
14693                         (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14694
14695         wlc_phy_txpower_ipa_upd(pi);
14696
14697         pi->phy_txcore_disable_temp =
14698                         (s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14699         if (pi->phy_txcore_disable_temp == 0)
14700                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14701
14702         pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14703                                                         BRCMS_SROM_TEMPOFFSET);
14704         if (pi->phy_tempsense_offset != 0) {
14705                 if (pi->phy_tempsense_offset >
14706                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14707                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14708                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14709                                                      NPHY_SROM_MINTEMPOFFSET))
14710                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14711                 else
14712                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14713         }
14714
14715         pi->phy_txcore_enable_temp =
14716                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14717
14718         pi->phycal_tempdelta =
14719                         (u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14720         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14721                 pi->phycal_tempdelta = 0;
14722
14723         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14724
14725         return true;
14726 }
14727
14728 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14729 {
14730         uint i;
14731
14732         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14733                 pi->phyhang_avoid = true;
14734
14735         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14736                 pi->nphy_gband_spurwar_en = true;
14737                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14738                         pi->nphy_aband_spurwar_en = true;
14739         }
14740         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14741                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14742                         pi->nphy_gband_spurwar2_en = true;
14743         }
14744
14745         pi->n_preamble_override = AUTO;
14746         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14747                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14748
14749         pi->nphy_txrx_chain = AUTO;
14750         pi->phy_scraminit = AUTO;
14751
14752         pi->nphy_rxcalparams = 0x010100B5;
14753
14754         pi->nphy_perical = PHY_PERICAL_MPHASE;
14755         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14756         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14757
14758         pi->nphy_gain_boost = true;
14759         pi->nphy_elna_gain_config = false;
14760         pi->radio_is_on = false;
14761
14762         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14763                 pi->nphy_txpwrindex[i].index = AUTO;
14764
14765         wlc_phy_txpwrctrl_config_nphy(pi);
14766         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14767                 pi->hwpwrctrl_capable = true;
14768
14769         pi->pi_fptr.init = wlc_phy_init_nphy;
14770         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14771         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14772         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14773
14774         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14775                 return false;
14776
14777         return true;
14778 }
14779
14780 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14781 {
14782         s32 rfpwr_offset = 0;
14783
14784         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14785                 if ((pi->pubpi.radiorev == 3) ||
14786                     (pi->pubpi.radiorev == 4) ||
14787                     (pi->pubpi.radiorev == 6))
14788                         rfpwr_offset = (s16)
14789                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14790                                        [pad_gn];
14791                 else if (pi->pubpi.radiorev == 5)
14792                         rfpwr_offset = (s16)
14793                                        nphy_papd_padgain_dlt_2g_2057rev5
14794                                        [pad_gn];
14795                 else if ((pi->pubpi.radiorev == 7)
14796                          || (pi->pubpi.radiorev ==
14797                              8))
14798                         rfpwr_offset = (s16)
14799                                        nphy_papd_padgain_dlt_2g_2057rev7
14800                                        [pad_gn];
14801         } else {
14802                 if ((pi->pubpi.radiorev == 3) ||
14803                     (pi->pubpi.radiorev == 4) ||
14804                     (pi->pubpi.radiorev == 6))
14805                         rfpwr_offset = (s16)
14806                                        nphy_papd_pgagain_dlt_5g_2057
14807                                        [pga_gn];
14808                 else if ((pi->pubpi.radiorev == 7)
14809                          || (pi->pubpi.radiorev ==
14810                              8))
14811                         rfpwr_offset = (s16)
14812                                        nphy_papd_pgagain_dlt_5g_2057rev7
14813                                        [pga_gn];
14814         }
14815         return rfpwr_offset;
14816 }
14817
14818 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14819 {
14820         bool gf_preamble = false;
14821         u16 val;
14822
14823         if (preamble == BRCMS_N_PREAMBLE_GF)
14824                 gf_preamble = true;
14825
14826         val = read_phy_reg(pi, 0xed);
14827
14828         val |= RX_GF_MM_AUTO;
14829         val &= ~RX_GF_OR_MM;
14830         if (gf_preamble)
14831                 val |= RX_GF_OR_MM;
14832
14833         write_phy_reg(pi, 0xed, val);
14834 }
14835
14836 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14837 {
14838         int j, type;
14839         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14840
14841         for (type = 0; type < 3; type++) {
14842                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14843                         write_phy_reg(pi, addr_offset[type] + j,
14844                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14845         }
14846
14847         if (pi->bw == WL_CHANSPEC_BW_40) {
14848                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14849                         write_phy_reg(pi, 0x186 + j,
14850                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14851         } else {
14852                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14853                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14854                                 write_phy_reg(pi, 0x186 + j,
14855                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14856                 }
14857
14858                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14859                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14860                                 write_phy_reg(pi, 0x2c5 + j,
14861                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14862                 }
14863         }
14864 }
14865
14866 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14867 {
14868         int j;
14869
14870         if (pi->bw == WL_CHANSPEC_BW_40) {
14871                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14872                         write_phy_reg(pi, 0x195 + j,
14873                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14874         } else {
14875                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14876                         write_phy_reg(pi, 0x186 + j,
14877                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14878         }
14879 }
14880
14881 static void
14882 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14883                        u8 len)
14884 {
14885         u32 t1_offset, t2_offset;
14886         u8 ctr;
14887         u8 end_event =
14888                 NREV_GE(pi->pubpi.phy_rev,
14889                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14890         u8 end_dly = 1;
14891
14892         if (pi->phyhang_avoid)
14893                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14894
14895         t1_offset = cmd << 4;
14896         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14897                                  events);
14898         t2_offset = t1_offset + 0x080;
14899         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14900                                  dlys);
14901
14902         for (ctr = len; ctr < 16; ctr++) {
14903                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14904                                          t1_offset + ctr, 8, &end_event);
14905                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14906                                          t2_offset + ctr, 8, &end_dly);
14907         }
14908
14909         if (pi->phyhang_avoid)
14910                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14911 }
14912
14913 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14914 {
14915         u16 lpf_bw_ctl_val = 0;
14916         u16 rx2tx_lpf_rc_lut_offset = 0;
14917
14918         if (offset == 0) {
14919                 if (CHSPEC_IS40(pi->radio_chanspec))
14920                         rx2tx_lpf_rc_lut_offset = 0x159;
14921                 else
14922                         rx2tx_lpf_rc_lut_offset = 0x154;
14923         } else {
14924                 rx2tx_lpf_rc_lut_offset = offset;
14925         }
14926         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14927                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14928                                 &lpf_bw_ctl_val);
14929
14930         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14931
14932         return lpf_bw_ctl_val;
14933 }
14934
14935 static void
14936 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14937                                   u8 core_mask, u8 off, u8 override_id)
14938 {
14939         u8 core_num;
14940         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14941         u8 val_shift = 0;
14942
14943         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14944                 en_mask = field;
14945                 for (core_num = 0; core_num < 2; core_num++) {
14946                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14947
14948                                 switch (field) {
14949                                 case (0x1 << 2):
14950                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14951                                         val_addr = (core_num == 0) ? 0x7a :
14952                                                    0x7d;
14953                                         val_mask = (0x1 << 1);
14954                                         val_shift = 1;
14955                                         break;
14956                                 case (0x1 << 3):
14957                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14958                                         val_addr = (core_num == 0) ? 0x7a :
14959                                                    0x7d;
14960                                         val_mask = (0x1 << 2);
14961                                         val_shift = 2;
14962                                         break;
14963                                 case (0x1 << 4):
14964                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14965                                         val_addr = (core_num == 0) ? 0x7a :
14966                                                    0x7d;
14967                                         val_mask = (0x1 << 4);
14968                                         val_shift = 4;
14969                                         break;
14970                                 case (0x1 << 5):
14971                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14972                                         val_addr = (core_num == 0) ? 0x7a :
14973                                                    0x7d;
14974                                         val_mask = (0x1 << 5);
14975                                         val_shift = 5;
14976                                         break;
14977                                 case (0x1 << 6):
14978                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14979                                         val_addr = (core_num == 0) ? 0x7a :
14980                                                    0x7d;
14981                                         val_mask = (0x1 << 6);
14982                                         val_shift = 6;
14983                                         break;
14984                                 case (0x1 << 7):
14985                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14986                                         val_addr = (core_num == 0) ? 0x7a :
14987                                                    0x7d;
14988                                         val_mask = (0x1 << 7);
14989                                         val_shift = 7;
14990                                         break;
14991                                 case (0x1 << 10):
14992                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14993                                         val_addr = (core_num == 0) ? 0xf8 :
14994                                                    0xfa;
14995                                         val_mask = (0x7 << 4);
14996                                         val_shift = 4;
14997                                         break;
14998                                 case (0x1 << 11):
14999                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15000                                         val_addr = (core_num == 0) ? 0x7b :
15001                                                    0x7e;
15002                                         val_mask = (0xffff << 0);
15003                                         val_shift = 0;
15004                                         break;
15005                                 case (0x1 << 12):
15006                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15007                                         val_addr = (core_num == 0) ? 0x7c :
15008                                                    0x7f;
15009                                         val_mask = (0xffff << 0);
15010                                         val_shift = 0;
15011                                         break;
15012                                 case (0x3 << 13):
15013                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15014                                         val_addr = (core_num == 0) ? 0x348 :
15015                                                    0x349;
15016                                         val_mask = (0xff << 0);
15017                                         val_shift = 0;
15018                                         break;
15019                                 case (0x1 << 13):
15020                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
15021                                         val_addr = (core_num == 0) ? 0x348 :
15022                                                    0x349;
15023                                         val_mask = (0xf << 0);
15024                                         val_shift = 0;
15025                                         break;
15026                                 default:
15027                                         addr = 0xffff;
15028                                         break;
15029                                 }
15030                         } else if (override_id ==
15031                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15032
15033                                 switch (field) {
15034                                 case (0x1 << 1):
15035                                         en_addr = (core_num == 0) ? 0x342 :
15036                                                   0x343;
15037                                         val_addr = (core_num == 0) ? 0x340 :
15038                                                    0x341;
15039                                         val_mask = (0x1 << 1);
15040                                         val_shift = 1;
15041                                         break;
15042                                 case (0x1 << 3):
15043                                         en_addr = (core_num == 0) ? 0x342 :
15044                                                   0x343;
15045                                         val_addr = (core_num == 0) ? 0x340 :
15046                                                    0x341;
15047                                         val_mask = (0x1 << 3);
15048                                         val_shift = 3;
15049                                         break;
15050                                 case (0x1 << 5):
15051                                         en_addr = (core_num == 0) ? 0x342 :
15052                                                   0x343;
15053                                         val_addr = (core_num == 0) ? 0x340 :
15054                                                    0x341;
15055                                         val_mask = (0x1 << 5);
15056                                         val_shift = 5;
15057                                         break;
15058                                 case (0x1 << 4):
15059                                         en_addr = (core_num == 0) ? 0x342 :
15060                                                   0x343;
15061                                         val_addr = (core_num == 0) ? 0x340 :
15062                                                    0x341;
15063                                         val_mask = (0x1 << 4);
15064                                         val_shift = 4;
15065                                         break;
15066                                 case (0x1 << 2):
15067
15068                                         en_addr = (core_num == 0) ? 0x342 :
15069                                                   0x343;
15070                                         val_addr = (core_num == 0) ? 0x340 :
15071                                                    0x341;
15072                                         val_mask = (0x1 << 2);
15073                                         val_shift = 2;
15074                                         break;
15075                                 case (0x1 << 7):
15076
15077                                         en_addr = (core_num == 0) ? 0x342 :
15078                                                   0x343;
15079                                         val_addr = (core_num == 0) ? 0x340 :
15080                                                    0x341;
15081                                         val_mask = (0x7 << 8);
15082                                         val_shift = 8;
15083                                         break;
15084                                 case (0x1 << 11):
15085                                         en_addr = (core_num == 0) ? 0x342 :
15086                                                   0x343;
15087                                         val_addr = (core_num == 0) ? 0x340 :
15088                                                    0x341;
15089                                         val_mask = (0x1 << 14);
15090                                         val_shift = 14;
15091                                         break;
15092                                 case (0x1 << 10):
15093                                         en_addr = (core_num == 0) ? 0x342 :
15094                                                   0x343;
15095                                         val_addr = (core_num == 0) ? 0x340 :
15096                                                    0x341;
15097                                         val_mask = (0x1 << 13);
15098                                         val_shift = 13;
15099                                         break;
15100                                 case (0x1 << 9):
15101                                         en_addr = (core_num == 0) ? 0x342 :
15102                                                   0x343;
15103                                         val_addr = (core_num == 0) ? 0x340 :
15104                                                    0x341;
15105                                         val_mask = (0x1 << 12);
15106                                         val_shift = 12;
15107                                         break;
15108                                 case (0x1 << 8):
15109                                         en_addr = (core_num == 0) ? 0x342 :
15110                                                   0x343;
15111                                         val_addr = (core_num == 0) ? 0x340 :
15112                                                    0x341;
15113                                         val_mask = (0x1 << 11);
15114                                         val_shift = 11;
15115                                         break;
15116                                 case (0x1 << 6):
15117                                         en_addr = (core_num == 0) ? 0x342 :
15118                                                   0x343;
15119                                         val_addr = (core_num == 0) ? 0x340 :
15120                                                    0x341;
15121                                         val_mask = (0x1 << 6);
15122                                         val_shift = 6;
15123                                         break;
15124                                 case (0x1 << 0):
15125                                         en_addr = (core_num == 0) ? 0x342 :
15126                                                   0x343;
15127                                         val_addr = (core_num == 0) ? 0x340 :
15128                                                    0x341;
15129                                         val_mask = (0x1 << 0);
15130                                         val_shift = 0;
15131                                         break;
15132                                 default:
15133                                         addr = 0xffff;
15134                                         break;
15135                                 }
15136                         } else if (override_id ==
15137                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15138
15139                                 switch (field) {
15140                                 case (0x1 << 3):
15141                                         en_addr = (core_num == 0) ? 0x346 :
15142                                                   0x347;
15143                                         val_addr = (core_num == 0) ? 0x344 :
15144                                                    0x345;
15145                                         val_mask = (0x1 << 3);
15146                                         val_shift = 3;
15147                                         break;
15148                                 case (0x1 << 1):
15149                                         en_addr = (core_num == 0) ? 0x346 :
15150                                                   0x347;
15151                                         val_addr = (core_num == 0) ? 0x344 :
15152                                                    0x345;
15153                                         val_mask = (0x1 << 1);
15154                                         val_shift = 1;
15155                                         break;
15156                                 case (0x1 << 0):
15157                                         en_addr = (core_num == 0) ? 0x346 :
15158                                                   0x347;
15159                                         val_addr = (core_num == 0) ? 0x344 :
15160                                                    0x345;
15161                                         val_mask = (0x1 << 0);
15162                                         val_shift = 0;
15163                                         break;
15164                                 case (0x1 << 2):
15165                                         en_addr = (core_num == 0) ? 0x346 :
15166                                                   0x347;
15167                                         val_addr = (core_num == 0) ? 0x344 :
15168                                                    0x345;
15169                                         val_mask = (0x1 << 2);
15170                                         val_shift = 2;
15171                                         break;
15172                                 case (0x1 << 4):
15173                                         en_addr = (core_num == 0) ? 0x346 :
15174                                                   0x347;
15175                                         val_addr = (core_num == 0) ? 0x344 :
15176                                                    0x345;
15177                                         val_mask = (0x1 << 4);
15178                                         val_shift = 4;
15179                                         break;
15180                                 default:
15181                                         addr = 0xffff;
15182                                         break;
15183                                 }
15184                         }
15185
15186                         if (off) {
15187                                 and_phy_reg(pi, en_addr, ~en_mask);
15188                                 and_phy_reg(pi, val_addr, ~val_mask);
15189                         } else {
15190
15191                                 if ((core_mask == 0)
15192                                     || (core_mask & (1 << core_num))) {
15193                                         or_phy_reg(pi, en_addr, en_mask);
15194
15195                                         if (addr != 0xffff)
15196                                                 mod_phy_reg(pi, val_addr,
15197                                                             val_mask,
15198                                                             (value <<
15199                                                              val_shift));
15200                                 }
15201                         }
15202                 }
15203         }
15204 }
15205
15206 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15207 {
15208         uint core;
15209         int ctr;
15210         s16 gain_delta[2];
15211         u8 curr_channel;
15212         u16 minmax_gain[2];
15213         u16 regval[4];
15214
15215         if (pi->phyhang_avoid)
15216                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15217
15218         if (pi->nphy_gain_boost) {
15219                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15220
15221                         gain_delta[0] = 6;
15222                         gain_delta[1] = 6;
15223                 } else {
15224
15225                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15226                         gain_delta[0] =
15227                                 (s16)
15228                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15229                                                curr_channel) +
15230                                               nphy_lnagain_est0[1]), 13);
15231                         gain_delta[1] =
15232                                 (s16)
15233                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15234                                                curr_channel) +
15235                                               nphy_lnagain_est1[1]), 13);
15236                 }
15237         } else {
15238
15239                 gain_delta[0] = 0;
15240                 gain_delta[1] = 0;
15241         }
15242
15243         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15244                 if (pi->nphy_elna_gain_config) {
15245
15246                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15247                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15248                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15249                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15250                 } else {
15251                         for (ctr = 0; ctr < 4; ctr++)
15252                                 regval[ctr] =
15253                                         nphy_def_lnagains[ctr] +
15254                                         gain_delta[core];
15255                 }
15256                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15257
15258                 minmax_gain[core] =
15259                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15260         }
15261
15262         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15263         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15264
15265         if (pi->phyhang_avoid)
15266                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15267 }
15268
15269 static void
15270 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15271 {
15272         if (core == PHY_CORE_0) {
15273                 write_phy_reg(pi, 0x38, 0x4);
15274                 if (CHSPEC_IS2G(pi->radio_chanspec))
15275                         write_phy_reg(pi, 0x37, 0x0060);
15276                 else
15277                         write_phy_reg(pi, 0x37, 0x1080);
15278         } else if (core == PHY_CORE_1) {
15279                 write_phy_reg(pi, 0x2ae, 0x4);
15280                 if (CHSPEC_IS2G(pi->radio_chanspec))
15281                         write_phy_reg(pi, 0x2ad, 0x0060);
15282                 else
15283                         write_phy_reg(pi, 0x2ad, 0x1080);
15284         }
15285 }
15286
15287 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15288 {
15289         u8 txchain0, txchain1;
15290
15291         txchain0 = txchain & 0x1;
15292         txchain1 = (txchain & 0x2) >> 1;
15293         if (!txchain0)
15294                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15295
15296         if (!txchain1)
15297                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15298 }
15299
15300 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15301 {
15302         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15303         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15304         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15305         s8 tia_gainbits[] = {
15306                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15307
15308         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15309         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15310
15311         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15312
15313         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15314         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15315
15316         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15317                                  lna1_gain_db);
15318         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15319                                  lna1_gain_db);
15320
15321         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15322                                  lna2_gain_db);
15323         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15324                                  lna2_gain_db);
15325
15326         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15327                                  tia_gain_db);
15328         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15329                                  tia_gain_db);
15330
15331         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15332                                  tia_gainbits);
15333         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15334                                  tia_gainbits);
15335
15336         write_phy_reg(pi, 0x37, 0x74);
15337         write_phy_reg(pi, 0x2ad, 0x74);
15338         write_phy_reg(pi, 0x38, 0x18);
15339         write_phy_reg(pi, 0x2ae, 0x18);
15340
15341         write_phy_reg(pi, 0x2b, 0xe8);
15342         write_phy_reg(pi, 0x41, 0xe8);
15343
15344         if (CHSPEC_IS20(pi->radio_chanspec)) {
15345
15346                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15347                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15348         } else {
15349
15350                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15351                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15352         }
15353 }
15354
15355 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15356 {
15357         u16 currband;
15358         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15359         s8 *lna1_gain_db = NULL;
15360         s8 *lna1_gain_db_2 = NULL;
15361         s8 *lna2_gain_db = NULL;
15362         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15363         s8 *tia_gain_db;
15364         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15365         s8 *tia_gainbits;
15366         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15367         u16 *rfseq_init_gain;
15368         u16 init_gaincode;
15369         u16 clip1hi_gaincode;
15370         u16 clip1md_gaincode = 0;
15371         u16 clip1md_gaincode_B;
15372         u16 clip1lo_gaincode;
15373         u16 clip1lo_gaincode_B;
15374         u8 crsminl_th = 0;
15375         u8 crsminu_th;
15376         u16 nbclip_th = 0;
15377         u8 w1clip_th;
15378         u16 freq;
15379         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15380         u8 chg_nbclip_th = 0;
15381
15382         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15383         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15384
15385         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15386         if (currband == 0) {
15387
15388                 lna1_gain_db = lna1G_gain_db_rev7;
15389
15390                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15391                                          lna1_gain_db);
15392                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15393                                          lna1_gain_db);
15394
15395                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15396
15397                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15398                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15399                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15400                 }
15401
15402                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15403
15404                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15405                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15406                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15407                 }
15408         } else {
15409
15410                 init_gaincode = 0x9e;
15411                 clip1hi_gaincode = 0x9e;
15412                 clip1md_gaincode_B = 0x24;
15413                 clip1lo_gaincode = 0x8a;
15414                 clip1lo_gaincode_B = 8;
15415                 rfseq_init_gain = rfseqA_init_gain_rev7;
15416
15417                 tia_gain_db = tiaA_gain_db_rev7;
15418                 tia_gainbits = tiaA_gainbits_rev7;
15419
15420                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15421                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15422
15423                         w1clip_th = 25;
15424                         clip1md_gaincode = 0x82;
15425
15426                         if ((freq <= 5080) || (freq == 5825)) {
15427
15428                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15429                                 s8 lna1A_gain_db_2_rev7[] = {
15430                                         11, 17, 22, 25};
15431                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15432
15433                                 crsminu_th = 0x3e;
15434                                 lna1_gain_db = lna1A_gain_db_rev7;
15435                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15436                                 lna2_gain_db = lna2A_gain_db_rev7;
15437                         } else if ((freq >= 5500) && (freq <= 5700)) {
15438
15439                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15440                                 s8 lna1A_gain_db_2_rev7[] = {
15441                                         12, 18, 22, 26};
15442                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15443
15444                                 crsminu_th = 0x45;
15445                                 clip1md_gaincode_B = 0x14;
15446                                 nbclip_th = 0xff;
15447                                 chg_nbclip_th = 1;
15448                                 lna1_gain_db = lna1A_gain_db_rev7;
15449                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15450                                 lna2_gain_db = lna2A_gain_db_rev7;
15451                         } else {
15452
15453                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15454                                 s8 lna1A_gain_db_2_rev7[] = {
15455                                         12, 18, 22, 26};
15456                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15457
15458                                 crsminu_th = 0x41;
15459                                 lna1_gain_db = lna1A_gain_db_rev7;
15460                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15461                                 lna2_gain_db = lna2A_gain_db_rev7;
15462                         }
15463
15464                         if (freq <= 4920) {
15465                                 nvar_baseline_offset0 = 5;
15466                                 nvar_baseline_offset1 = 5;
15467                         } else if ((freq > 4920) && (freq <= 5320)) {
15468                                 nvar_baseline_offset0 = 3;
15469                                 nvar_baseline_offset1 = 5;
15470                         } else if ((freq > 5320) && (freq <= 5700)) {
15471                                 nvar_baseline_offset0 = 3;
15472                                 nvar_baseline_offset1 = 2;
15473                         } else {
15474                                 nvar_baseline_offset0 = 4;
15475                                 nvar_baseline_offset1 = 0;
15476                         }
15477                 } else {
15478
15479                         crsminu_th = 0x3a;
15480                         crsminl_th = 0x3a;
15481                         w1clip_th = 20;
15482
15483                         if ((freq >= 4920) && (freq <= 5320)) {
15484                                 nvar_baseline_offset0 = 4;
15485                                 nvar_baseline_offset1 = 5;
15486                         } else if ((freq > 5320) && (freq <= 5550)) {
15487                                 nvar_baseline_offset0 = 4;
15488                                 nvar_baseline_offset1 = 2;
15489                         } else {
15490                                 nvar_baseline_offset0 = 5;
15491                                 nvar_baseline_offset1 = 3;
15492                         }
15493                 }
15494
15495                 write_phy_reg(pi, 0x20, init_gaincode);
15496                 write_phy_reg(pi, 0x2a7, init_gaincode);
15497
15498                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15499                                          pi->pubpi.phy_corenum, 0x106, 16,
15500                                          rfseq_init_gain);
15501
15502                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15503                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15504
15505                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15506                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15507
15508                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15509                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15510                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15511                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15512
15513                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15514                                          tia_gain_db);
15515                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15516                                          tia_gain_db);
15517
15518                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15519                                          tia_gainbits);
15520                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15521                                          tia_gainbits);
15522
15523                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15524
15525                 if (chg_nbclip_th == 1) {
15526                         write_phy_reg(pi, 0x2b, nbclip_th);
15527                         write_phy_reg(pi, 0x41, nbclip_th);
15528                 }
15529
15530                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15531                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15532
15533                 mod_phy_reg(pi, 0x2e4,
15534                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15535
15536                 mod_phy_reg(pi, 0x2e4,
15537                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15538
15539                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15540
15541                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15542                                                  lna1_gain_db);
15543                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15544                                                  lna1_gain_db_2);
15545
15546                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15547                                                  8, lna2_gain_db);
15548                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15549                                                  8, lna2_gain_db);
15550
15551                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15552                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15553                 } else {
15554                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15555                 }
15556         }
15557 }
15558
15559 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15560 {
15561         u16 w1th, hpf_code, currband;
15562         int ctr;
15563         u8 rfseq_updategainu_events[] = {
15564                 NPHY_RFSEQ_CMD_RX_GAIN,
15565                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15566                 NPHY_RFSEQ_CMD_SET_HPF_BW
15567         };
15568         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15569         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15570         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15571         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15572         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15573         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15574         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15575         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15576         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15577         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15578         s8 *lna1_gain_db = NULL;
15579         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15580         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15581         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15582         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15583         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15584         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15585         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15586         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15587         s8 *lna2_gain_db = NULL;
15588         s8 tiaG_gain_db[] = {
15589                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15590         s8 tiaA_gain_db[] = {
15591                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15592         s8 tiaA_gain_db_rev4[] = {
15593                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15594         s8 tiaA_gain_db_rev5[] = {
15595                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15596         s8 tiaA_gain_db_rev6[] = {
15597                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15598         s8 *tia_gain_db;
15599         s8 tiaG_gainbits[] = {
15600                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15601         s8 tiaA_gainbits[] = {
15602                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15603         s8 tiaA_gainbits_rev4[] = {
15604                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15605         s8 tiaA_gainbits_rev5[] = {
15606                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15607         s8 tiaA_gainbits_rev6[] = {
15608                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15609         s8 *tia_gainbits;
15610         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15611         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15612         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15613         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15614         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15615         u16 rfseqG_init_gain_rev5_elna[] = {
15616                 0x013f, 0x013f, 0x013f, 0x013f };
15617         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15618         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15619         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15620         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15621         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15622         u16 rfseqA_init_gain_rev4_elna[] = {
15623                 0x314f, 0x314f, 0x314f, 0x314f };
15624         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15625         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15626         u16 *rfseq_init_gain;
15627         u16 initG_gaincode = 0x627e;
15628         u16 initG_gaincode_rev4 = 0x527e;
15629         u16 initG_gaincode_rev5 = 0x427e;
15630         u16 initG_gaincode_rev5_elna = 0x027e;
15631         u16 initG_gaincode_rev6 = 0x527e;
15632         u16 initG_gaincode_rev6_224B0 = 0x427e;
15633         u16 initG_gaincode_rev6_elna = 0x127e;
15634         u16 initA_gaincode = 0x52de;
15635         u16 initA_gaincode_rev4 = 0x629e;
15636         u16 initA_gaincode_rev4_elna = 0x329e;
15637         u16 initA_gaincode_rev5 = 0x729e;
15638         u16 initA_gaincode_rev6 = 0x729e;
15639         u16 init_gaincode;
15640         u16 clip1hiG_gaincode = 0x107e;
15641         u16 clip1hiG_gaincode_rev4 = 0x007e;
15642         u16 clip1hiG_gaincode_rev5 = 0x1076;
15643         u16 clip1hiG_gaincode_rev6 = 0x007e;
15644         u16 clip1hiA_gaincode = 0x00de;
15645         u16 clip1hiA_gaincode_rev4 = 0x029e;
15646         u16 clip1hiA_gaincode_rev5 = 0x029e;
15647         u16 clip1hiA_gaincode_rev6 = 0x029e;
15648         u16 clip1hi_gaincode;
15649         u16 clip1mdG_gaincode = 0x0066;
15650         u16 clip1mdA_gaincode = 0x00ca;
15651         u16 clip1mdA_gaincode_rev4 = 0x1084;
15652         u16 clip1mdA_gaincode_rev5 = 0x2084;
15653         u16 clip1mdA_gaincode_rev6 = 0x2084;
15654         u16 clip1md_gaincode = 0;
15655         u16 clip1loG_gaincode = 0x0074;
15656         u16 clip1loG_gaincode_rev5[] = {
15657                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15658         };
15659         u16 clip1loG_gaincode_rev6[] = {
15660                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15661         };
15662         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15663         u16 clip1loA_gaincode = 0x00cc;
15664         u16 clip1loA_gaincode_rev4 = 0x0086;
15665         u16 clip1loA_gaincode_rev5 = 0x2086;
15666         u16 clip1loA_gaincode_rev6 = 0x2086;
15667         u16 clip1lo_gaincode;
15668         u8 crsminG_th = 0x18;
15669         u8 crsminG_th_rev5 = 0x18;
15670         u8 crsminG_th_rev6 = 0x18;
15671         u8 crsminA_th = 0x1e;
15672         u8 crsminA_th_rev4 = 0x24;
15673         u8 crsminA_th_rev5 = 0x24;
15674         u8 crsminA_th_rev6 = 0x24;
15675         u8 crsmin_th;
15676         u8 crsminlG_th = 0x18;
15677         u8 crsminlG_th_rev5 = 0x18;
15678         u8 crsminlG_th_rev6 = 0x18;
15679         u8 crsminlA_th = 0x1e;
15680         u8 crsminlA_th_rev4 = 0x24;
15681         u8 crsminlA_th_rev5 = 0x24;
15682         u8 crsminlA_th_rev6 = 0x24;
15683         u8 crsminl_th = 0;
15684         u8 crsminuG_th = 0x18;
15685         u8 crsminuG_th_rev5 = 0x18;
15686         u8 crsminuG_th_rev6 = 0x18;
15687         u8 crsminuA_th = 0x1e;
15688         u8 crsminuA_th_rev4 = 0x24;
15689         u8 crsminuA_th_rev5 = 0x24;
15690         u8 crsminuA_th_rev6 = 0x24;
15691         u8 crsminuA_th_rev6_224B0 = 0x2d;
15692         u8 crsminu_th;
15693         u16 nbclipG_th = 0x20d;
15694         u16 nbclipG_th_rev4 = 0x1a1;
15695         u16 nbclipG_th_rev5 = 0x1d0;
15696         u16 nbclipG_th_rev6 = 0x1d0;
15697         u16 nbclipA_th = 0x1a1;
15698         u16 nbclipA_th_rev4 = 0x107;
15699         u16 nbclipA_th_rev5 = 0x0a9;
15700         u16 nbclipA_th_rev6 = 0x0f0;
15701         u16 nbclip_th = 0;
15702         u8 w1clipG_th = 5;
15703         u8 w1clipG_th_rev5 = 9;
15704         u8 w1clipG_th_rev6 = 5;
15705         u8 w1clipA_th = 25, w1clip_th;
15706         u8 rssi_gain_default = 0x50;
15707         u8 rssiG_gain_rev6_224B0 = 0x50;
15708         u8 rssiA_gain_rev5 = 0x90;
15709         u8 rssiA_gain_rev6 = 0x90;
15710         u8 rssi_gain;
15711         u16 regval[21];
15712         u8 triso;
15713
15714         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15715                 pi->srom_fem2g.triso;
15716
15717         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15718                 if (pi->pubpi.radiorev == 5) {
15719                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15720                 } else if (pi->pubpi.radiorev == 7) {
15721                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15722
15723                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15724                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15725
15726                 } else if ((pi->pubpi.radiorev == 3)
15727                            || (pi->pubpi.radiorev == 8)) {
15728                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15729
15730                         if (pi->pubpi.radiorev == 8) {
15731                                 mod_phy_reg(pi, 0x283,
15732                                             (0xff << 0), (0x44 << 0));
15733                                 mod_phy_reg(pi, 0x280,
15734                                             (0xff << 0), (0x44 << 0));
15735                         }
15736                 } else {
15737                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15738                 }
15739         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15740
15741                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15742
15743                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15744                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15745
15746                 currband =
15747                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15748                 if (currband == 0) {
15749                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15750                                 if (pi->pubpi.radiorev == 11) {
15751                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15752                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15753                                         rfseq_init_gain =
15754                                                 rfseqG_init_gain_rev6_224B0;
15755                                         init_gaincode =
15756                                                 initG_gaincode_rev6_224B0;
15757                                         clip1hi_gaincode =
15758                                                 clip1hiG_gaincode_rev6;
15759                                         clip1lo_gaincode =
15760                                                 clip1loG_gaincode_rev6_224B0;
15761                                         nbclip_th = nbclipG_th_rev6;
15762                                         w1clip_th = w1clipG_th_rev6;
15763                                         crsmin_th = crsminG_th_rev6;
15764                                         crsminl_th = crsminlG_th_rev6;
15765                                         crsminu_th = crsminuG_th_rev6;
15766                                         rssi_gain = rssiG_gain_rev6_224B0;
15767                                 } else {
15768                                         lna1_gain_db = lna1G_gain_db_rev6;
15769                                         lna2_gain_db = lna2G_gain_db_rev6;
15770                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15771
15772                                                 rfseq_init_gain =
15773                                                      rfseqG_init_gain_rev6_elna;
15774                                                 init_gaincode =
15775                                                        initG_gaincode_rev6_elna;
15776                                         } else {
15777                                                 rfseq_init_gain =
15778                                                         rfseqG_init_gain_rev6;
15779                                                 init_gaincode =
15780                                                         initG_gaincode_rev6;
15781                                         }
15782                                         clip1hi_gaincode =
15783                                                 clip1hiG_gaincode_rev6;
15784                                         switch (triso) {
15785                                         case 0:
15786                                                 clip1lo_gaincode =
15787                                                         clip1loG_gaincode_rev6
15788                                                         [0];
15789                                                 break;
15790                                         case 1:
15791                                                 clip1lo_gaincode =
15792                                                         clip1loG_gaincode_rev6
15793                                                         [1];
15794                                                 break;
15795                                         case 2:
15796                                                 clip1lo_gaincode =
15797                                                         clip1loG_gaincode_rev6
15798                                                         [2];
15799                                                 break;
15800                                         case 3:
15801                                         default:
15802
15803                                                 clip1lo_gaincode =
15804                                                         clip1loG_gaincode_rev6
15805                                                         [3];
15806                                                 break;
15807                                         case 4:
15808                                                 clip1lo_gaincode =
15809                                                         clip1loG_gaincode_rev6
15810                                                         [4];
15811                                                 break;
15812                                         case 5:
15813                                                 clip1lo_gaincode =
15814                                                         clip1loG_gaincode_rev6
15815                                                         [5];
15816                                                 break;
15817                                         case 6:
15818                                                 clip1lo_gaincode =
15819                                                         clip1loG_gaincode_rev6
15820                                                         [6];
15821                                                 break;
15822                                         case 7:
15823                                                 clip1lo_gaincode =
15824                                                         clip1loG_gaincode_rev6
15825                                                         [7];
15826                                                 break;
15827                                         }
15828                                         nbclip_th = nbclipG_th_rev6;
15829                                         w1clip_th = w1clipG_th_rev6;
15830                                         crsmin_th = crsminG_th_rev6;
15831                                         crsminl_th = crsminlG_th_rev6;
15832                                         crsminu_th = crsminuG_th_rev6;
15833                                         rssi_gain = rssi_gain_default;
15834                                 }
15835                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15836                                 lna1_gain_db = lna1G_gain_db_rev5;
15837                                 lna2_gain_db = lna2G_gain_db_rev5;
15838                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15839
15840                                         rfseq_init_gain =
15841                                                 rfseqG_init_gain_rev5_elna;
15842                                         init_gaincode =
15843                                                 initG_gaincode_rev5_elna;
15844                                 } else {
15845                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15846                                         init_gaincode = initG_gaincode_rev5;
15847                                 }
15848                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15849                                 switch (triso) {
15850                                 case 0:
15851                                         clip1lo_gaincode =
15852                                                 clip1loG_gaincode_rev5[0];
15853                                         break;
15854                                 case 1:
15855                                         clip1lo_gaincode =
15856                                                 clip1loG_gaincode_rev5[1];
15857                                         break;
15858                                 case 2:
15859                                         clip1lo_gaincode =
15860                                                 clip1loG_gaincode_rev5[2];
15861                                         break;
15862                                 case 3:
15863
15864                                         clip1lo_gaincode =
15865                                                 clip1loG_gaincode_rev5[3];
15866                                         break;
15867                                 case 4:
15868                                         clip1lo_gaincode =
15869                                                 clip1loG_gaincode_rev5[4];
15870                                         break;
15871                                 case 5:
15872                                         clip1lo_gaincode =
15873                                                 clip1loG_gaincode_rev5[5];
15874                                         break;
15875                                 case 6:
15876                                         clip1lo_gaincode =
15877                                                 clip1loG_gaincode_rev5[6];
15878                                         break;
15879                                 case 7:
15880                                         clip1lo_gaincode =
15881                                                 clip1loG_gaincode_rev5[7];
15882                                         break;
15883                                 default:
15884                                         clip1lo_gaincode =
15885                                                 clip1loG_gaincode_rev5[3];
15886                                         break;
15887                                 }
15888                                 nbclip_th = nbclipG_th_rev5;
15889                                 w1clip_th = w1clipG_th_rev5;
15890                                 crsmin_th = crsminG_th_rev5;
15891                                 crsminl_th = crsminlG_th_rev5;
15892                                 crsminu_th = crsminuG_th_rev5;
15893                                 rssi_gain = rssi_gain_default;
15894                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15895                                 lna1_gain_db = lna1G_gain_db_rev4;
15896                                 lna2_gain_db = lna2G_gain_db;
15897                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15898                                 init_gaincode = initG_gaincode_rev4;
15899                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15900                                 clip1lo_gaincode = clip1loG_gaincode;
15901                                 nbclip_th = nbclipG_th_rev4;
15902                                 w1clip_th = w1clipG_th;
15903                                 crsmin_th = crsminG_th;
15904                                 crsminl_th = crsminlG_th;
15905                                 crsminu_th = crsminuG_th;
15906                                 rssi_gain = rssi_gain_default;
15907                         } else {
15908                                 lna1_gain_db = lna1G_gain_db;
15909                                 lna2_gain_db = lna2G_gain_db;
15910                                 rfseq_init_gain = rfseqG_init_gain;
15911                                 init_gaincode = initG_gaincode;
15912                                 clip1hi_gaincode = clip1hiG_gaincode;
15913                                 clip1lo_gaincode = clip1loG_gaincode;
15914                                 nbclip_th = nbclipG_th;
15915                                 w1clip_th = w1clipG_th;
15916                                 crsmin_th = crsminG_th;
15917                                 crsminl_th = crsminlG_th;
15918                                 crsminu_th = crsminuG_th;
15919                                 rssi_gain = rssi_gain_default;
15920                         }
15921                         tia_gain_db = tiaG_gain_db;
15922                         tia_gainbits = tiaG_gainbits;
15923                         clip1md_gaincode = clip1mdG_gaincode;
15924                 } else {
15925                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15926                                 lna1_gain_db = lna1A_gain_db_rev6;
15927                                 lna2_gain_db = lna2A_gain_db_rev6;
15928                                 tia_gain_db = tiaA_gain_db_rev6;
15929                                 tia_gainbits = tiaA_gainbits_rev6;
15930                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15931                                 init_gaincode = initA_gaincode_rev6;
15932                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15933                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15934                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15935                                 crsmin_th = crsminA_th_rev6;
15936                                 crsminl_th = crsminlA_th_rev6;
15937                                 if ((pi->pubpi.radiorev == 11) &&
15938                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15939                                         crsminu_th = crsminuA_th_rev6_224B0;
15940                                 else
15941                                         crsminu_th = crsminuA_th_rev6;
15942
15943                                 nbclip_th = nbclipA_th_rev6;
15944                                 rssi_gain = rssiA_gain_rev6;
15945                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15946                                 lna1_gain_db = lna1A_gain_db_rev5;
15947                                 lna2_gain_db = lna2A_gain_db_rev5;
15948                                 tia_gain_db = tiaA_gain_db_rev5;
15949                                 tia_gainbits = tiaA_gainbits_rev5;
15950                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15951                                 init_gaincode = initA_gaincode_rev5;
15952                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15953                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15954                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15955                                 crsmin_th = crsminA_th_rev5;
15956                                 crsminl_th = crsminlA_th_rev5;
15957                                 crsminu_th = crsminuA_th_rev5;
15958                                 nbclip_th = nbclipA_th_rev5;
15959                                 rssi_gain = rssiA_gain_rev5;
15960                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15961                                 lna1_gain_db = lna1A_gain_db_rev4;
15962                                 lna2_gain_db = lna2A_gain_db_rev4;
15963                                 tia_gain_db = tiaA_gain_db_rev4;
15964                                 tia_gainbits = tiaA_gainbits_rev4;
15965                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15966
15967                                         rfseq_init_gain =
15968                                                 rfseqA_init_gain_rev4_elna;
15969                                         init_gaincode =
15970                                                 initA_gaincode_rev4_elna;
15971                                 } else {
15972                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15973                                         init_gaincode = initA_gaincode_rev4;
15974                                 }
15975                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15976                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15977                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15978                                 crsmin_th = crsminA_th_rev4;
15979                                 crsminl_th = crsminlA_th_rev4;
15980                                 crsminu_th = crsminuA_th_rev4;
15981                                 nbclip_th = nbclipA_th_rev4;
15982                                 rssi_gain = rssi_gain_default;
15983                         } else {
15984                                 lna1_gain_db = lna1A_gain_db;
15985                                 lna2_gain_db = lna2A_gain_db;
15986                                 tia_gain_db = tiaA_gain_db;
15987                                 tia_gainbits = tiaA_gainbits;
15988                                 rfseq_init_gain = rfseqA_init_gain;
15989                                 init_gaincode = initA_gaincode;
15990                                 clip1hi_gaincode = clip1hiA_gaincode;
15991                                 clip1md_gaincode = clip1mdA_gaincode;
15992                                 clip1lo_gaincode = clip1loA_gaincode;
15993                                 crsmin_th = crsminA_th;
15994                                 crsminl_th = crsminlA_th;
15995                                 crsminu_th = crsminuA_th;
15996                                 nbclip_th = nbclipA_th;
15997                                 rssi_gain = rssi_gain_default;
15998                         }
15999                         w1clip_th = w1clipA_th;
16000                 }
16001
16002                 write_radio_reg(pi,
16003                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16004                                  RADIO_2056_RX0), 0x17);
16005                 write_radio_reg(pi,
16006                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16007                                  RADIO_2056_RX1), 0x17);
16008
16009                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16010                                 0xf0);
16011                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16012                                 0xf0);
16013
16014                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16015                                 0x0);
16016                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16017                                 0x0);
16018
16019                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16020                                 rssi_gain);
16021                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16022                                 rssi_gain);
16023
16024                 write_radio_reg(pi,
16025                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16026                                  RADIO_2056_RX0), 0x17);
16027                 write_radio_reg(pi,
16028                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16029                                  RADIO_2056_RX1), 0x17);
16030
16031                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16032                                 0xFF);
16033                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16034                                 0xFF);
16035
16036                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16037                                          8, lna1_gain_db);
16038                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16039                                          8, lna1_gain_db);
16040
16041                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16042                                          8, lna2_gain_db);
16043                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16044                                          8, lna2_gain_db);
16045
16046                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16047                                          8, tia_gain_db);
16048                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16049                                          8, tia_gain_db);
16050
16051                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16052                                          8, tia_gainbits);
16053                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16054                                          8, tia_gainbits);
16055
16056                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16057                                          8, &lpf_gain_db);
16058                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16059                                          8, &lpf_gain_db);
16060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16061                                          8, &lpf_gainbits);
16062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16063                                          8, &lpf_gainbits);
16064
16065                 write_phy_reg(pi, 0x20, init_gaincode);
16066                 write_phy_reg(pi, 0x2a7, init_gaincode);
16067
16068                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16069                                          pi->pubpi.phy_corenum, 0x106, 16,
16070                                          rfseq_init_gain);
16071
16072                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16073                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16074
16075                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16076                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16077
16078                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16079                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16080
16081                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16082                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16083                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16084
16085                 write_phy_reg(pi, 0x2b, nbclip_th);
16086                 write_phy_reg(pi, 0x41, nbclip_th);
16087
16088                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16089                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16090
16091                 write_phy_reg(pi, 0x150, 0x809c);
16092
16093         } else {
16094
16095                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16096                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16097
16098                 write_phy_reg(pi, 0x2b, 0x84);
16099                 write_phy_reg(pi, 0x41, 0x84);
16100
16101                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16102                         write_phy_reg(pi, 0x6b, 0x2b);
16103                         write_phy_reg(pi, 0x6c, 0x2b);
16104                         write_phy_reg(pi, 0x6d, 0x9);
16105                         write_phy_reg(pi, 0x6e, 0x9);
16106                 }
16107
16108                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16109                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16110                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16111
16112                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16113                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16114                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16115
16116                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16117                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16118                 }
16119
16120                 write_phy_reg(pi, 0x150, 0x809c);
16121
16122                 if (pi->nphy_gain_boost)
16123                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16124                             (CHSPEC_IS40(pi->radio_chanspec)))
16125                                 hpf_code = 4;
16126                         else
16127                                 hpf_code = 5;
16128                 else if (CHSPEC_IS40(pi->radio_chanspec))
16129                         hpf_code = 6;
16130                 else
16131                         hpf_code = 7;
16132
16133                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16134                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16135
16136                 for (ctr = 0; ctr < 4; ctr++)
16137                         regval[ctr] = (hpf_code << 8) | 0x7c;
16138                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16139
16140                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16141
16142                 if (pi->nphy_elna_gain_config) {
16143                         regval[0] = 0;
16144                         regval[1] = 1;
16145                         regval[2] = 1;
16146                         regval[3] = 1;
16147                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16148                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16149
16150                         for (ctr = 0; ctr < 4; ctr++)
16151                                 regval[ctr] = (hpf_code << 8) | 0x74;
16152                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16153                 }
16154
16155                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16156                         for (ctr = 0; ctr < 21; ctr++)
16157                                 regval[ctr] = 3 * ctr;
16158                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16159                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16160
16161                         for (ctr = 0; ctr < 21; ctr++)
16162                                 regval[ctr] = (u16) ctr;
16163                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16164                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16165                 }
16166
16167                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16168                                        rfseq_updategainu_events,
16169                                        rfseq_updategainu_dlys,
16170                                        sizeof(rfseq_updategainu_events) /
16171                                        sizeof(rfseq_updategainu_events[0]));
16172
16173                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16174
16175                 if (CHSPEC_IS2G(pi->radio_chanspec))
16176                         mod_phy_reg(pi,
16177                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16178                                     0x7f, 0x4);
16179         }
16180 }
16181
16182 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16183 {
16184         u8 rfseq_rx2tx_events[] = {
16185                 NPHY_RFSEQ_CMD_NOP,
16186                 NPHY_RFSEQ_CMD_RXG_FBW,
16187                 NPHY_RFSEQ_CMD_TR_SWITCH,
16188                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16189                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16190                 NPHY_RFSEQ_CMD_TX_GAIN,
16191                 NPHY_RFSEQ_CMD_EXT_PA
16192         };
16193         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16194         u8 rfseq_tx2rx_events[] = {
16195                 NPHY_RFSEQ_CMD_NOP,
16196                 NPHY_RFSEQ_CMD_EXT_PA,
16197                 NPHY_RFSEQ_CMD_TX_GAIN,
16198                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16199                 NPHY_RFSEQ_CMD_TR_SWITCH,
16200                 NPHY_RFSEQ_CMD_RXG_FBW,
16201                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16202         };
16203         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16204         u8 rfseq_tx2rx_events_rev3[] = {
16205                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16206                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16207                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16208                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16209                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16210                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16211                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16212                 NPHY_REV3_RFSEQ_CMD_END
16213         };
16214         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16215         u8 rfseq_rx2tx_events_rev3[] = {
16216                 NPHY_REV3_RFSEQ_CMD_NOP,
16217                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16218                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16219                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16220                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16221                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16222                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16223                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16224                 NPHY_REV3_RFSEQ_CMD_END
16225         };
16226         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16227
16228         u8 rfseq_rx2tx_events_rev3_ipa[] = {
16229                 NPHY_REV3_RFSEQ_CMD_NOP,
16230                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16231                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16232                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16233                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16234                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16235                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16236                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16237                 NPHY_REV3_RFSEQ_CMD_END
16238         };
16239         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16240         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16241
16242         s16 alpha0, alpha1, alpha2;
16243         s16 beta0, beta1, beta2;
16244         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16245             stbc_data_weights;
16246         u8 chan_freq_range = 0;
16247         u16 dac_control = 0x0002;
16248         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16249         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16250         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16251         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16252         u16 *aux_adc_vmid;
16253         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16254         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16255         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16256         u16 *aux_adc_gain;
16257         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16258         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16259         s32 min_nvar_val = 0x18d;
16260         s32 min_nvar_offset_6mbps = 20;
16261         u8 pdetrange;
16262         u8 triso;
16263         u16 regval;
16264         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16265         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16266         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16267         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16268         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16269         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16270         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16271         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16272         u16 ipalvlshift_3p3_war_en = 0;
16273         u16 rccal_bcap_val, rccal_scap_val;
16274         u16 rccal_tx20_11b_bcap = 0;
16275         u16 rccal_tx20_11b_scap = 0;
16276         u16 rccal_tx20_11n_bcap = 0;
16277         u16 rccal_tx20_11n_scap = 0;
16278         u16 rccal_tx40_11n_bcap = 0;
16279         u16 rccal_tx40_11n_scap = 0;
16280         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16281         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16282         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16283         u16 tx_lpf_bw_ofdm_20mhz = 0;
16284         u16 tx_lpf_bw_ofdm_40mhz = 0;
16285         u16 tx_lpf_bw_11b = 0;
16286         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16287         u16 txgm_idac_bleed = 0;
16288         bool rccal_ovrd = false;
16289         u16 freq;
16290         int coreNum;
16291
16292         if (CHSPEC_IS5G(pi->radio_chanspec))
16293                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16294         else
16295                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16296
16297         if (pi->phyhang_avoid)
16298                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16299
16300         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16301
16302         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16303
16304                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16305                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16306
16307                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16308                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16309                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16310                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16311                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16312                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16313                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16314                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16315                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16316                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16317                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16318                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16319                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16320                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16321                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16322                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16323                 }
16324
16325                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16326                         write_phy_reg(pi, 0x23f, 0x1b0);
16327                         write_phy_reg(pi, 0x240, 0x1b0);
16328                 }
16329
16330                 if (NREV_GE(pi->pubpi.phy_rev, 8))
16331                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16332
16333                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16334                                          &dac_control);
16335                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16336                                          &dac_control);
16337
16338                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16339                                         1, 0, 32, &leg_data_weights);
16340                 leg_data_weights = leg_data_weights & 0xffffff;
16341                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16342                                          1, 0, 32, &leg_data_weights);
16343
16344                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16345                                          2, 0x15e, 16,
16346                                          rfseq_rx2tx_dacbufpu_rev7);
16347                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16348                                          rfseq_rx2tx_dacbufpu_rev7);
16349
16350                 if (PHY_IPA(pi))
16351                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16352                                                rfseq_rx2tx_events_rev3_ipa,
16353                                                rfseq_rx2tx_dlys_rev3_ipa,
16354                                                sizeof
16355                                                (rfseq_rx2tx_events_rev3_ipa) /
16356                                                sizeof
16357                                                (rfseq_rx2tx_events_rev3_ipa
16358                                                 [0]));
16359
16360                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16361                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16362
16363                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16364                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16365                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16366
16367                 if (PHY_IPA(pi)) {
16368
16369                         if (((pi->pubpi.radiorev == 5)
16370                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16371                             || (pi->pubpi.radiorev == 7)
16372                             || (pi->pubpi.radiorev == 8)) {
16373
16374                                 rccal_bcap_val =
16375                                         read_radio_reg(
16376                                                 pi,
16377                                                 RADIO_2057_RCCAL_BCAP_VAL);
16378                                 rccal_scap_val =
16379                                         read_radio_reg(
16380                                                 pi,
16381                                                 RADIO_2057_RCCAL_SCAP_VAL);
16382
16383                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16384                                 rccal_tx20_11b_scap = rccal_scap_val;
16385
16386                                 if ((pi->pubpi.radiorev == 5) &&
16387                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16388
16389                                         rccal_tx20_11n_bcap = rccal_bcap_val;
16390                                         rccal_tx20_11n_scap = rccal_scap_val;
16391                                         rccal_tx40_11n_bcap = 0xc;
16392                                         rccal_tx40_11n_scap = 0xc;
16393
16394                                         rccal_ovrd = true;
16395
16396                                 } else if ((pi->pubpi.radiorev == 7)
16397                                            || (pi->pubpi.radiorev == 8)) {
16398
16399                                         tx_lpf_bw_ofdm_20mhz = 4;
16400                                         tx_lpf_bw_11b = 1;
16401
16402                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16403                                                 rccal_tx20_11n_bcap = 0xc;
16404                                                 rccal_tx20_11n_scap = 0xc;
16405                                                 rccal_tx40_11n_bcap = 0xa;
16406                                                 rccal_tx40_11n_scap = 0xa;
16407                                         } else {
16408                                                 rccal_tx20_11n_bcap = 0x14;
16409                                                 rccal_tx20_11n_scap = 0x14;
16410                                                 rccal_tx40_11n_bcap = 0xf;
16411                                                 rccal_tx40_11n_scap = 0xf;
16412                                         }
16413
16414                                         rccal_ovrd = true;
16415                                 }
16416                         }
16417
16418                 } else {
16419
16420                         if (pi->pubpi.radiorev == 5) {
16421
16422                                 tx_lpf_bw_ofdm_20mhz = 1;
16423                                 tx_lpf_bw_ofdm_40mhz = 3;
16424
16425                                 rccal_bcap_val =
16426                                         read_radio_reg(
16427                                                 pi,
16428                                                 RADIO_2057_RCCAL_BCAP_VAL);
16429                                 rccal_scap_val =
16430                                         read_radio_reg(
16431                                                 pi,
16432                                                 RADIO_2057_RCCAL_SCAP_VAL);
16433
16434                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16435                                 rccal_tx20_11b_scap = rccal_scap_val;
16436
16437                                 rccal_tx20_11n_bcap = 0x13;
16438                                 rccal_tx20_11n_scap = 0x11;
16439                                 rccal_tx40_11n_bcap = 0x13;
16440                                 rccal_tx40_11n_scap = 0x11;
16441
16442                                 rccal_ovrd = true;
16443                         }
16444                 }
16445
16446                 if (rccal_ovrd) {
16447
16448                         rx2tx_lpf_rc_lut_tx20_11b =
16449                                 (rccal_tx20_11b_bcap << 8) |
16450                                 (rccal_tx20_11b_scap << 3) |
16451                                 tx_lpf_bw_11b;
16452                         rx2tx_lpf_rc_lut_tx20_11n =
16453                                 (rccal_tx20_11n_bcap << 8) |
16454                                 (rccal_tx20_11n_scap << 3) |
16455                                 tx_lpf_bw_ofdm_20mhz;
16456                         rx2tx_lpf_rc_lut_tx40_11n =
16457                                 (rccal_tx40_11n_bcap << 8) |
16458                                 (rccal_tx40_11n_scap << 3) |
16459                                 tx_lpf_bw_ofdm_40mhz;
16460
16461                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16462                                 wlc_phy_table_write_nphy(
16463                                         pi, NPHY_TBL_ID_RFSEQ,
16464                                         1,
16465                                         0x152 + coreNum * 0x10,
16466                                         16,
16467                                         &rx2tx_lpf_rc_lut_tx20_11b);
16468                                 wlc_phy_table_write_nphy(
16469                                         pi, NPHY_TBL_ID_RFSEQ,
16470                                         1,
16471                                         0x153 + coreNum * 0x10,
16472                                         16,
16473                                         &rx2tx_lpf_rc_lut_tx20_11n);
16474                                 wlc_phy_table_write_nphy(
16475                                         pi, NPHY_TBL_ID_RFSEQ,
16476                                         1,
16477                                         0x154 + coreNum * 0x10,
16478                                         16,
16479                                         &rx2tx_lpf_rc_lut_tx20_11n);
16480                                 wlc_phy_table_write_nphy(
16481                                         pi, NPHY_TBL_ID_RFSEQ,
16482                                         1,
16483                                         0x155 + coreNum * 0x10,
16484                                         16,
16485                                         &rx2tx_lpf_rc_lut_tx40_11n);
16486                                 wlc_phy_table_write_nphy(
16487                                         pi, NPHY_TBL_ID_RFSEQ,
16488                                         1,
16489                                         0x156 + coreNum * 0x10,
16490                                         16,
16491                                         &rx2tx_lpf_rc_lut_tx40_11n);
16492                                 wlc_phy_table_write_nphy(
16493                                         pi, NPHY_TBL_ID_RFSEQ,
16494                                         1,
16495                                         0x157 + coreNum * 0x10,
16496                                         16,
16497                                         &rx2tx_lpf_rc_lut_tx40_11n);
16498                                 wlc_phy_table_write_nphy(
16499                                         pi, NPHY_TBL_ID_RFSEQ,
16500                                         1,
16501                                         0x158 + coreNum * 0x10,
16502                                         16,
16503                                         &rx2tx_lpf_rc_lut_tx40_11n);
16504                                 wlc_phy_table_write_nphy(
16505                                         pi, NPHY_TBL_ID_RFSEQ,
16506                                         1,
16507                                         0x159 + coreNum * 0x10,
16508                                         16,
16509                                         &rx2tx_lpf_rc_lut_tx40_11n);
16510                         }
16511
16512                         wlc_phy_rfctrl_override_nphy_rev7(
16513                                 pi, (0x1 << 4),
16514                                 1, 0x3, 0,
16515                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16516                 }
16517
16518                 write_phy_reg(pi, 0x32f, 0x3);
16519
16520                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16521                         wlc_phy_rfctrl_override_nphy_rev7(
16522                                 pi, (0x1 << 2),
16523                                 1, 0x3, 0,
16524                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16525
16526                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16527                     (pi->pubpi.radiorev == 6)) {
16528                         if ((pi->sh->sromrev >= 8)
16529                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16530                                 ipalvlshift_3p3_war_en = 1;
16531
16532                         if (ipalvlshift_3p3_war_en) {
16533                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16534                                                 0x5);
16535                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16536                                                 0x30);
16537                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16538                                 or_radio_reg(pi,
16539                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16540                                              0x1);
16541                                 or_radio_reg(pi,
16542                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16543                                              0x1);
16544
16545                                 ipa2g_mainbias = 0x1f;
16546
16547                                 ipa2g_casconv = 0x6f;
16548
16549                                 ipa2g_biasfilt = 0xaa;
16550                         } else {
16551
16552                                 ipa2g_mainbias = 0x2b;
16553
16554                                 ipa2g_casconv = 0x7f;
16555
16556                                 ipa2g_biasfilt = 0xee;
16557                         }
16558
16559                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16560                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16561                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16562                                                          coreNum, IPA2G_IMAIN,
16563                                                          ipa2g_mainbias);
16564                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16565                                                          coreNum, IPA2G_CASCONV,
16566                                                          ipa2g_casconv);
16567                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16568                                                          coreNum,
16569                                                          IPA2G_BIAS_FILTER,
16570                                                          ipa2g_biasfilt);
16571                                 }
16572                         }
16573                 }
16574
16575                 if (PHY_IPA(pi)) {
16576                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16577                                 if ((pi->pubpi.radiorev == 3)
16578                                     || (pi->pubpi.radiorev == 4)
16579                                     || (pi->pubpi.radiorev == 6))
16580                                         txgm_idac_bleed = 0x7f;
16581
16582                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16583                                         if (txgm_idac_bleed != 0)
16584                                                 WRITE_RADIO_REG4(
16585                                                         pi, RADIO_2057,
16586                                                         CORE, coreNum,
16587                                                         TXGM_IDAC_BLEED,
16588                                                         txgm_idac_bleed);
16589                                 }
16590
16591                                 if (pi->pubpi.radiorev == 5) {
16592
16593                                         for (coreNum = 0; coreNum <= 1;
16594                                              coreNum++) {
16595                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16596                                                                  CORE, coreNum,
16597                                                                  IPA2G_CASCONV,
16598                                                                  0x13);
16599                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16600                                                                  CORE, coreNum,
16601                                                                  IPA2G_IMAIN,
16602                                                                  0x1f);
16603                                                 WRITE_RADIO_REG4(
16604                                                         pi, RADIO_2057,
16605                                                         CORE, coreNum,
16606                                                         IPA2G_BIAS_FILTER,
16607                                                         0xee);
16608                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16609                                                                  CORE, coreNum,
16610                                                                  PAD2G_IDACS,
16611                                                                  0x8a);
16612                                                 WRITE_RADIO_REG4(
16613                                                         pi, RADIO_2057,
16614                                                         CORE, coreNum,
16615                                                         PAD_BIAS_FILTER_BWS,
16616                                                         0x3e);
16617                                         }
16618
16619                                 } else if ((pi->pubpi.radiorev == 7)
16620                                            || (pi->pubpi.radiorev == 8)) {
16621
16622                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
16623                                             0) {
16624                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16625                                                                  CORE, 0,
16626                                                                  IPA2G_IMAIN,
16627                                                                  0x14);
16628                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16629                                                                  CORE, 1,
16630                                                                  IPA2G_IMAIN,
16631                                                                  0x12);
16632                                         } else {
16633                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16634                                                                  CORE, 0,
16635                                                                  IPA2G_IMAIN,
16636                                                                  0x16);
16637                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16638                                                                  CORE, 1,
16639                                                                  IPA2G_IMAIN,
16640                                                                  0x16);
16641                                         }
16642                                 }
16643
16644                         } else {
16645                                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16646                                                         pi->radio_chanspec));
16647                                 if (((freq >= 5180) && (freq <= 5230))
16648                                     || ((freq >= 5745) && (freq <= 5805))) {
16649                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16650                                                          0, IPA5G_BIAS_FILTER,
16651                                                          0xff);
16652                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16653                                                          1, IPA5G_BIAS_FILTER,
16654                                                          0xff);
16655                                 }
16656                         }
16657                 } else {
16658
16659                         if (pi->pubpi.radiorev != 5) {
16660                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16661                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16662                                                          coreNum,
16663                                                          TXMIX2G_TUNE_BOOST_PU,
16664                                                          0x61);
16665                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16666                                                          coreNum,
16667                                                          TXGM_IDAC_BLEED, 0x70);
16668                                 }
16669                         }
16670                 }
16671
16672                 if (pi->pubpi.radiorev == 4) {
16673                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16674                                                  0x05, 16,
16675                                                  &afectrl_adc_ctrl1_rev7);
16676                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16677                                                  0x15, 16,
16678                                                  &afectrl_adc_ctrl1_rev7);
16679
16680                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16681                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16682                                                  AFE_VCM_CAL_MASTER, 0x0);
16683                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16684                                                  AFE_SET_VCM_I, 0x3f);
16685                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16686                                                  AFE_SET_VCM_Q, 0x3f);
16687                         }
16688                 } else {
16689                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16690                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16691                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16692                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16693
16694                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16695                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16696                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16697                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16698
16699                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16700                                                  0x05, 16,
16701                                                  &afectrl_adc_ctrl2_rev7);
16702                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16703                                                  0x15, 16,
16704                                                  &afectrl_adc_ctrl2_rev7);
16705
16706                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16707                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16708                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16709                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16710                 }
16711
16712                 write_phy_reg(pi, 0x6a, 0x2);
16713
16714                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16715                                          &min_nvar_offset_6mbps);
16716
16717                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16718                                          &rfseq_pktgn_lpf_hpc_rev7);
16719
16720                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16721                                          &rfseq_pktgn_lpf_h_hpc_rev7);
16722
16723                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16724                                          &rfseq_htpktgn_lpf_hpc_rev7);
16725
16726                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16727                                          &rfseq_cckpktgn_lpf_hpc_rev7);
16728
16729                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16730                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
16731
16732                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16733                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
16734
16735                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16736                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16737                                                  32, &min_nvar_val);
16738                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16739                                                  127, 32, &min_nvar_val);
16740                 } else {
16741                         min_nvar_val = noise_var_tbl_rev7[3];
16742                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16743                                                  32, &min_nvar_val);
16744
16745                         min_nvar_val = noise_var_tbl_rev7[127];
16746                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16747                                                  127, 32, &min_nvar_val);
16748                 }
16749
16750                 wlc_phy_workarounds_nphy_gainctrl(pi);
16751
16752                 pdetrange =
16753                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16754                         pdetrange : pi->srom_fem2g.pdetrange;
16755
16756                 if (pdetrange == 0) {
16757                         chan_freq_range =
16758                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16759                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16760                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16761                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16762                                 aux_adc_gain_rev7[3] = 2;
16763                         } else {
16764                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16765                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16766                                 aux_adc_gain_rev7[3] = 3;
16767                         }
16768                 } else if (pdetrange == 1) {
16769                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16770                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
16771                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
16772                                 aux_adc_gain_rev7[3] = 2;
16773                         } else {
16774                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
16775                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
16776                                 aux_adc_gain_rev7[3] = 1;
16777                         }
16778                 } else if (pdetrange == 2) {
16779                         if (pi->pubpi.radioid == BCM2057_ID) {
16780                                 if ((pi->pubpi.radiorev == 5)
16781                                     || (pi->pubpi.radiorev == 7)
16782                                     || (pi->pubpi.radiorev == 8)) {
16783                                         if (chan_freq_range ==
16784                                             WL_CHAN_FREQ_RANGE_2G) {
16785                                                 aux_adc_vmid_rev7_core0[3] =
16786                                                         0x8c;
16787                                                 aux_adc_vmid_rev7_core1[3] =
16788                                                         0x8c;
16789                                                 aux_adc_gain_rev7[3] = 0;
16790                                         } else {
16791                                                 aux_adc_vmid_rev7_core0[3] =
16792                                                         0x96;
16793                                                 aux_adc_vmid_rev7_core1[3] =
16794                                                         0x96;
16795                                                 aux_adc_gain_rev7[3] = 0;
16796                                         }
16797                                 }
16798                         }
16799
16800                 } else if (pdetrange == 3) {
16801                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16802                                 aux_adc_vmid_rev7_core0[3] = 0x89;
16803                                 aux_adc_vmid_rev7_core1[3] = 0x89;
16804                                 aux_adc_gain_rev7[3] = 0;
16805                         }
16806
16807                 } else if (pdetrange == 5) {
16808
16809                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16810                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16811                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16812                                 aux_adc_gain_rev7[3] = 3;
16813                         } else {
16814                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16815                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16816                                 aux_adc_gain_rev7[3] = 2;
16817                         }
16818                 }
16819
16820                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16821                                          &aux_adc_vmid_rev7_core0);
16822                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16823                                          &aux_adc_vmid_rev7_core1);
16824                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16825                                          &aux_adc_gain_rev7);
16826                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16827                                          &aux_adc_gain_rev7);
16828
16829         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16830
16831                 write_phy_reg(pi, 0x23f, 0x1f8);
16832                 write_phy_reg(pi, 0x240, 0x1f8);
16833
16834                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16835                                         1, 0, 32, &leg_data_weights);
16836                 leg_data_weights = leg_data_weights & 0xffffff;
16837                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16838                                          1, 0, 32, &leg_data_weights);
16839
16840                 alpha0 = 293;
16841                 alpha1 = 435;
16842                 alpha2 = 261;
16843                 beta0 = 366;
16844                 beta1 = 205;
16845                 beta2 = 32;
16846                 write_phy_reg(pi, 0x145, alpha0);
16847                 write_phy_reg(pi, 0x146, alpha1);
16848                 write_phy_reg(pi, 0x147, alpha2);
16849                 write_phy_reg(pi, 0x148, beta0);
16850                 write_phy_reg(pi, 0x149, beta1);
16851                 write_phy_reg(pi, 0x14a, beta2);
16852
16853                 write_phy_reg(pi, 0x38, 0xC);
16854                 write_phy_reg(pi, 0x2ae, 0xC);
16855
16856                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16857                                        rfseq_tx2rx_events_rev3,
16858                                        rfseq_tx2rx_dlys_rev3,
16859                                        sizeof(rfseq_tx2rx_events_rev3) /
16860                                        sizeof(rfseq_tx2rx_events_rev3[0]));
16861
16862                 if (PHY_IPA(pi))
16863                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16864                                                rfseq_rx2tx_events_rev3_ipa,
16865                                                rfseq_rx2tx_dlys_rev3_ipa,
16866                                                sizeof
16867                                                (rfseq_rx2tx_events_rev3_ipa) /
16868                                                sizeof
16869                                                (rfseq_rx2tx_events_rev3_ipa
16870                                                 [0]));
16871
16872                 if ((pi->sh->hw_phyrxchain != 0x3) &&
16873                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16874
16875                         if (PHY_IPA(pi)) {
16876                                 rfseq_rx2tx_dlys_rev3[5] = 59;
16877                                 rfseq_rx2tx_dlys_rev3[6] = 1;
16878                                 rfseq_rx2tx_events_rev3[7] =
16879                                         NPHY_REV3_RFSEQ_CMD_END;
16880                         }
16881
16882                         wlc_phy_set_rfseq_nphy(
16883                                 pi, NPHY_RFSEQ_RX2TX,
16884                                 rfseq_rx2tx_events_rev3,
16885                                 rfseq_rx2tx_dlys_rev3,
16886                                 sizeof(rfseq_rx2tx_events_rev3) /
16887                                 sizeof(rfseq_rx2tx_events_rev3[0]));
16888                 }
16889
16890                 if (CHSPEC_IS2G(pi->radio_chanspec))
16891                         write_phy_reg(pi, 0x6a, 0x2);
16892                 else
16893                         write_phy_reg(pi, 0x6a, 0x9c40);
16894
16895                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16896
16897                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16898                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16899                                                  32, &min_nvar_val);
16900                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16901                                                  127, 32, &min_nvar_val);
16902                 } else {
16903                         min_nvar_val = noise_var_tbl_rev3[3];
16904                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16905                                                  32, &min_nvar_val);
16906
16907                         min_nvar_val = noise_var_tbl_rev3[127];
16908                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16909                                                  127, 32, &min_nvar_val);
16910                 }
16911
16912                 wlc_phy_workarounds_nphy_gainctrl(pi);
16913
16914                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16915                                          &dac_control);
16916                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16917                                          &dac_control);
16918
16919                 pdetrange =
16920                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16921                         pdetrange : pi->srom_fem2g.pdetrange;
16922
16923                 if (pdetrange == 0) {
16924                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16925                                 aux_adc_vmid = aux_adc_vmid_rev4;
16926                                 aux_adc_gain = aux_adc_gain_rev4;
16927                         } else {
16928                                 aux_adc_vmid = aux_adc_vmid_rev3;
16929                                 aux_adc_gain = aux_adc_gain_rev3;
16930                         }
16931                         chan_freq_range =
16932                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16933                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16934                                 switch (chan_freq_range) {
16935                                 case WL_CHAN_FREQ_RANGE_5GL:
16936                                         aux_adc_vmid[3] = 0x89;
16937                                         aux_adc_gain[3] = 0;
16938                                         break;
16939                                 case WL_CHAN_FREQ_RANGE_5GM:
16940                                         aux_adc_vmid[3] = 0x89;
16941                                         aux_adc_gain[3] = 0;
16942                                         break;
16943                                 case WL_CHAN_FREQ_RANGE_5GH:
16944                                         aux_adc_vmid[3] = 0x89;
16945                                         aux_adc_gain[3] = 0;
16946                                         break;
16947                                 default:
16948                                         break;
16949                                 }
16950                         }
16951                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16952                                                  0x08, 16, aux_adc_vmid);
16953                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16954                                                  0x18, 16, aux_adc_vmid);
16955                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16956                                                  0x0c, 16, aux_adc_gain);
16957                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16958                                                  0x1c, 16, aux_adc_gain);
16959                 } else if (pdetrange == 1) {
16960                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16961                                                  0x08, 16, sk_adc_vmid);
16962                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16963                                                  0x18, 16, sk_adc_vmid);
16964                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16965                                                  0x0c, 16, sk_adc_gain);
16966                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16967                                                  0x1c, 16, sk_adc_gain);
16968                 } else if (pdetrange == 2) {
16969
16970                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16971                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16972
16973                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16974                                 chan_freq_range =
16975                                         wlc_phy_get_chan_freq_range_nphy(pi, 0);
16976                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16977                                         bcm_adc_vmid[3] = 0x8e;
16978                                         bcm_adc_gain[3] = 0x03;
16979                                 } else {
16980                                         bcm_adc_vmid[3] = 0x94;
16981                                         bcm_adc_gain[3] = 0x03;
16982                                 }
16983                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16984                                 bcm_adc_vmid[3] = 0x84;
16985                                 bcm_adc_gain[3] = 0x02;
16986                         }
16987
16988                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16989                                                  0x08, 16, bcm_adc_vmid);
16990                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16991                                                  0x18, 16, bcm_adc_vmid);
16992                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16993                                                  0x0c, 16, bcm_adc_gain);
16994                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16995                                                  0x1c, 16, bcm_adc_gain);
16996                 } else if (pdetrange == 3) {
16997                         chan_freq_range =
16998                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16999                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
17000                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
17001
17002                                 u16 auxadc_vmid[] = {
17003                                         0xa2, 0xb4, 0xb4, 0x270
17004                                 };
17005                                 u16 auxadc_gain[] = {
17006                                         0x02, 0x02, 0x02, 0x00
17007                                 };
17008
17009                                 wlc_phy_table_write_nphy(pi,
17010                                                          NPHY_TBL_ID_AFECTRL, 4,
17011                                                          0x08, 16, auxadc_vmid);
17012                                 wlc_phy_table_write_nphy(pi,
17013                                                          NPHY_TBL_ID_AFECTRL, 4,
17014                                                          0x18, 16, auxadc_vmid);
17015                                 wlc_phy_table_write_nphy(pi,
17016                                                          NPHY_TBL_ID_AFECTRL, 4,
17017                                                          0x0c, 16, auxadc_gain);
17018                                 wlc_phy_table_write_nphy(pi,
17019                                                          NPHY_TBL_ID_AFECTRL, 4,
17020                                                          0x1c, 16, auxadc_gain);
17021                         }
17022                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
17023                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17024                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17025                         u16 Vmid[2], Av[2];
17026
17027                         chan_freq_range =
17028                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17029                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17030                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17031                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17032                                 Av[0] = (pdetrange == 4) ? 2 : 0;
17033                                 Av[1] = (pdetrange == 4) ? 2 : 0;
17034                         } else {
17035                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17036                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17037                                 Av[0] = (pdetrange == 4) ? 2 : 0;
17038                                 Av[1] = (pdetrange == 4) ? 2 : 0;
17039                         }
17040
17041                         bcm_adc_vmid[3] = Vmid[0];
17042                         bcm_adc_gain[3] = Av[0];
17043                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17044                                                  0x08, 16, bcm_adc_vmid);
17045                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17046                                                  0x0c, 16, bcm_adc_gain);
17047
17048                         bcm_adc_vmid[3] = Vmid[1];
17049                         bcm_adc_gain[3] = Av[1];
17050                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17051                                                  0x18, 16, bcm_adc_vmid);
17052                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17053                                                  0x1c, 16, bcm_adc_gain);
17054                 }
17055
17056                 write_radio_reg(pi,
17057                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17058                                 0x0);
17059                 write_radio_reg(pi,
17060                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17061                                 0x0);
17062
17063                 write_radio_reg(pi,
17064                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17065                                 0x6);
17066                 write_radio_reg(pi,
17067                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17068                                 0x6);
17069
17070                 write_radio_reg(pi,
17071                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17072                                 0x7);
17073                 write_radio_reg(pi,
17074                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17075                                 0x7);
17076
17077                 write_radio_reg(pi,
17078                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17079                                 0x88);
17080                 write_radio_reg(pi,
17081                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17082                                 0x88);
17083
17084                 write_radio_reg(pi,
17085                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17086                                 0x0);
17087                 write_radio_reg(pi,
17088                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17089                                 0x0);
17090
17091                 write_radio_reg(pi,
17092                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17093                                 0x0);
17094                 write_radio_reg(pi,
17095                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17096                                 0x0);
17097
17098                 triso =
17099                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17100                         triso : pi->srom_fem2g.triso;
17101                 if (triso == 7) {
17102                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17103                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17104                 }
17105
17106                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17107
17108                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17109                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
17110                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17111                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17112                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
17113                         nss1_data_weights = 0x00088888;
17114                         ht_data_weights = 0x00088888;
17115                         stbc_data_weights = 0x00088888;
17116                 } else {
17117                         nss1_data_weights = 0x88888888;
17118                         ht_data_weights = 0x88888888;
17119                         stbc_data_weights = 0x88888888;
17120                 }
17121                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17122                                          1, 1, 32, &nss1_data_weights);
17123                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17124                                          1, 2, 32, &ht_data_weights);
17125                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17126                                          1, 3, 32, &stbc_data_weights);
17127
17128                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17129                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
17130                                 write_radio_reg(pi,
17131                                                 RADIO_2056_TX_GMBB_IDAC |
17132                                                 RADIO_2056_TX0, 0x70);
17133                                 write_radio_reg(pi,
17134                                                 RADIO_2056_TX_GMBB_IDAC |
17135                                                 RADIO_2056_TX1, 0x70);
17136                         }
17137                 }
17138
17139                 if (!pi->edcrs_threshold_lock) {
17140                         write_phy_reg(pi, 0x224, 0x3eb);
17141                         write_phy_reg(pi, 0x225, 0x3eb);
17142                         write_phy_reg(pi, 0x226, 0x341);
17143                         write_phy_reg(pi, 0x227, 0x341);
17144                         write_phy_reg(pi, 0x228, 0x42b);
17145                         write_phy_reg(pi, 0x229, 0x42b);
17146                         write_phy_reg(pi, 0x22a, 0x381);
17147                         write_phy_reg(pi, 0x22b, 0x381);
17148                         write_phy_reg(pi, 0x22c, 0x42b);
17149                         write_phy_reg(pi, 0x22d, 0x42b);
17150                         write_phy_reg(pi, 0x22e, 0x381);
17151                         write_phy_reg(pi, 0x22f, 0x381);
17152                 }
17153
17154                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17155
17156                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17157                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17158                                               MHF4_BPHY_TXCORE0,
17159                                               MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17160                 }
17161         } else {
17162
17163                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17164                     (pi->sh->boardtype == 0x8b)) {
17165                         uint i;
17166                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17167                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17168                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
17169                 }
17170
17171                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17172                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17173                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17174                 } else {
17175                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17176                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17177                 }
17178
17179                 regval = 0x000a;
17180                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17181                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17182
17183                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17184                         regval = 0xcdaa;
17185                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17186                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17187                 }
17188
17189                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17190                         regval = 0x0000;
17191                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17192                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17193
17194                         regval = 0x7aab;
17195                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17196                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17197
17198                         regval = 0x0800;
17199                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17200                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17201                 }
17202
17203                 write_phy_reg(pi, 0xf8, 0x02d8);
17204                 write_phy_reg(pi, 0xf9, 0x0301);
17205                 write_phy_reg(pi, 0xfa, 0x02d8);
17206                 write_phy_reg(pi, 0xfb, 0x0301);
17207
17208                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17209                                        rfseq_rx2tx_dlys,
17210                                        sizeof(rfseq_rx2tx_events) /
17211                                        sizeof(rfseq_rx2tx_events[0]));
17212
17213                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17214                                        rfseq_tx2rx_dlys,
17215                                        sizeof(rfseq_tx2rx_events) /
17216                                        sizeof(rfseq_tx2rx_events[0]));
17217
17218                 wlc_phy_workarounds_nphy_gainctrl(pi);
17219
17220                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17221
17222                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17223                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17224                                                MHF3_NPHY_MLADV_WAR,
17225                                                MHF3_NPHY_MLADV_WAR,
17226                                                BRCM_BAND_ALL);
17227
17228                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17229                         write_phy_reg(pi, 0x1e3, 0x0);
17230                         write_phy_reg(pi, 0x1e4, 0x0);
17231                 }
17232
17233                 if (NREV_LT(pi->pubpi.phy_rev, 2))
17234                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17235
17236                 alpha0 = 293;
17237                 alpha1 = 435;
17238                 alpha2 = 261;
17239                 beta0 = 366;
17240                 beta1 = 205;
17241                 beta2 = 32;
17242                 write_phy_reg(pi, 0x145, alpha0);
17243                 write_phy_reg(pi, 0x146, alpha1);
17244                 write_phy_reg(pi, 0x147, alpha2);
17245                 write_phy_reg(pi, 0x148, beta0);
17246                 write_phy_reg(pi, 0x149, beta1);
17247                 write_phy_reg(pi, 0x14a, beta2);
17248
17249                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17250                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17251
17252                         write_phy_reg(pi, 0x192, 0xb5);
17253                         write_phy_reg(pi, 0x193, 0xa4);
17254                         write_phy_reg(pi, 0x194, 0x0);
17255                 }
17256
17257                 if (NREV_IS(pi->pubpi.phy_rev, 2))
17258                         mod_phy_reg(pi, 0x221,
17259                                     NPHY_FORCESIG_DECODEGATEDCLKS,
17260                                     NPHY_FORCESIG_DECODEGATEDCLKS);
17261         }
17262
17263         if (pi->phyhang_avoid)
17264                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17265 }
17266
17267 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17268 {
17269         int j, type = 2;
17270         u16 addr_offset = 0x2c5;
17271
17272         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17273                 write_phy_reg(pi, addr_offset + j,
17274                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17275 }
17276
17277 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17278 {
17279
17280         if (write == 0) {
17281                 vals[0] = read_phy_reg(pi, 0x2c);
17282                 vals[1] = read_phy_reg(pi, 0x42);
17283         } else {
17284                 write_phy_reg(pi, 0x2c, vals[0]);
17285                 write_phy_reg(pi, 0x42, vals[1]);
17286         }
17287 }
17288
17289 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17290 {
17291         u8 core;
17292
17293         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17294                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17295                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17296                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17297                                                  TX_SSI_MASTER, 0x5);
17298                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17299                                                  TX_SSI_MUX, 0xe);
17300
17301                                 if (pi->pubpi.radiorev != 5)
17302                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17303                                                          core, TSSIA, 0);
17304
17305                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17306                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17307                                                          core, TSSIG, 0x1);
17308                                 else
17309                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17310                                                          core, TSSIG, 0x31);
17311                         } else {
17312                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17313                                                  TX_SSI_MASTER, 0x9);
17314                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17315                                                  TX_SSI_MUX, 0xc);
17316                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17317                                                  TSSIG, 0);
17318
17319                                 if (pi->pubpi.radiorev != 5) {
17320                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17321                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17322                                                                  TX, core,
17323                                                                  TSSIA, 0x1);
17324                                         else
17325                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17326                                                                  TX, core,
17327                                                                  TSSIA, 0x31);
17328                                 }
17329                         }
17330                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17331                                          0);
17332                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17333                                          0);
17334                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17335                                          0x3);
17336                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17337                                          0x0);
17338                 }
17339         } else {
17340                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17341                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17342                                 0x80);
17343                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17344                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17345
17346                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17347                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17348                                          0x0);
17349                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17350                                          0x0);
17351                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17352                                          0x3);
17353                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17354                                          0x0);
17355                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17356                                          0x8);
17357                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17358                                          0x0);
17359                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17360                                          0x0);
17361
17362                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17363                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17364                                                  TX_SSI_MASTER, 0x5);
17365
17366                                 if (pi->pubpi.radiorev != 5)
17367                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17368                                                          core, TSSIA, 0x0);
17369                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17370                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17371                                                          core, TSSIG, 0x31);
17372                                 else
17373                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17374                                                          core, TSSIG, 0x11);
17375                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17376                                                  TX_SSI_MUX, 0xe);
17377                         } else {
17378                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17379                                                  TX_SSI_MASTER, 0x9);
17380                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17381                                                  TSSIA, 0x31);
17382                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17383                                                  TSSIG, 0x0);
17384                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17385                                                  TX_SSI_MUX, 0xc);
17386                         }
17387                 }
17388         }
17389 }
17390
17391 static void
17392 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17393                              u8 core_mask, u8 off)
17394 {
17395         u8 core_num;
17396         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17397                 0, val_mask = 0;
17398         u8 shift = 0, val_shift = 0;
17399
17400         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17401
17402                 en_mask = field;
17403                 for (core_num = 0; core_num < 2; core_num++) {
17404
17405                         switch (field) {
17406                         case (0x1 << 1):
17407                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17408                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17409                                 val_mask = (0x1 << 0);
17410                                 val_shift = 0;
17411                                 break;
17412                         case (0x1 << 2):
17413                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17414                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17415                                 val_mask = (0x1 << 1);
17416                                 val_shift = 1;
17417                                 break;
17418                         case (0x1 << 3):
17419                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17420                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17421                                 val_mask = (0x1 << 2);
17422                                 val_shift = 2;
17423                                 break;
17424                         case (0x1 << 4):
17425                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17426                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17427                                 val_mask = (0x1 << 4);
17428                                 val_shift = 4;
17429                                 break;
17430                         case (0x1 << 5):
17431                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17432                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17433                                 val_mask = (0x1 << 5);
17434                                 val_shift = 5;
17435                                 break;
17436                         case (0x1 << 6):
17437                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17438                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17439                                 val_mask = (0x1 << 6);
17440                                 val_shift = 6;
17441                                 break;
17442                         case (0x1 << 7):
17443                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17444                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17445                                 val_mask = (0x1 << 7);
17446                                 val_shift = 7;
17447                                 break;
17448                         case (0x1 << 8):
17449                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17450                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17451                                 val_mask = (0x7 << 8);
17452                                 val_shift = 8;
17453                                 break;
17454                         case (0x1 << 11):
17455                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17456                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17457                                 val_mask = (0x7 << 13);
17458                                 val_shift = 13;
17459                                 break;
17460
17461                         case (0x1 << 9):
17462                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17463                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17464                                 val_mask = (0x7 << 0);
17465                                 val_shift = 0;
17466                                 break;
17467
17468                         case (0x1 << 10):
17469                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17470                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17471                                 val_mask = (0x7 << 4);
17472                                 val_shift = 4;
17473                                 break;
17474
17475                         case (0x1 << 12):
17476                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17477                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17478                                 val_mask = (0xffff << 0);
17479                                 val_shift = 0;
17480                                 break;
17481                         case (0x1 << 13):
17482                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17483                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17484                                 val_mask = (0xffff << 0);
17485                                 val_shift = 0;
17486                                 break;
17487                         case (0x1 << 14):
17488                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17489                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17490                                 val_mask = (0x3 << 6);
17491                                 val_shift = 6;
17492                                 break;
17493                         case (0x1 << 0):
17494                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17495                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17496                                 val_mask = (0x1 << 15);
17497                                 val_shift = 15;
17498                                 break;
17499                         default:
17500                                 addr = 0xffff;
17501                                 break;
17502                         }
17503
17504                         if (off) {
17505                                 and_phy_reg(pi, en_addr, ~en_mask);
17506                                 and_phy_reg(pi, val_addr, ~val_mask);
17507                         } else {
17508
17509                                 if ((core_mask == 0)
17510                                     || (core_mask & (1 << core_num))) {
17511                                         or_phy_reg(pi, en_addr, en_mask);
17512
17513                                         if (addr != 0xffff)
17514                                                 mod_phy_reg(pi, val_addr,
17515                                                             val_mask,
17516                                                             (value <<
17517                                                              val_shift));
17518                                 }
17519                         }
17520                 }
17521         } else {
17522
17523                 if (off) {
17524                         and_phy_reg(pi, 0xec, ~field);
17525                         value = 0x0;
17526                 } else {
17527                         or_phy_reg(pi, 0xec, field);
17528                 }
17529
17530                 for (core_num = 0; core_num < 2; core_num++) {
17531
17532                         switch (field) {
17533                         case (0x1 << 1):
17534                         case (0x1 << 9):
17535                         case (0x1 << 12):
17536                         case (0x1 << 13):
17537                         case (0x1 << 14):
17538                                 addr = 0x78;
17539
17540                                 core_mask = 0x1;
17541                                 break;
17542                         case (0x1 << 2):
17543                         case (0x1 << 3):
17544                         case (0x1 << 4):
17545                         case (0x1 << 5):
17546                         case (0x1 << 6):
17547                         case (0x1 << 7):
17548                         case (0x1 << 8):
17549                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17550                                 break;
17551                         case (0x1 << 10):
17552                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17553                                 break;
17554                         case (0x1 << 11):
17555                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17556                                 break;
17557                         default:
17558                                 addr = 0xffff;
17559                         }
17560
17561                         switch (field) {
17562                         case (0x1 << 1):
17563                                 mask = (0x7 << 3);
17564                                 shift = 3;
17565                                 break;
17566                         case (0x1 << 9):
17567                                 mask = (0x1 << 2);
17568                                 shift = 2;
17569                                 break;
17570                         case (0x1 << 12):
17571                                 mask = (0x1 << 8);
17572                                 shift = 8;
17573                                 break;
17574                         case (0x1 << 13):
17575                                 mask = (0x1 << 9);
17576                                 shift = 9;
17577                                 break;
17578                         case (0x1 << 14):
17579                                 mask = (0xf << 12);
17580                                 shift = 12;
17581                                 break;
17582                         case (0x1 << 2):
17583                                 mask = (0x1 << 0);
17584                                 shift = 0;
17585                                 break;
17586                         case (0x1 << 3):
17587                                 mask = (0x1 << 1);
17588                                 shift = 1;
17589                                 break;
17590                         case (0x1 << 4):
17591                                 mask = (0x1 << 2);
17592                                 shift = 2;
17593                                 break;
17594                         case (0x1 << 5):
17595                                 mask = (0x3 << 4);
17596                                 shift = 4;
17597                                 break;
17598                         case (0x1 << 6):
17599                                 mask = (0x3 << 6);
17600                                 shift = 6;
17601                                 break;
17602                         case (0x1 << 7):
17603                                 mask = (0x1 << 8);
17604                                 shift = 8;
17605                                 break;
17606                         case (0x1 << 8):
17607                                 mask = (0x1 << 9);
17608                                 shift = 9;
17609                                 break;
17610                         case (0x1 << 10):
17611                                 mask = 0x1fff;
17612                                 shift = 0x0;
17613                                 break;
17614                         case (0x1 << 11):
17615                                 mask = 0x1fff;
17616                                 shift = 0x0;
17617                                 break;
17618                         default:
17619                                 mask = 0x0;
17620                                 shift = 0x0;
17621                                 break;
17622                         }
17623
17624                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17625                                 mod_phy_reg(pi, addr, mask, (value << shift));
17626                 }
17627
17628                 or_phy_reg(pi, 0xec, (0x1 << 0));
17629                 or_phy_reg(pi, 0x78, (0x1 << 0));
17630                 udelay(1);
17631                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17632         }
17633 }
17634
17635 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17636 {
17637         s32 rssi_buf[4];
17638         s32 int_val;
17639
17640         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17641
17642                 return;
17643
17644         if (PHY_IPA(pi))
17645                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17646
17647         if (NREV_GE(pi->pubpi.phy_rev, 7))
17648                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17649                                                   0, 0x3, 0,
17650                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17651         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17652                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17653
17654         wlc_phy_stopplayback_nphy(pi);
17655
17656         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17657
17658         udelay(20);
17659         int_val =
17660                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17661                                        1);
17662         wlc_phy_stopplayback_nphy(pi);
17663         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17664
17665         if (NREV_GE(pi->pubpi.phy_rev, 7))
17666                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17667                                                   0, 0x3, 1,
17668                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17669         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17670                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17671
17672         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17673
17674                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17675                         (u8) ((int_val >> 24) & 0xff);
17676                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17677                         (u8) ((int_val >> 24) & 0xff);
17678
17679                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17680                         (u8) ((int_val >> 8) & 0xff);
17681                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17682                         (u8) ((int_val >> 8) & 0xff);
17683         } else {
17684                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17685                         (u8) ((int_val >> 24) & 0xff);
17686
17687                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17688                         (u8) ((int_val >> 8) & 0xff);
17689
17690                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17691                         (u8) ((int_val >> 16) & 0xff);
17692                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17693                         (u8) ((int_val) & 0xff);
17694         }
17695
17696 }
17697
17698 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17699 {
17700         u8 idx, idx2, i, delta_ind;
17701
17702         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17703                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17704
17705         for (i = 0; i < 4; i++) {
17706                 idx2 = 0;
17707
17708                 delta_ind = 0;
17709
17710                 switch (i) {
17711                 case 0:
17712
17713                         if (CHSPEC_IS40(pi->radio_chanspec)
17714                             && NPHY_IS_SROM_REINTERPRET) {
17715                                 idx = TXP_FIRST_MCS_40_SISO;
17716                         } else {
17717                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17718                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17719                                 delta_ind = 1;
17720                         }
17721                         break;
17722
17723                 case 1:
17724
17725                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17726                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17727                         break;
17728
17729                 case 2:
17730
17731                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17732                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17733                         break;
17734
17735                 case 3:
17736
17737                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17738                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17739                         break;
17740                 }
17741
17742                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17743                         pi->tx_power_offset[idx];
17744                 idx = idx + delta_ind;
17745                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17746                         pi->tx_power_offset[idx];
17747                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17748                         pi->tx_power_offset[idx];
17749                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17750                         pi->tx_power_offset[idx++];
17751
17752                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17753                         pi->tx_power_offset[idx++];
17754                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17755                         pi->tx_power_offset[idx];
17756                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17757                         pi->tx_power_offset[idx];
17758                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17759                         pi->tx_power_offset[idx++];
17760
17761                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17762                         pi->tx_power_offset[idx++];
17763                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17764                         pi->tx_power_offset[idx];
17765                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17766                         pi->tx_power_offset[idx];
17767                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17768                         pi->tx_power_offset[idx++];
17769
17770                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17771                         pi->tx_power_offset[idx];
17772                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17773                         pi->tx_power_offset[idx++];
17774                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17775                         pi->tx_power_offset[idx];
17776                 idx = idx + 1 - delta_ind;
17777                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17778                         pi->tx_power_offset[idx];
17779
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17785                         pi->tx_power_offset[idx];
17786                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17787                         pi->tx_power_offset[idx];
17788         }
17789 }
17790
17791 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17792 {
17793         u32 idx;
17794         s16 a1[2], b0[2], b1[2];
17795         s8 target_pwr_qtrdbm[2];
17796         s32 num, den, pwr_est;
17797         u8 chan_freq_range;
17798         u8 idle_tssi[2];
17799         u32 tbl_id, tbl_len, tbl_offset;
17800         u32 regval[64];
17801         u8 core;
17802
17803         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17804                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17805                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17806                 udelay(1);
17807         }
17808
17809         if (pi->phyhang_avoid)
17810                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17811
17812         or_phy_reg(pi, 0x122, (0x1 << 0));
17813
17814         if (NREV_GE(pi->pubpi.phy_rev, 3))
17815                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17816         else
17817                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17818
17819         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17820                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17821
17822         if (pi->sh->sromrev < 4) {
17823                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17824                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17825                 target_pwr_qtrdbm[0] = 13 * 4;
17826                 target_pwr_qtrdbm[1] = 13 * 4;
17827                 a1[0] = -424;
17828                 a1[1] = -424;
17829                 b0[0] = 5612;
17830                 b0[1] = 5612;
17831                 b1[1] = -1393;
17832                 b1[0] = -1393;
17833         } else {
17834
17835                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17836                 switch (chan_freq_range) {
17837                 case WL_CHAN_FREQ_RANGE_2G:
17838                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17839                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17840                         target_pwr_qtrdbm[0] =
17841                                 pi->nphy_pwrctrl_info[0].max_pwr_2g;
17842                         target_pwr_qtrdbm[1] =
17843                                 pi->nphy_pwrctrl_info[1].max_pwr_2g;
17844                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17845                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17846                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17847                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17848                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17849                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17850                         break;
17851                 case WL_CHAN_FREQ_RANGE_5GL:
17852                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17853                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17854                         target_pwr_qtrdbm[0] =
17855                                 pi->nphy_pwrctrl_info[0].max_pwr_5gl;
17856                         target_pwr_qtrdbm[1] =
17857                                 pi->nphy_pwrctrl_info[1].max_pwr_5gl;
17858                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17859                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17860                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17861                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17862                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17863                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17864                         break;
17865                 case WL_CHAN_FREQ_RANGE_5GM:
17866                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17867                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17868                         target_pwr_qtrdbm[0] =
17869                                 pi->nphy_pwrctrl_info[0].max_pwr_5gm;
17870                         target_pwr_qtrdbm[1] =
17871                                 pi->nphy_pwrctrl_info[1].max_pwr_5gm;
17872                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17873                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17874                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17875                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17876                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17877                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17878                         break;
17879                 case WL_CHAN_FREQ_RANGE_5GH:
17880                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17881                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17882                         target_pwr_qtrdbm[0] =
17883                                 pi->nphy_pwrctrl_info[0].max_pwr_5gh;
17884                         target_pwr_qtrdbm[1] =
17885                                 pi->nphy_pwrctrl_info[1].max_pwr_5gh;
17886                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17887                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17888                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17889                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17890                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17891                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17892                         break;
17893                 default:
17894                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17895                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17896                         target_pwr_qtrdbm[0] = 13 * 4;
17897                         target_pwr_qtrdbm[1] = 13 * 4;
17898                         a1[0] = -424;
17899                         a1[1] = -424;
17900                         b0[0] = 5612;
17901                         b0[1] = 5612;
17902                         b1[1] = -1393;
17903                         b1[0] = -1393;
17904                         break;
17905                 }
17906         }
17907
17908         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17909         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17910
17911         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17912                 if (pi->srom_fem2g.tssipos)
17913                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17914
17915                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17916                         for (core = 0; core <= 1; core++) {
17917                                 if (PHY_IPA(pi)) {
17918                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17919                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17920                                                                  TX, core,
17921                                                                  TX_SSI_MUX,
17922                                                                  0xe);
17923                                         else
17924                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17925                                                                  TX, core,
17926                                                                  TX_SSI_MUX,
17927                                                                  0xc);
17928                                 }
17929                         }
17930                 } else {
17931                         if (PHY_IPA(pi)) {
17932
17933                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17934                                                 RADIO_2056_TX0,
17935                                                 (CHSPEC_IS5G
17936                                                  (pi->radio_chanspec)) ?
17937                                                  0xc : 0xe);
17938                                 write_radio_reg(pi,
17939                                                 RADIO_2056_TX_TX_SSI_MUX |
17940                                                 RADIO_2056_TX1,
17941                                                 (CHSPEC_IS5G
17942                                                  (pi->radio_chanspec)) ?
17943                                                  0xc : 0xe);
17944                         } else {
17945
17946                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17947                                                 RADIO_2056_TX0, 0x11);
17948                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17949                                                 RADIO_2056_TX1, 0x11);
17950                         }
17951                 }
17952         }
17953
17954         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17955                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17956                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17957                 udelay(1);
17958         }
17959
17960         if (NREV_GE(pi->pubpi.phy_rev, 7))
17961                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17962                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17963         else
17964                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17965                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17966
17967         if (NREV_GE(pi->pubpi.phy_rev, 7))
17968                 mod_phy_reg(pi, 0x222, (0xff << 0),
17969                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17970         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17971                 mod_phy_reg(pi, 0x222, (0xff << 0),
17972                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17973
17974         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17975                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17976
17977         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17978
17979         write_phy_reg(pi, 0x1e9,
17980                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17981
17982         write_phy_reg(pi, 0x1ea,
17983                       (target_pwr_qtrdbm[0] << 0) |
17984                       (target_pwr_qtrdbm[1] << 8));
17985
17986         tbl_len = 64;
17987         tbl_offset = 0;
17988         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17989              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17990
17991                 for (idx = 0; idx < tbl_len; idx++) {
17992                         num = 8 *
17993                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17994                         den = 32768 + a1[tbl_id - 26] * idx;
17995                         pwr_est = max(((4 * num + den / 2) / den), -8);
17996                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17997                                 if (idx <=
17998                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17999                                         pwr_est =
18000                                                 max(pwr_est,
18001                                                     target_pwr_qtrdbm
18002                                                     [tbl_id - 26] + 1);
18003                         }
18004                         regval[idx] = (u32) pwr_est;
18005                 }
18006                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18007                                          regval);
18008         }
18009
18010         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
18011         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
18012                                  pi->adj_pwr_tbl_nphy);
18013         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
18014                                  pi->adj_pwr_tbl_nphy);
18015
18016         if (pi->phyhang_avoid)
18017                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18018 }
18019
18020 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
18021 {
18022         u32 *tx_pwrctrl_tbl = NULL;
18023
18024         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18025                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18026                         if ((pi->pubpi.radiorev == 4)
18027                             || (pi->pubpi.radiorev == 6))
18028                                 tx_pwrctrl_tbl =
18029                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
18030                         else if (pi->pubpi.radiorev == 3)
18031                                 tx_pwrctrl_tbl =
18032                                         nphy_tpc_txgain_ipa_2g_2057rev3;
18033                         else if (pi->pubpi.radiorev == 5)
18034                                 tx_pwrctrl_tbl =
18035                                         nphy_tpc_txgain_ipa_2g_2057rev5;
18036                         else if ((pi->pubpi.radiorev == 7)
18037                                  || (pi->pubpi.radiorev == 8))
18038                                 tx_pwrctrl_tbl =
18039                                         nphy_tpc_txgain_ipa_2g_2057rev7;
18040                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18041                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18042                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18043                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18044                 } else {
18045                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18046                 }
18047         } else {
18048
18049                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18050                         if ((pi->pubpi.radiorev == 3) ||
18051                             (pi->pubpi.radiorev == 4) ||
18052                             (pi->pubpi.radiorev == 6))
18053                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18054                         else if ((pi->pubpi.radiorev == 7)
18055                                  || (pi->pubpi.radiorev == 8))
18056                                 tx_pwrctrl_tbl =
18057                                         nphy_tpc_txgain_ipa_5g_2057rev7;
18058                 } else {
18059                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18060                 }
18061         }
18062
18063         return tx_pwrctrl_tbl;
18064 }
18065
18066 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18067 {
18068         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18069                 if (pi->nphy_rssical_chanspec_2G == 0)
18070                         return;
18071
18072                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18073                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18074                                       RADIO_2057_VCM_MASK,
18075                                       pi->rssical_cache.
18076                                       rssical_radio_regs_2G[0]);
18077                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18078                                       RADIO_2057_VCM_MASK,
18079                                       pi->rssical_cache.
18080                                       rssical_radio_regs_2G[1]);
18081                 } else {
18082                         mod_radio_reg(pi,
18083                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18084                                       RADIO_2056_VCM_MASK,
18085                                       pi->rssical_cache.
18086                                       rssical_radio_regs_2G[0]);
18087                         mod_radio_reg(pi,
18088                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18089                                       RADIO_2056_VCM_MASK,
18090                                       pi->rssical_cache.
18091                                       rssical_radio_regs_2G[1]);
18092                 }
18093
18094                 write_phy_reg(pi, 0x1a6,
18095                               pi->rssical_cache.rssical_phyregs_2G[0]);
18096                 write_phy_reg(pi, 0x1ac,
18097                               pi->rssical_cache.rssical_phyregs_2G[1]);
18098                 write_phy_reg(pi, 0x1b2,
18099                               pi->rssical_cache.rssical_phyregs_2G[2]);
18100                 write_phy_reg(pi, 0x1b8,
18101                               pi->rssical_cache.rssical_phyregs_2G[3]);
18102                 write_phy_reg(pi, 0x1a4,
18103                               pi->rssical_cache.rssical_phyregs_2G[4]);
18104                 write_phy_reg(pi, 0x1aa,
18105                               pi->rssical_cache.rssical_phyregs_2G[5]);
18106                 write_phy_reg(pi, 0x1b0,
18107                               pi->rssical_cache.rssical_phyregs_2G[6]);
18108                 write_phy_reg(pi, 0x1b6,
18109                               pi->rssical_cache.rssical_phyregs_2G[7]);
18110                 write_phy_reg(pi, 0x1a5,
18111                               pi->rssical_cache.rssical_phyregs_2G[8]);
18112                 write_phy_reg(pi, 0x1ab,
18113                               pi->rssical_cache.rssical_phyregs_2G[9]);
18114                 write_phy_reg(pi, 0x1b1,
18115                               pi->rssical_cache.rssical_phyregs_2G[10]);
18116                 write_phy_reg(pi, 0x1b7,
18117                               pi->rssical_cache.rssical_phyregs_2G[11]);
18118
18119         } else {
18120                 if (pi->nphy_rssical_chanspec_5G == 0)
18121                         return;
18122
18123                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18124                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18125                                       RADIO_2057_VCM_MASK,
18126                                       pi->rssical_cache.
18127                                       rssical_radio_regs_5G[0]);
18128                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18129                                       RADIO_2057_VCM_MASK,
18130                                       pi->rssical_cache.
18131                                       rssical_radio_regs_5G[1]);
18132                 } else {
18133                         mod_radio_reg(pi,
18134                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18135                                       RADIO_2056_VCM_MASK,
18136                                       pi->rssical_cache.
18137                                       rssical_radio_regs_5G[0]);
18138                         mod_radio_reg(pi,
18139                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18140                                       RADIO_2056_VCM_MASK,
18141                                       pi->rssical_cache.
18142                                       rssical_radio_regs_5G[1]);
18143                 }
18144
18145                 write_phy_reg(pi, 0x1a6,
18146                               pi->rssical_cache.rssical_phyregs_5G[0]);
18147                 write_phy_reg(pi, 0x1ac,
18148                               pi->rssical_cache.rssical_phyregs_5G[1]);
18149                 write_phy_reg(pi, 0x1b2,
18150                               pi->rssical_cache.rssical_phyregs_5G[2]);
18151                 write_phy_reg(pi, 0x1b8,
18152                               pi->rssical_cache.rssical_phyregs_5G[3]);
18153                 write_phy_reg(pi, 0x1a4,
18154                               pi->rssical_cache.rssical_phyregs_5G[4]);
18155                 write_phy_reg(pi, 0x1aa,
18156                               pi->rssical_cache.rssical_phyregs_5G[5]);
18157                 write_phy_reg(pi, 0x1b0,
18158                               pi->rssical_cache.rssical_phyregs_5G[6]);
18159                 write_phy_reg(pi, 0x1b6,
18160                               pi->rssical_cache.rssical_phyregs_5G[7]);
18161                 write_phy_reg(pi, 0x1a5,
18162                               pi->rssical_cache.rssical_phyregs_5G[8]);
18163                 write_phy_reg(pi, 0x1ab,
18164                               pi->rssical_cache.rssical_phyregs_5G[9]);
18165                 write_phy_reg(pi, 0x1b1,
18166                               pi->rssical_cache.rssical_phyregs_5G[10]);
18167                 write_phy_reg(pi, 0x1b7,
18168                               pi->rssical_cache.rssical_phyregs_5G[11]);
18169         }
18170 }
18171
18172 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18173 {
18174         u16 txcal_gain[2];
18175
18176         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18177         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18178         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18179         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18180
18181         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18182                                 txcal_gain);
18183
18184         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18185                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18186                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18187         } else {
18188                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18189                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18190         }
18191
18192         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18193                                  txcal_gain);
18194 }
18195
18196 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18197 {
18198         bool save_bbmult = false;
18199         u8 txcal_index_2057_rev5n7 = 0;
18200         u8 txcal_index_2057_rev3n4n6 = 10;
18201
18202         if (pi->use_int_tx_iqlo_cal_nphy) {
18203                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18204                         if ((pi->pubpi.radiorev == 3) ||
18205                             (pi->pubpi.radiorev == 4) ||
18206                             (pi->pubpi.radiorev == 6)) {
18207
18208                                 pi->nphy_txcal_pwr_idx[0] =
18209                                         txcal_index_2057_rev3n4n6;
18210                                 pi->nphy_txcal_pwr_idx[1] =
18211                                         txcal_index_2057_rev3n4n6;
18212                                 wlc_phy_txpwr_index_nphy(
18213                                         pi, 3,
18214                                         txcal_index_2057_rev3n4n6,
18215                                         false);
18216                         } else {
18217
18218                                 pi->nphy_txcal_pwr_idx[0] =
18219                                         txcal_index_2057_rev5n7;
18220                                 pi->nphy_txcal_pwr_idx[1] =
18221                                         txcal_index_2057_rev5n7;
18222                                 wlc_phy_txpwr_index_nphy(
18223                                         pi, 3,
18224                                         txcal_index_2057_rev5n7,
18225                                         false);
18226                         }
18227                         save_bbmult = true;
18228
18229                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18230                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18231                         if (pi->sh->hw_phytxchain != 3) {
18232                                 pi->nphy_txcal_pwr_idx[1] =
18233                                         pi->nphy_txcal_pwr_idx[0];
18234                                 wlc_phy_txpwr_index_nphy(pi, 3,
18235                                                          pi->
18236                                                          nphy_txcal_pwr_idx[0],
18237                                                          true);
18238                                 save_bbmult = true;
18239                         }
18240
18241                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18242                         if (PHY_IPA(pi)) {
18243                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18244                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18245                                                                     false);
18246                                 } else {
18247                                         pi->nphy_txcal_pwr_idx[0] = 80;
18248                                         pi->nphy_txcal_pwr_idx[1] = 80;
18249                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18250                                                                  false);
18251                                         save_bbmult = true;
18252                                 }
18253                         } else {
18254                                 wlc_phy_internal_cal_txgain_nphy(pi);
18255                                 save_bbmult = true;
18256                         }
18257
18258                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18259                         if (PHY_IPA(pi)) {
18260                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18261                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18262                                                                     false);
18263                                 else
18264                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18265                                                                     false);
18266                         } else {
18267                                 wlc_phy_internal_cal_txgain_nphy(pi);
18268                                 save_bbmult = true;
18269                         }
18270                 }
18271
18272         } else {
18273                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18274         }
18275
18276         if (save_bbmult)
18277                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18278                                         &pi->nphy_txcal_bbmult);
18279 }
18280
18281 static void
18282 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18283                                  u8 core_code)
18284 {
18285         u16 mask;
18286         u16 val;
18287         u8 core;
18288
18289         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18290                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18291                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18292                             && core == PHY_CORE_1)
18293                                 continue;
18294                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18295                                  && core == PHY_CORE_0)
18296                                 continue;
18297
18298                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18299
18300                                 mask = (0x1 << 10);
18301                                 val = 1 << 10;
18302                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18303                                             0x92, mask, val);
18304                         }
18305
18306                         if (field == NPHY_RfctrlIntc_override_OFF) {
18307
18308                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18309                                               0x92, 0);
18310
18311                                 wlc_phy_force_rfseq_nphy(pi,
18312                                                          NPHY_RFSEQ_RESET2RX);
18313                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18314
18315                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316
18317                                         mask = (0x1 << 6) | (0x1 << 7);
18318
18319                                         val = value << 6;
18320                                         mod_phy_reg(pi,
18321                                                     (core ==
18322                                                      PHY_CORE_0) ? 0x91 : 0x92,
18323                                                     mask, val);
18324
18325                                         or_phy_reg(pi,
18326                                                    (core ==
18327                                                     PHY_CORE_0) ? 0x91 : 0x92,
18328                                                    (0x1 << 10));
18329
18330                                         and_phy_reg(pi, 0x2ff, (u16)
18331                                                     ~(0x3 << 14));
18332                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18333                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18334                                 } else {
18335
18336                                         mask = (0x1 << 6) |
18337                                                (0x1 << 7) |
18338                                                (0x1 << 8) | (0x1 << 9);
18339                                         val = value << 6;
18340                                         mod_phy_reg(pi,
18341                                                     (core ==
18342                                                      PHY_CORE_0) ? 0x91 : 0x92,
18343                                                     mask, val);
18344
18345                                         mask = (0x1 << 0);
18346                                         val = 1 << 0;
18347                                         mod_phy_reg(pi,
18348                                                     (core ==
18349                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18350                                                     mask, val);
18351
18352                                         mask = (core == PHY_CORE_0) ?
18353                                                (0x1 << 0) : (0x1 << 1);
18354                                         val = 1 << ((core == PHY_CORE_0) ?
18355                                                     0 : 1);
18356                                         mod_phy_reg(pi, 0x78, mask, val);
18357
18358                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18359                                                   != 0), 10000);
18360                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18361                                                  "HW error: override failed"))
18362                                                 return;
18363
18364                                         mask = (0x1 << 0);
18365                                         val = 0 << 0;
18366                                         mod_phy_reg(pi,
18367                                                     (core ==
18368                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18369                                                     mask, val);
18370                                 }
18371                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18372                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18373
18374                                         mask = (0x1 << 4) | (0x1 << 5);
18375
18376                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18377                                                 val = value << 5;
18378                                         else
18379                                                 val = value << 4;
18380
18381                                         mod_phy_reg(pi,
18382                                                     (core ==
18383                                                      PHY_CORE_0) ? 0x91 : 0x92,
18384                                                     mask, val);
18385
18386                                         or_phy_reg(pi,
18387                                                    (core ==
18388                                                     PHY_CORE_0) ? 0x91 : 0x92,
18389                                                    (0x1 << 12));
18390                                 } else {
18391
18392                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18393                                                 mask = (0x1 << 5);
18394                                                 val = value << 5;
18395                                         } else {
18396                                                 mask = (0x1 << 4);
18397                                                 val = value << 4;
18398                                         }
18399                                         mod_phy_reg(pi,
18400                                                     (core ==
18401                                                      PHY_CORE_0) ? 0x91 : 0x92,
18402                                                     mask, val);
18403                                 }
18404                         } else if (field ==
18405                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18406                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18407                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18408
18409                                                 mask = (0x1 << 0);
18410                                                 val = value << 0;
18411                                                 mod_phy_reg(pi,
18412                                                             (core ==
18413                                                              PHY_CORE_0) ? 0x91
18414                                                             : 0x92, mask, val);
18415
18416                                                 mask = (0x1 << 2);
18417                                                 mod_phy_reg(pi,
18418                                                             (core ==
18419                                                              PHY_CORE_0) ? 0x91
18420                                                             : 0x92, mask, 0);
18421                                         } else {
18422
18423                                                 mask = (0x1 << 2);
18424                                                 val = value << 2;
18425                                                 mod_phy_reg(pi,
18426                                                             (core ==
18427                                                              PHY_CORE_0) ? 0x91
18428                                                             : 0x92, mask, val);
18429
18430                                                 mask = (0x1 << 0);
18431                                                 mod_phy_reg(pi,
18432                                                             (core ==
18433                                                              PHY_CORE_0) ? 0x91
18434                                                             : 0x92, mask, 0);
18435                                         }
18436
18437                                         mask = (0x1 << 11);
18438                                         val = 1 << 11;
18439                                         mod_phy_reg(pi,
18440                                                     (core ==
18441                                                      PHY_CORE_0) ? 0x91 : 0x92,
18442                                                     mask, val);
18443                                 } else {
18444
18445                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18446                                                 mask = (0x1 << 0);
18447                                                 val = value << 0;
18448                                         } else {
18449                                                 mask = (0x1 << 2);
18450                                                 val = value << 2;
18451                                         }
18452                                         mod_phy_reg(pi,
18453                                                     (core ==
18454                                                      PHY_CORE_0) ? 0x91 : 0x92,
18455                                                     mask, val);
18456                                 }
18457                         } else if (field ==
18458                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18459                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18460                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18461
18462                                                 mask = (0x1 << 1);
18463                                                 val = value << 1;
18464                                                 mod_phy_reg(pi,
18465                                                             (core ==
18466                                                              PHY_CORE_0) ? 0x91
18467                                                             : 0x92, mask, val);
18468
18469                                                 mask = (0x1 << 3);
18470                                                 mod_phy_reg(pi,
18471                                                             (core ==
18472                                                              PHY_CORE_0) ? 0x91
18473                                                             : 0x92, mask, 0);
18474                                         } else {
18475
18476                                                 mask = (0x1 << 3);
18477                                                 val = value << 3;
18478                                                 mod_phy_reg(pi,
18479                                                             (core ==
18480                                                              PHY_CORE_0) ? 0x91
18481                                                             : 0x92, mask, val);
18482
18483                                                 mask = (0x1 << 1);
18484                                                 mod_phy_reg(pi,
18485                                                             (core ==
18486                                                              PHY_CORE_0) ? 0x91
18487                                                             : 0x92, mask, 0);
18488                                         }
18489
18490                                         mask = (0x1 << 11);
18491                                         val = 1 << 11;
18492                                         mod_phy_reg(pi,
18493                                                     (core ==
18494                                                      PHY_CORE_0) ? 0x91 : 0x92,
18495                                                     mask, val);
18496                                 } else {
18497
18498                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18499                                                 mask = (0x1 << 1);
18500                                                 val = value << 1;
18501                                         } else {
18502                                                 mask = (0x1 << 3);
18503                                                 val = value << 3;
18504                                         }
18505                                         mod_phy_reg(pi,
18506                                                     (core ==
18507                                                      PHY_CORE_0) ? 0x91 : 0x92,
18508                                                     mask, val);
18509                                 }
18510                         }
18511                 }
18512         }
18513 }
18514
18515 void
18516 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18517                             bool debug)
18518 {
18519         int gainctrl_loopidx;
18520         uint core;
18521         u16 m0m1, curr_m0m1;
18522         s32 delta_power;
18523         s32 txpwrindex;
18524         s32 qdBm_power[2];
18525         u16 orig_BBConfig;
18526         u16 phy_saveregs[4];
18527         u32 freq_test;
18528         u16 ampl_test = 250;
18529         uint stepsize;
18530         bool phyhang_avoid_state = false;
18531
18532         if (NREV_GE(pi->pubpi.phy_rev, 7))
18533                 stepsize = 2;
18534         else
18535                 stepsize = 1;
18536
18537         if (CHSPEC_IS40(pi->radio_chanspec))
18538                 freq_test = 5000;
18539         else
18540                 freq_test = 2500;
18541
18542         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18543         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18544
18545         if (pi->phyhang_avoid)
18546                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18547
18548         phyhang_avoid_state = pi->phyhang_avoid;
18549         pi->phyhang_avoid = false;
18550
18551         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18552         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18553         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18554         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18555         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18556                                          RADIO_MIMO_CORESEL_CORE1 |
18557                                          RADIO_MIMO_CORESEL_CORE2);
18558
18559         if (!debug) {
18560                 wlc_phy_rfctrlintc_override_nphy(pi,
18561                                                  NPHY_RfctrlIntc_override_TRSW,
18562                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18563                 wlc_phy_rfctrlintc_override_nphy(pi,
18564                                                  NPHY_RfctrlIntc_override_TRSW,
18565                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18566         } else {
18567                 wlc_phy_rfctrlintc_override_nphy(pi,
18568                                                  NPHY_RfctrlIntc_override_TRSW,
18569                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18570                 wlc_phy_rfctrlintc_override_nphy(pi,
18571                                                  NPHY_RfctrlIntc_override_TRSW,
18572                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18573         }
18574
18575         orig_BBConfig = read_phy_reg(pi, 0x01);
18576         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18577
18578         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18579
18580         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18581                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18582
18583                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18584                      gainctrl_loopidx++) {
18585                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18586                                              false);
18587
18588                         if (core == PHY_CORE_0)
18589                                 curr_m0m1 = m0m1 & 0xff00;
18590                         else
18591                                 curr_m0m1 = m0m1 & 0x00ff;
18592
18593                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18594                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18595
18596                         udelay(50);
18597
18598                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18599                                                  NPHY_CAL_TSSISAMPS);
18600
18601                         pi->nphy_bb_mult_save = 0;
18602                         wlc_phy_stopplayback_nphy(pi);
18603
18604                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18605
18606                         txpwrindex -= stepsize * delta_power;
18607                         if (txpwrindex < 0)
18608                                 txpwrindex = 0;
18609                         else if (txpwrindex > 127)
18610                                 txpwrindex = 127;
18611
18612                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18613                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18614                                     (pi->srom_fem5g.extpagain == 3)) {
18615                                         if (txpwrindex < 30)
18616                                                 txpwrindex = 30;
18617                                 }
18618                         } else {
18619                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18620                                     (pi->srom_fem2g.extpagain == 3)) {
18621                                         if (txpwrindex < 50)
18622                                                 txpwrindex = 50;
18623                                 }
18624                         }
18625
18626                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18627                                                  (u8) txpwrindex, true);
18628                 }
18629
18630                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18631
18632                 if (debug) {
18633                         u16 radio_gain;
18634                         u16 dbg_m0m1;
18635
18636                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18637
18638                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18639                                              false);
18640
18641                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18642                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18643
18644                         udelay(100);
18645
18646                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18647                                                  NPHY_CAL_TSSISAMPS);
18648
18649                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18650                                                 &radio_gain);
18651
18652                         mdelay(4000);
18653                         pi->nphy_bb_mult_save = 0;
18654                         wlc_phy_stopplayback_nphy(pi);
18655                 }
18656         }
18657
18658         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18659         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18660
18661         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18662
18663         write_phy_reg(pi, 0x01, orig_BBConfig);
18664
18665         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18666         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18667         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18668         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18669
18670         pi->phyhang_avoid = phyhang_avoid_state;
18671
18672         if (pi->phyhang_avoid)
18673                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18674 }
18675
18676 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18677 {
18678         void *tbl_ptr;
18679         int coreNum;
18680         u16 *txcal_radio_regs = NULL;
18681
18682         if (pi->phyhang_avoid)
18683                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18684
18685         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18686
18687                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18688                                           &pi->calibration_cache.
18689                                           rxcal_coeffs_2G);
18690
18691                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18692                         txcal_radio_regs =
18693                                 pi->calibration_cache.txcal_radio_regs_2G;
18694                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18695
18696                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18697                                 read_radio_reg(pi,
18698                                                RADIO_2056_TX_LOFT_FINE_I |
18699                                                RADIO_2056_TX0);
18700                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18701                                 read_radio_reg(pi,
18702                                                RADIO_2056_TX_LOFT_FINE_Q |
18703                                                RADIO_2056_TX0);
18704                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18705                                 read_radio_reg(pi,
18706                                                RADIO_2056_TX_LOFT_FINE_I |
18707                                                RADIO_2056_TX1);
18708                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18709                                 read_radio_reg(pi,
18710                                                RADIO_2056_TX_LOFT_FINE_Q |
18711                                                RADIO_2056_TX1);
18712
18713                         pi->calibration_cache.txcal_radio_regs_2G[4] =
18714                                 read_radio_reg(pi,
18715                                                RADIO_2056_TX_LOFT_COARSE_I |
18716                                                RADIO_2056_TX0);
18717                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18718                                 read_radio_reg(pi,
18719                                                RADIO_2056_TX_LOFT_COARSE_Q |
18720                                                RADIO_2056_TX0);
18721                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18722                                 read_radio_reg(pi,
18723                                                RADIO_2056_TX_LOFT_COARSE_I |
18724                                                RADIO_2056_TX1);
18725                         pi->calibration_cache.txcal_radio_regs_2G[7] =
18726                                 read_radio_reg(pi,
18727                                                RADIO_2056_TX_LOFT_COARSE_Q |
18728                                                RADIO_2056_TX1);
18729                 } else {
18730                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18731                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18732                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18733                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18734                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18735                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18736                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18737                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18738                 }
18739
18740                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18741                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18742         } else {
18743
18744                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18745                                           &pi->calibration_cache.
18746                                           rxcal_coeffs_5G);
18747
18748                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18749                         txcal_radio_regs =
18750                                 pi->calibration_cache.txcal_radio_regs_5G;
18751                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18752
18753                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18754                                 read_radio_reg(pi,
18755                                                RADIO_2056_TX_LOFT_FINE_I |
18756                                                RADIO_2056_TX0);
18757                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18758                                 read_radio_reg(pi,
18759                                                RADIO_2056_TX_LOFT_FINE_Q |
18760                                                RADIO_2056_TX0);
18761                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18762                                 read_radio_reg(pi,
18763                                                RADIO_2056_TX_LOFT_FINE_I |
18764                                                RADIO_2056_TX1);
18765                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18766                                 read_radio_reg(pi,
18767                                                RADIO_2056_TX_LOFT_FINE_Q |
18768                                                RADIO_2056_TX1);
18769
18770                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18771                                 read_radio_reg(pi,
18772                                                RADIO_2056_TX_LOFT_COARSE_I |
18773                                                RADIO_2056_TX0);
18774                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18775                                 read_radio_reg(pi,
18776                                                RADIO_2056_TX_LOFT_COARSE_Q |
18777                                                RADIO_2056_TX0);
18778                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18779                                 read_radio_reg(pi,
18780                                                RADIO_2056_TX_LOFT_COARSE_I |
18781                                                RADIO_2056_TX1);
18782                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18783                                 read_radio_reg(pi,
18784                                                RADIO_2056_TX_LOFT_COARSE_Q |
18785                                                RADIO_2056_TX1);
18786                 } else {
18787                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18788                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18789                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18790                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18791                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18792                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18793                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18794                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18795                 }
18796
18797                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18798                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18799         }
18800         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18801                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18802
18803                         txcal_radio_regs[2 * coreNum] =
18804                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18805                                                 LOFT_FINE_I);
18806                         txcal_radio_regs[2 * coreNum + 1] =
18807                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18808                                                 LOFT_FINE_Q);
18809
18810                         txcal_radio_regs[2 * coreNum + 4] =
18811                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18812                                                 LOFT_COARSE_I);
18813                         txcal_radio_regs[2 * coreNum + 5] =
18814                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18815                                                 LOFT_COARSE_Q);
18816                 }
18817         }
18818
18819         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18820
18821         if (pi->phyhang_avoid)
18822                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18823 }
18824
18825 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18826 {
18827         struct nphy_iq_comp tx_comp;
18828
18829         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18830
18831         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18832         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18833         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18834         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18835 }
18836
18837 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18838 {
18839         u16 *loft_comp;
18840         u16 txcal_coeffs_bphy[4];
18841         u16 *tbl_ptr;
18842         int coreNum;
18843         u16 *txcal_radio_regs = NULL;
18844
18845         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18846                 if (pi->nphy_iqcal_chanspec_2G == 0)
18847                         return;
18848
18849                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18850                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18851         } else {
18852                 if (pi->nphy_iqcal_chanspec_5G == 0)
18853                         return;
18854
18855                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18856                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18857         }
18858
18859         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18860
18861         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18862                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18863                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18864                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18865                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18866         } else {
18867                 txcal_coeffs_bphy[0] = 0;
18868                 txcal_coeffs_bphy[1] = 0;
18869                 txcal_coeffs_bphy[2] = 0;
18870                 txcal_coeffs_bphy[3] = 0;
18871         }
18872
18873         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18874                                  txcal_coeffs_bphy);
18875
18876         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18877
18878         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18879
18880         if (NREV_LT(pi->pubpi.phy_rev, 2))
18881                 wlc_phy_tx_iq_war_nphy(pi);
18882
18883         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18884                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18885                         txcal_radio_regs =
18886                                 pi->calibration_cache.txcal_radio_regs_2G;
18887                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18888
18889                         write_radio_reg(pi,
18890                                         RADIO_2056_TX_LOFT_FINE_I |
18891                                         RADIO_2056_TX0,
18892                                         pi->calibration_cache.
18893                                         txcal_radio_regs_2G[0]);
18894                         write_radio_reg(pi,
18895                                         RADIO_2056_TX_LOFT_FINE_Q |
18896                                         RADIO_2056_TX0,
18897                                         pi->calibration_cache.
18898                                         txcal_radio_regs_2G[1]);
18899                         write_radio_reg(pi,
18900                                         RADIO_2056_TX_LOFT_FINE_I |
18901                                         RADIO_2056_TX1,
18902                                         pi->calibration_cache.
18903                                         txcal_radio_regs_2G[2]);
18904                         write_radio_reg(pi,
18905                                         RADIO_2056_TX_LOFT_FINE_Q |
18906                                         RADIO_2056_TX1,
18907                                         pi->calibration_cache.
18908                                         txcal_radio_regs_2G[3]);
18909
18910                         write_radio_reg(pi,
18911                                         RADIO_2056_TX_LOFT_COARSE_I |
18912                                         RADIO_2056_TX0,
18913                                         pi->calibration_cache.
18914                                         txcal_radio_regs_2G[4]);
18915                         write_radio_reg(pi,
18916                                         RADIO_2056_TX_LOFT_COARSE_Q |
18917                                         RADIO_2056_TX0,
18918                                         pi->calibration_cache.
18919                                         txcal_radio_regs_2G[5]);
18920                         write_radio_reg(pi,
18921                                         RADIO_2056_TX_LOFT_COARSE_I |
18922                                         RADIO_2056_TX1,
18923                                         pi->calibration_cache.
18924                                         txcal_radio_regs_2G[6]);
18925                         write_radio_reg(pi,
18926                                         RADIO_2056_TX_LOFT_COARSE_Q |
18927                                         RADIO_2056_TX1,
18928                                         pi->calibration_cache.
18929                                         txcal_radio_regs_2G[7]);
18930                 } else {
18931                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18932                                         pi->calibration_cache.
18933                                         txcal_radio_regs_2G[0]);
18934                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18935                                         pi->calibration_cache.
18936                                         txcal_radio_regs_2G[1]);
18937                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18938                                         pi->calibration_cache.
18939                                         txcal_radio_regs_2G[2]);
18940                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18941                                         pi->calibration_cache.
18942                                         txcal_radio_regs_2G[3]);
18943                 }
18944
18945                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18946                                           &pi->calibration_cache.
18947                                           rxcal_coeffs_2G);
18948         } else {
18949                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18950                         txcal_radio_regs =
18951                                 pi->calibration_cache.txcal_radio_regs_5G;
18952                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18953
18954                         write_radio_reg(pi,
18955                                         RADIO_2056_TX_LOFT_FINE_I |
18956                                         RADIO_2056_TX0,
18957                                         pi->calibration_cache.
18958                                         txcal_radio_regs_5G[0]);
18959                         write_radio_reg(pi,
18960                                         RADIO_2056_TX_LOFT_FINE_Q |
18961                                         RADIO_2056_TX0,
18962                                         pi->calibration_cache.
18963                                         txcal_radio_regs_5G[1]);
18964                         write_radio_reg(pi,
18965                                         RADIO_2056_TX_LOFT_FINE_I |
18966                                         RADIO_2056_TX1,
18967                                         pi->calibration_cache.
18968                                         txcal_radio_regs_5G[2]);
18969                         write_radio_reg(pi,
18970                                         RADIO_2056_TX_LOFT_FINE_Q |
18971                                         RADIO_2056_TX1,
18972                                         pi->calibration_cache.
18973                                         txcal_radio_regs_5G[3]);
18974
18975                         write_radio_reg(pi,
18976                                         RADIO_2056_TX_LOFT_COARSE_I |
18977                                         RADIO_2056_TX0,
18978                                         pi->calibration_cache.
18979                                         txcal_radio_regs_5G[4]);
18980                         write_radio_reg(pi,
18981                                         RADIO_2056_TX_LOFT_COARSE_Q |
18982                                         RADIO_2056_TX0,
18983                                         pi->calibration_cache.
18984                                         txcal_radio_regs_5G[5]);
18985                         write_radio_reg(pi,
18986                                         RADIO_2056_TX_LOFT_COARSE_I |
18987                                         RADIO_2056_TX1,
18988                                         pi->calibration_cache.
18989                                         txcal_radio_regs_5G[6]);
18990                         write_radio_reg(pi,
18991                                         RADIO_2056_TX_LOFT_COARSE_Q |
18992                                         RADIO_2056_TX1,
18993                                         pi->calibration_cache.
18994                                         txcal_radio_regs_5G[7]);
18995                 } else {
18996                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18997                                         pi->calibration_cache.
18998                                         txcal_radio_regs_5G[0]);
18999                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19000                                         pi->calibration_cache.
19001                                         txcal_radio_regs_5G[1]);
19002                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19003                                         pi->calibration_cache.
19004                                         txcal_radio_regs_5G[2]);
19005                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19006                                         pi->calibration_cache.
19007                                         txcal_radio_regs_5G[3]);
19008                 }
19009
19010                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19011                                           &pi->calibration_cache.
19012                                           rxcal_coeffs_5G);
19013         }
19014
19015         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19016                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19017
19018                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19019                                          LOFT_FINE_I,
19020                                          txcal_radio_regs[2 * coreNum]);
19021                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19022                                          LOFT_FINE_Q,
19023                                          txcal_radio_regs[2 * coreNum + 1]);
19024
19025                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19026                                          LOFT_COARSE_I,
19027                                          txcal_radio_regs[2 * coreNum + 4]);
19028                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19029                                          LOFT_COARSE_Q,
19030                                          txcal_radio_regs[2 * coreNum + 5]);
19031                 }
19032         }
19033 }
19034
19035 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19036 {
19037         u32 idx;
19038         u16 iqloCalbuf[7];
19039         u32 iqcomp, locomp, curr_locomp;
19040         s8 locomp_i, locomp_q;
19041         s8 curr_locomp_i, curr_locomp_q;
19042         u32 tbl_id, tbl_len, tbl_offset;
19043         u32 regval[128];
19044
19045         if (pi->phyhang_avoid)
19046                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19047
19048         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19049
19050         tbl_len = 128;
19051         tbl_offset = 320;
19052         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19053              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19054                 iqcomp =
19055                         (tbl_id ==
19056                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19057                         (iqloCalbuf[1] & 0x3ff)
19058                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19059                         (iqloCalbuf[3] & 0x3ff);
19060
19061                 for (idx = 0; idx < tbl_len; idx++)
19062                         regval[idx] = iqcomp;
19063                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19064                                          regval);
19065         }
19066
19067         tbl_offset = 448;
19068         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19069              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19070
19071                 locomp =
19072                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19073                 locomp_i = (s8) ((locomp >> 8) & 0xff);
19074                 locomp_q = (s8) ((locomp) & 0xff);
19075                 for (idx = 0; idx < tbl_len; idx++) {
19076                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19077                                 curr_locomp_i = locomp_i;
19078                                 curr_locomp_q = locomp_q;
19079                         } else {
19080                                 curr_locomp_i = (s8) ((locomp_i *
19081                                                        nphy_tpc_loscale[idx] +
19082                                                        128) >> 8);
19083                                 curr_locomp_q =
19084                                         (s8) ((locomp_q *
19085                                                nphy_tpc_loscale[idx] +
19086                                                128) >> 8);
19087                         }
19088                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19089                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
19090                         regval[idx] = curr_locomp;
19091                 }
19092                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19093                                          regval);
19094         }
19095
19096         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19097
19098                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19099                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19100         }
19101
19102         if (pi->phyhang_avoid)
19103                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19104 }
19105
19106 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19107 {
19108         u8 tx_lpf_bw = 0;
19109
19110         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19111                 if (CHSPEC_IS40(pi->radio_chanspec))
19112                         tx_lpf_bw = 3;
19113                 else
19114                         tx_lpf_bw = 1;
19115
19116                 if (PHY_IPA(pi)) {
19117                         if (CHSPEC_IS40(pi->radio_chanspec))
19118                                 tx_lpf_bw = 5;
19119                         else
19120                                 tx_lpf_bw = 4;
19121                 }
19122
19123                 write_phy_reg(pi, 0xe8,
19124                               (tx_lpf_bw << 0) |
19125                               (tx_lpf_bw << 3) |
19126                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19127
19128                 if (PHY_IPA(pi)) {
19129
19130                         if (CHSPEC_IS40(pi->radio_chanspec))
19131                                 tx_lpf_bw = 4;
19132                         else
19133                                 tx_lpf_bw = 1;
19134
19135                         write_phy_reg(pi, 0xe9,
19136                                       (tx_lpf_bw << 0) |
19137                                       (tx_lpf_bw << 3) |
19138                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19139                 }
19140         }
19141 }
19142
19143 static void
19144 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19145 {
19146         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19147                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19148                     CHSPEC_IS40(pi->radio_chanspec)) {
19149                         if (!pi->nphy_anarxlpf_adjusted) {
19150                                 write_radio_reg(pi,
19151                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19152                                                  RADIO_2056_RX0),
19153                                                 ((pi->nphy_rccal_value +
19154                                                   reduction_factr) | 0x80));
19155
19156                                 pi->nphy_anarxlpf_adjusted = true;
19157                         }
19158                 } else {
19159                         if (pi->nphy_anarxlpf_adjusted) {
19160                                 write_radio_reg(pi,
19161                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19162                                                  RADIO_2056_RX0),
19163                                                 (pi->nphy_rccal_value | 0x80));
19164
19165                                 pi->nphy_anarxlpf_adjusted = false;
19166                         }
19167                 }
19168         }
19169 }
19170
19171 static void
19172 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19173                                  int *tone_id_buf, u32 *noise_var_buf)
19174 {
19175         int i;
19176         u32 offset;
19177         int tone_id;
19178         int tbllen =
19179                 CHSPEC_IS40(pi->radio_chanspec) ?
19180                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19181
19182         if (pi->nphy_noisevars_adjusted) {
19183                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19184                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
19185                         offset = (tone_id >= 0) ?
19186                                  ((tone_id *
19187                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
19188                         wlc_phy_table_write_nphy(
19189                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
19190                                 offset, 32,
19191                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19192                 }
19193
19194                 pi->nphy_saved_noisevars.bufcount = 0;
19195                 pi->nphy_noisevars_adjusted = false;
19196         }
19197
19198         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19199                 pi->nphy_saved_noisevars.bufcount = 0;
19200
19201                 for (i = 0; i < ntones; i++) {
19202                         tone_id = tone_id_buf[i];
19203                         offset = (tone_id >= 0) ?
19204                                  ((tone_id * 2) + 1) :
19205                                  (tbllen + (tone_id * 2) + 1);
19206                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19207                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19208                                                 offset, 32,
19209                                                 &pi->nphy_saved_noisevars.
19210                                                 min_noise_vars[i]);
19211                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19212                                                  offset, 32, &noise_var_buf[i]);
19213                         pi->nphy_saved_noisevars.bufcount++;
19214                 }
19215
19216                 pi->nphy_noisevars_adjusted = true;
19217         }
19218 }
19219
19220 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19221 {
19222         u16 regval;
19223
19224         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19225                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19226                     CHSPEC_IS40(pi->radio_chanspec)) {
19227                         if (!pi->nphy_crsminpwr_adjusted) {
19228                                 regval = read_phy_reg(pi, 0x27d);
19229                                 pi->nphy_crsminpwr[0] = regval & 0xff;
19230                                 regval &= 0xff00;
19231                                 regval |= (u16) minpwr;
19232                                 write_phy_reg(pi, 0x27d, regval);
19233
19234                                 regval = read_phy_reg(pi, 0x280);
19235                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19236                                 regval &= 0xff00;
19237                                 regval |= (u16) minpwr;
19238                                 write_phy_reg(pi, 0x280, regval);
19239
19240                                 regval = read_phy_reg(pi, 0x283);
19241                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19242                                 regval &= 0xff00;
19243                                 regval |= (u16) minpwr;
19244                                 write_phy_reg(pi, 0x283, regval);
19245
19246                                 pi->nphy_crsminpwr_adjusted = true;
19247                         }
19248                 } else {
19249                         if (pi->nphy_crsminpwr_adjusted) {
19250                                 regval = read_phy_reg(pi, 0x27d);
19251                                 regval &= 0xff00;
19252                                 regval |= pi->nphy_crsminpwr[0];
19253                                 write_phy_reg(pi, 0x27d, regval);
19254
19255                                 regval = read_phy_reg(pi, 0x280);
19256                                 regval &= 0xff00;
19257                                 regval |= pi->nphy_crsminpwr[1];
19258                                 write_phy_reg(pi, 0x280, regval);
19259
19260                                 regval = read_phy_reg(pi, 0x283);
19261                                 regval &= 0xff00;
19262                                 regval |= pi->nphy_crsminpwr[2];
19263                                 write_phy_reg(pi, 0x283, regval);
19264
19265                                 pi->nphy_crsminpwr_adjusted = false;
19266                         }
19267                 }
19268         }
19269 }
19270
19271 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19272 {
19273         u16 cur_channel = 0;
19274         int nphy_adj_tone_id_buf[] = { 57, 58 };
19275         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19276         bool isAdjustNoiseVar = false;
19277         uint numTonesAdjust = 0;
19278         u32 tempval = 0;
19279
19280         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19281                 if (pi->phyhang_avoid)
19282                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19283
19284                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19285
19286                 if (pi->nphy_gband_spurwar_en) {
19287
19288                         wlc_phy_adjust_rx_analpfbw_nphy(
19289                                 pi,
19290                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19291
19292                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19293                                 if ((cur_channel == 11)
19294                                     && CHSPEC_IS40(pi->radio_chanspec))
19295                                         wlc_phy_adjust_min_noisevar_nphy(
19296                                                 pi, 2,
19297                                                 nphy_adj_tone_id_buf,
19298                                                 nphy_adj_noise_var_buf);
19299                                 else
19300                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19301                                                                          NULL,
19302                                                                          NULL);
19303                         }
19304
19305                         wlc_phy_adjust_crsminpwr_nphy(pi,
19306                                                      NPHY_ADJUSTED_MINCRSPOWER);
19307                 }
19308
19309                 if ((pi->nphy_gband_spurwar2_en)
19310                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19311
19312                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19313                                 switch (cur_channel) {
19314                                 case 3:
19315                                         nphy_adj_tone_id_buf[0] = 57;
19316                                         nphy_adj_tone_id_buf[1] = 58;
19317                                         nphy_adj_noise_var_buf[0] = 0x22f;
19318                                         nphy_adj_noise_var_buf[1] = 0x25f;
19319                                         isAdjustNoiseVar = true;
19320                                         break;
19321                                 case 4:
19322                                         nphy_adj_tone_id_buf[0] = 41;
19323                                         nphy_adj_tone_id_buf[1] = 42;
19324                                         nphy_adj_noise_var_buf[0] = 0x22f;
19325                                         nphy_adj_noise_var_buf[1] = 0x25f;
19326                                         isAdjustNoiseVar = true;
19327                                         break;
19328                                 case 5:
19329                                         nphy_adj_tone_id_buf[0] = 25;
19330                                         nphy_adj_tone_id_buf[1] = 26;
19331                                         nphy_adj_noise_var_buf[0] = 0x24f;
19332                                         nphy_adj_noise_var_buf[1] = 0x25f;
19333                                         isAdjustNoiseVar = true;
19334                                         break;
19335                                 case 6:
19336                                         nphy_adj_tone_id_buf[0] = 9;
19337                                         nphy_adj_tone_id_buf[1] = 10;
19338                                         nphy_adj_noise_var_buf[0] = 0x22f;
19339                                         nphy_adj_noise_var_buf[1] = 0x24f;
19340                                         isAdjustNoiseVar = true;
19341                                         break;
19342                                 case 7:
19343                                         nphy_adj_tone_id_buf[0] = 121;
19344                                         nphy_adj_tone_id_buf[1] = 122;
19345                                         nphy_adj_noise_var_buf[0] = 0x18f;
19346                                         nphy_adj_noise_var_buf[1] = 0x24f;
19347                                         isAdjustNoiseVar = true;
19348                                         break;
19349                                 case 8:
19350                                         nphy_adj_tone_id_buf[0] = 105;
19351                                         nphy_adj_tone_id_buf[1] = 106;
19352                                         nphy_adj_noise_var_buf[0] = 0x22f;
19353                                         nphy_adj_noise_var_buf[1] = 0x25f;
19354                                         isAdjustNoiseVar = true;
19355                                         break;
19356                                 case 9:
19357                                         nphy_adj_tone_id_buf[0] = 89;
19358                                         nphy_adj_tone_id_buf[1] = 90;
19359                                         nphy_adj_noise_var_buf[0] = 0x22f;
19360                                         nphy_adj_noise_var_buf[1] = 0x24f;
19361                                         isAdjustNoiseVar = true;
19362                                         break;
19363                                 case 10:
19364                                         nphy_adj_tone_id_buf[0] = 73;
19365                                         nphy_adj_tone_id_buf[1] = 74;
19366                                         nphy_adj_noise_var_buf[0] = 0x22f;
19367                                         nphy_adj_noise_var_buf[1] = 0x24f;
19368                                         isAdjustNoiseVar = true;
19369                                         break;
19370                                 default:
19371                                         isAdjustNoiseVar = false;
19372                                         break;
19373                                 }
19374                         }
19375
19376                         if (isAdjustNoiseVar) {
19377                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19378                                                 sizeof(nphy_adj_tone_id_buf[0]);
19379
19380                                 wlc_phy_adjust_min_noisevar_nphy(
19381                                         pi,
19382                                         numTonesAdjust,
19383                                         nphy_adj_tone_id_buf,
19384                                         nphy_adj_noise_var_buf);
19385
19386                                 tempval = 0;
19387
19388                         } else {
19389                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19390                                                                  NULL);
19391                         }
19392                 }
19393
19394                 if ((pi->nphy_aband_spurwar_en) &&
19395                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19396                         switch (cur_channel) {
19397                         case 54:
19398                                 nphy_adj_tone_id_buf[0] = 32;
19399                                 nphy_adj_noise_var_buf[0] = 0x25f;
19400                                 break;
19401                         case 38:
19402                         case 102:
19403                         case 118:
19404                                 nphy_adj_tone_id_buf[0] = 0;
19405                                 nphy_adj_noise_var_buf[0] = 0x0;
19406                                 break;
19407                         case 134:
19408                                 nphy_adj_tone_id_buf[0] = 32;
19409                                 nphy_adj_noise_var_buf[0] = 0x21f;
19410                                 break;
19411                         case 151:
19412                                 nphy_adj_tone_id_buf[0] = 16;
19413                                 nphy_adj_noise_var_buf[0] = 0x23f;
19414                                 break;
19415                         case 153:
19416                         case 161:
19417                                 nphy_adj_tone_id_buf[0] = 48;
19418                                 nphy_adj_noise_var_buf[0] = 0x23f;
19419                                 break;
19420                         default:
19421                                 nphy_adj_tone_id_buf[0] = 0;
19422                                 nphy_adj_noise_var_buf[0] = 0x0;
19423                                 break;
19424                         }
19425
19426                         if (nphy_adj_tone_id_buf[0]
19427                             && nphy_adj_noise_var_buf[0])
19428                                 wlc_phy_adjust_min_noisevar_nphy(
19429                                         pi, 1,
19430                                         nphy_adj_tone_id_buf,
19431                                         nphy_adj_noise_var_buf);
19432                         else
19433                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19434                                                                  NULL);
19435                 }
19436
19437                 if (pi->phyhang_avoid)
19438                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19439         }
19440 }
19441
19442 void wlc_phy_init_nphy(struct brcms_phy *pi)
19443 {
19444         u16 val;
19445         u16 clip1_ths[2];
19446         struct nphy_txgains target_gain;
19447         u8 tx_pwr_ctrl_state;
19448         bool do_nphy_cal = false;
19449         uint core;
19450         u32 d11_clk_ctl_st;
19451         bool do_rssi_cal = false;
19452
19453         core = 0;
19454
19455         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19456                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19457
19458         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19459             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19460              (pi->sh->chippkg == BCM4718_PKG_ID))) {
19461                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19462                     (CHSPEC_IS2G(pi->radio_chanspec)))
19463                         ai_cc_reg(pi->sh->sih,
19464                                   offsetof(struct chipcregs, chipcontrol),
19465                                   0x40, 0x40);
19466         }
19467
19468         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19469             CHSPEC_IS40(pi->radio_chanspec)) {
19470
19471                 d11_clk_ctl_st = bcma_read32(pi->d11core,
19472                                              D11REGOFFS(clk_ctl_st));
19473                 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19474                             ~(CCS_FORCEHT | CCS_HTAREQ));
19475
19476                 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19477                              d11_clk_ctl_st);
19478         }
19479
19480         pi->use_int_tx_iqlo_cal_nphy =
19481                 (PHY_IPA(pi) ||
19482                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19483                   (NREV_GE(pi->pubpi.phy_rev, 5)
19484                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19485
19486         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19487
19488         pi->nphy_deaf_count = 0;
19489
19490         wlc_phy_tbl_init_nphy(pi);
19491
19492         pi->nphy_crsminpwr_adjusted = false;
19493         pi->nphy_noisevars_adjusted = false;
19494
19495         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19496                 write_phy_reg(pi, 0xe7, 0);
19497                 write_phy_reg(pi, 0xec, 0);
19498                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19499                         write_phy_reg(pi, 0x342, 0);
19500                         write_phy_reg(pi, 0x343, 0);
19501                         write_phy_reg(pi, 0x346, 0);
19502                         write_phy_reg(pi, 0x347, 0);
19503                 }
19504                 write_phy_reg(pi, 0xe5, 0);
19505                 write_phy_reg(pi, 0xe6, 0);
19506         } else {
19507                 write_phy_reg(pi, 0xec, 0);
19508         }
19509
19510         write_phy_reg(pi, 0x91, 0);
19511         write_phy_reg(pi, 0x92, 0);
19512         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19513                 write_phy_reg(pi, 0x93, 0);
19514                 write_phy_reg(pi, 0x94, 0);
19515         }
19516
19517         and_phy_reg(pi, 0xa1, ~3);
19518
19519         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19520                 write_phy_reg(pi, 0x8f, 0);
19521                 write_phy_reg(pi, 0xa5, 0);
19522         } else {
19523                 write_phy_reg(pi, 0xa5, 0);
19524         }
19525
19526         if (NREV_IS(pi->pubpi.phy_rev, 2))
19527                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19528         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19529                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19530
19531         write_phy_reg(pi, 0x203, 32);
19532         write_phy_reg(pi, 0x201, 32);
19533
19534         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19535                 write_phy_reg(pi, 0x20d, 160);
19536         else
19537                 write_phy_reg(pi, 0x20d, 184);
19538
19539         write_phy_reg(pi, 0x13a, 200);
19540
19541         write_phy_reg(pi, 0x70, 80);
19542
19543         write_phy_reg(pi, 0x1ff, 48);
19544
19545         if (NREV_LT(pi->pubpi.phy_rev, 8))
19546                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19547
19548         wlc_phy_stf_chain_upd_nphy(pi);
19549
19550         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19551                 write_phy_reg(pi, 0x180, 0xaa8);
19552                 write_phy_reg(pi, 0x181, 0x9a4);
19553         }
19554
19555         if (PHY_IPA(pi)) {
19556                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19557
19558                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19559                                     0x29b, (0x1 << 0), (1) << 0);
19560
19561                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19562                                     0x29c, (0x1ff << 7),
19563                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19564
19565                 }
19566
19567                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19568         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19569                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19570         }
19571
19572         wlc_phy_workarounds_nphy(pi);
19573
19574         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19575
19576         val = read_phy_reg(pi, 0x01);
19577         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19578         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19579         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19580
19581         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19582
19583         wlc_phy_pa_override_nphy(pi, OFF);
19584         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19585         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19586         wlc_phy_pa_override_nphy(pi, ON);
19587
19588         wlc_phy_classifier_nphy(pi, 0, 0);
19589         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19590
19591         if (CHSPEC_IS2G(pi->radio_chanspec))
19592                 wlc_phy_bphy_init_nphy(pi);
19593
19594         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19595         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19596
19597         wlc_phy_txpwr_fixpower_nphy(pi);
19598
19599         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19600
19601         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19602
19603         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19604                 u32 *tx_pwrctrl_tbl = NULL;
19605                 u16 idx;
19606                 s16 pga_gn = 0;
19607                 s16 pad_gn = 0;
19608                 s32 rfpwr_offset;
19609
19610                 if (PHY_IPA(pi)) {
19611                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19612                 } else {
19613                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19614                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19615                                         tx_pwrctrl_tbl =
19616                                                 nphy_tpc_5GHz_txgain_rev3;
19617                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19618                                         tx_pwrctrl_tbl =
19619                                                 (pi->srom_fem5g.extpagain ==
19620                                                  3) ?
19621                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19622                                                 nphy_tpc_5GHz_txgain_rev4;
19623                                 else
19624                                         tx_pwrctrl_tbl =
19625                                                 nphy_tpc_5GHz_txgain_rev5;
19626                         } else {
19627                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19628                                         if (pi->pubpi.radiorev == 5)
19629                                                 tx_pwrctrl_tbl =
19630                                                    nphy_tpc_txgain_epa_2057rev5;
19631                                         else if (pi->pubpi.radiorev == 3)
19632                                                 tx_pwrctrl_tbl =
19633                                                    nphy_tpc_txgain_epa_2057rev3;
19634                                 } else {
19635                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19636                                             (pi->srom_fem2g.extpagain == 3))
19637                                                 tx_pwrctrl_tbl =
19638                                                        nphy_tpc_txgain_HiPwrEPA;
19639                                         else
19640                                                 tx_pwrctrl_tbl =
19641                                                         nphy_tpc_txgain_rev3;
19642                                 }
19643                         }
19644                 }
19645
19646                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19647                                          192, 32, tx_pwrctrl_tbl);
19648                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19649                                          192, 32, tx_pwrctrl_tbl);
19650
19651                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19652
19653                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19654
19655                         for (idx = 0; idx < 128; idx++) {
19656                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19657                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19658                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19659                                                                  pad_gn);
19660                                 wlc_phy_table_write_nphy(
19661                                         pi,
19662                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19663                                         1, 576 + idx, 32,
19664                                         &rfpwr_offset);
19665                                 wlc_phy_table_write_nphy(
19666                                         pi,
19667                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19668                                         1, 576 + idx, 32,
19669                                         &rfpwr_offset);
19670                         }
19671                 } else {
19672
19673                         for (idx = 0; idx < 128; idx++) {
19674                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19675                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19676                                         rfpwr_offset = (s16)
19677                                                  nphy_papd_pga_gain_delta_ipa_2g
19678                                                                        [pga_gn];
19679                                 else
19680                                         rfpwr_offset = (s16)
19681                                                  nphy_papd_pga_gain_delta_ipa_5g
19682                                                                        [pga_gn];
19683
19684                                 wlc_phy_table_write_nphy(
19685                                         pi,
19686                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19687                                         1, 576 + idx, 32,
19688                                         &rfpwr_offset);
19689                                 wlc_phy_table_write_nphy(
19690                                         pi,
19691                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19692                                         1, 576 + idx, 32,
19693                                         &rfpwr_offset);
19694                         }
19695
19696                 }
19697         } else {
19698
19699                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19700                                          192, 32, nphy_tpc_txgain);
19701                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19702                                          192, 32, nphy_tpc_txgain);
19703         }
19704
19705         if (pi->sh->phyrxchain != 0x3)
19706                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19707                                              pi->sh->phyrxchain);
19708
19709         if (PHY_PERICAL_MPHASE_PENDING(pi))
19710                 wlc_phy_cal_perical_mphase_restart(pi);
19711
19712         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19713                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19714                               (pi->nphy_rssical_chanspec_2G == 0) :
19715                               (pi->nphy_rssical_chanspec_5G == 0);
19716
19717                 if (do_rssi_cal)
19718                         wlc_phy_rssi_cal_nphy(pi);
19719                 else
19720                         wlc_phy_restore_rssical_nphy(pi);
19721         } else {
19722                 wlc_phy_rssi_cal_nphy(pi);
19723         }
19724
19725         if (!SCAN_RM_IN_PROGRESS(pi))
19726                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19727                               (pi->nphy_iqcal_chanspec_2G == 0) :
19728                               (pi->nphy_iqcal_chanspec_5G == 0);
19729
19730         if (!pi->do_initcal)
19731                 do_nphy_cal = false;
19732
19733         if (do_nphy_cal) {
19734
19735                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19736
19737                 if (pi->antsel_type == ANTSEL_2x3)
19738                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19739                                             true);
19740
19741                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19742                         wlc_phy_rssi_cal_nphy(pi);
19743
19744                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19745                                 pi->nphy_cal_orig_pwr_idx[0] =
19746                                         pi->nphy_txpwrindex[PHY_CORE_0]
19747                                         .
19748                                         index_internal;
19749                                 pi->nphy_cal_orig_pwr_idx[1] =
19750                                         pi->nphy_txpwrindex[PHY_CORE_1]
19751                                         .
19752                                         index_internal;
19753
19754                                 wlc_phy_precal_txgain_nphy(pi);
19755                                 target_gain =
19756                                         wlc_phy_get_tx_gain_nphy(pi);
19757                         }
19758
19759                         if (wlc_phy_cal_txiqlo_nphy
19760                                     (pi, target_gain, true,
19761                                     false) == 0) {
19762                                 if (wlc_phy_cal_rxiq_nphy
19763                                             (pi, target_gain, 2,
19764                                             false) == 0)
19765                                         wlc_phy_savecal_nphy(pi);
19766
19767                         }
19768                 } else if (pi->mphase_cal_phase_id ==
19769                            MPHASE_CAL_STATE_IDLE) {
19770                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19771                                             PHY_PERICAL_PHYINIT);
19772                 }
19773         } else {
19774                 wlc_phy_restorecal_nphy(pi);
19775         }
19776
19777         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19778
19779         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19780
19781         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19782
19783         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19784
19785                 write_phy_reg(pi, 0x70, 50);
19786
19787         wlc_phy_txlpfbw_nphy(pi);
19788
19789         wlc_phy_spurwar_nphy(pi);
19790
19791 }
19792
19793 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19794 {
19795         u16 val;
19796
19797         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19798
19799         val = read_phy_reg(pi, 0x01);
19800         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19801         udelay(1);
19802         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19803
19804         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19805
19806         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19807 }
19808
19809 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19810 {
19811         u16 rfctrlintc_override_val;
19812
19813         if (!en) {
19814
19815                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19816                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19817
19818                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19819                         rfctrlintc_override_val = 0x1480;
19820                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19821                         rfctrlintc_override_val =
19822                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19823                 else
19824                         rfctrlintc_override_val =
19825                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19826
19827                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19828                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19829         } else {
19830                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19831                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19832         }
19833
19834 }
19835
19836 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19837 {
19838
19839         u16 txrx_chain =
19840                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19841         bool CoreActv_override = false;
19842
19843         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19844                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19845                 CoreActv_override = true;
19846
19847                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19848                         and_phy_reg(pi, 0xa0, ~0x20);
19849         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19850                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19851                 CoreActv_override = true;
19852
19853                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19854                         or_phy_reg(pi, 0xa0, 0x20);
19855         }
19856
19857         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19858
19859         if (CoreActv_override) {
19860                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19861                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19862         } else {
19863                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19864                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19865         }
19866 }
19867
19868 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19869 {
19870         u16 regval;
19871         u16 tbl_buf[16];
19872         uint i;
19873         struct brcms_phy *pi = (struct brcms_phy *) pih;
19874         u16 tbl_opcode;
19875         bool suspend;
19876
19877         pi->sh->phyrxchain = rxcore_bitmask;
19878
19879         if (!pi->sh->clk)
19880                 return;
19881
19882         suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19883                          MCTL_EN_MAC));
19884         if (!suspend)
19885                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19886
19887         if (pi->phyhang_avoid)
19888                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19889
19890         regval = read_phy_reg(pi, 0xa2);
19891         regval &= ~(0xf << 4);
19892         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19893         write_phy_reg(pi, 0xa2, regval);
19894
19895         if ((rxcore_bitmask & 0x3) != 0x3) {
19896
19897                 write_phy_reg(pi, 0x20e, 1);
19898
19899                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19900                         if (pi->rx2tx_biasentry == -1) {
19901                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19902                                                         ARRAY_SIZE(tbl_buf), 80,
19903                                                         16, tbl_buf);
19904
19905                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19906                                         if (tbl_buf[i] ==
19907                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19908                                                 pi->rx2tx_biasentry = (u8) i;
19909                                                 tbl_opcode =
19910                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19911                                                 wlc_phy_table_write_nphy(
19912                                                         pi,
19913                                                         NPHY_TBL_ID_RFSEQ,
19914                                                         1, i,
19915                                                         16,
19916                                                         &tbl_opcode);
19917                                                 break;
19918                                         } else if (tbl_buf[i] ==
19919                                                    NPHY_REV3_RFSEQ_CMD_END)
19920                                                 break;
19921                                 }
19922                         }
19923                 }
19924         } else {
19925
19926                 write_phy_reg(pi, 0x20e, 30);
19927
19928                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19929                         if (pi->rx2tx_biasentry != -1) {
19930                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19931                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19932                                                          1, pi->rx2tx_biasentry,
19933                                                          16, &tbl_opcode);
19934                                 pi->rx2tx_biasentry = -1;
19935                         }
19936                 }
19937         }
19938
19939         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19940
19941         if (pi->phyhang_avoid)
19942                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19943
19944         if (!suspend)
19945                 wlapi_enable_mac(pi->sh->physhim);
19946 }
19947
19948 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19949 {
19950         u16 regval, rxen_bits;
19951         struct brcms_phy *pi = (struct brcms_phy *) pih;
19952
19953         regval = read_phy_reg(pi, 0xa2);
19954         rxen_bits = (regval >> 4) & 0xf;
19955
19956         return (u8) rxen_bits;
19957 }
19958
19959 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19960 {
19961         return PHY_IPA(pi);
19962 }
19963
19964 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19965 {
19966 }
19967
19968 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19969 {
19970
19971         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19972         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19973
19974         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19975         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19976
19977 }
19978
19979 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19980 {
19981         struct radio_20xx_regs *regs_2057_ptr = NULL;
19982
19983         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19984                 regs_2057_ptr = regs_2057_rev4;
19985         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19986                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19987                 switch (pi->pubpi.radiorev) {
19988                 case 5:
19989
19990                         if (pi->pubpi.radiover == 0x0)
19991                                 regs_2057_ptr = regs_2057_rev5;
19992                         else if (pi->pubpi.radiover == 0x1)
19993                                 regs_2057_ptr = regs_2057_rev5v1;
19994                         else
19995                                 break;
19996
19997                 case 7:
19998
19999                         regs_2057_ptr = regs_2057_rev7;
20000                         break;
20001
20002                 case 8:
20003
20004                         regs_2057_ptr = regs_2057_rev8;
20005                         break;
20006
20007                 default:
20008                         break;
20009                 }
20010         }
20011
20012         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
20013 }
20014
20015 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
20016 {
20017         u16 rcal_reg = 0;
20018         int i;
20019
20020         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20021
20022                 if (pi->pubpi.radiorev == 5) {
20023
20024                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
20025
20026                         udelay(10);
20027
20028                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
20029                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20030                                       0x1);
20031                 }
20032                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20033
20034                 udelay(10);
20035
20036                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20037
20038                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20039                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20040                         if (rcal_reg & 0x1)
20041                                 break;
20042
20043                         udelay(100);
20044                 }
20045
20046                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20047                          "HW error: radio calib2"))
20048                         return 0;
20049
20050                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20051
20052                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20053
20054                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20055                 if (pi->pubpi.radiorev == 5) {
20056
20057                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20058                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20059                                       0x0);
20060                 }
20061
20062                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20063
20064                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20065                                       rcal_reg);
20066                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20067                                       rcal_reg << 2);
20068                 }
20069
20070         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20071                 u16 savereg;
20072
20073                 savereg =
20074                         read_radio_reg(
20075                                 pi,
20076                                 RADIO_2056_SYN_PLL_MAST2 |
20077                                 RADIO_2056_SYN);
20078                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20079                                 savereg | 0x7);
20080                 udelay(10);
20081
20082                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20083                                 0x1);
20084                 udelay(10);
20085
20086                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20087                                 0x9);
20088
20089                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20090                         rcal_reg = read_radio_reg(
20091                                 pi,
20092                                 RADIO_2056_SYN_RCAL_CODE_OUT |
20093                                 RADIO_2056_SYN);
20094                         if (rcal_reg & 0x80)
20095                                 break;
20096
20097                         udelay(100);
20098                 }
20099
20100                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20101                          "HW error: radio calib3"))
20102                         return 0;
20103
20104                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20105                                 0x1);
20106
20107                 rcal_reg =
20108                         read_radio_reg(pi,
20109                                        RADIO_2056_SYN_RCAL_CODE_OUT |
20110                                        RADIO_2056_SYN);
20111
20112                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20113                                 0x0);
20114
20115                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20116                                 savereg);
20117
20118                 return rcal_reg & 0x1f;
20119         }
20120         return rcal_reg & 0x3e;
20121 }
20122
20123 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20124 {
20125         u16 rccal_valid;
20126         int i;
20127         bool chip43226_6362A0;
20128
20129         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20130                             || (pi->pubpi.radiorev == 4)
20131                             || (pi->pubpi.radiorev == 6));
20132
20133         rccal_valid = 0;
20134         if (chip43226_6362A0) {
20135                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20136                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20137         } else {
20138                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20139
20140                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20141         }
20142         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20143         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20144
20145         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20146                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20147                 if (rccal_valid & 0x2)
20148                         break;
20149
20150                 udelay(500);
20151         }
20152
20153         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20154
20155         rccal_valid = 0;
20156         if (chip43226_6362A0) {
20157                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20158                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20159         } else {
20160                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20161
20162                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20163         }
20164         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20165         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20166
20167         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20168                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20169                 if (rccal_valid & 0x2)
20170                         break;
20171
20172                 udelay(500);
20173         }
20174
20175         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20176
20177         rccal_valid = 0;
20178         if (chip43226_6362A0) {
20179                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20180
20181                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20182                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20183         } else {
20184                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20185                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20186                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20187         }
20188         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20189
20190         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20191                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20192                 if (rccal_valid & 0x2)
20193                         break;
20194
20195                 udelay(500);
20196         }
20197
20198         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20199                 return 0;
20200
20201         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20202
20203         return rccal_valid;
20204 }
20205
20206 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20207 {
20208
20209         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20210
20211         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20212         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20213         mdelay(2);
20214         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20215         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20216
20217         if (pi->phy_init_por) {
20218                 wlc_phy_radio205x_rcal(pi);
20219                 wlc_phy_radio2057_rccal(pi);
20220         }
20221
20222         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20223 }
20224
20225 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20226 {
20227         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20228         const struct radio_regs *regs_TX_2056_ptr = NULL;
20229         const struct radio_regs *regs_RX_2056_ptr = NULL;
20230
20231         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20232                 regs_SYN_2056_ptr = regs_SYN_2056;
20233                 regs_TX_2056_ptr = regs_TX_2056;
20234                 regs_RX_2056_ptr = regs_RX_2056;
20235         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20236                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20237                 regs_TX_2056_ptr = regs_TX_2056_A1;
20238                 regs_RX_2056_ptr = regs_RX_2056_A1;
20239         } else {
20240                 switch (pi->pubpi.radiorev) {
20241                 case 5:
20242                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20243                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20244                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20245                         break;
20246
20247                 case 6:
20248                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20249                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20250                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20251                         break;
20252
20253                 case 7:
20254                 case 9:
20255                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20256                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20257                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20258                         break;
20259
20260                 case 8:
20261                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20262                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20263                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20264                         break;
20265
20266                 case 11:
20267                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20268                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20269                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20270                         break;
20271
20272                 default:
20273                         break;
20274                 }
20275         }
20276
20277         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20278
20279         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20280
20281         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20282
20283         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20284
20285         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20286 }
20287
20288 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20289 {
20290         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20291
20292         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20293         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20294         udelay(1000);
20295         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20296
20297         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20298             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20299                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20300         else
20301                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20302
20303         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20304
20305         if (pi->phy_init_por)
20306                 wlc_phy_radio205x_rcal(pi);
20307 }
20308
20309 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20310 {
20311
20312         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20313         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20314
20315         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20316 }
20317
20318 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20319 {
20320         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20321 }
20322
20323 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20324 {
20325
20326         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20327                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20328
20329         if (((pi->sh->sromrev >= 4)
20330              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20331             || ((pi->sh->sromrev < 4))) {
20332                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20333                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20334         }
20335
20336         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20337         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20338
20339         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20340                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20341
20342         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20343
20344         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20345
20346         udelay(1000);
20347
20348         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20349
20350         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20351                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20352
20353         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20354                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20355                  "HW error: radio calibration1\n"))
20356                 return;
20357
20358         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20359                       ~(RADIO_2055_CAL_LPO_ENABLE));
20360
20361         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20362
20363         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20364         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20365
20366         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20367         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20368
20369         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20370                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20371         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20372                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20373         if (pi->nphy_gain_boost) {
20374                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20375                               ~(RADIO_2055_GAINBST_DISABLE));
20376                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20377                               ~(RADIO_2055_GAINBST_DISABLE));
20378         } else {
20379                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20380                              RADIO_2055_GAINBST_DISABLE);
20381                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20382                              RADIO_2055_GAINBST_DISABLE);
20383         }
20384
20385         udelay(2);
20386 }
20387
20388 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20389 {
20390         if (on) {
20391                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20392                         if (!pi->radio_is_on) {
20393                                 wlc_phy_radio_preinit_205x(pi);
20394                                 wlc_phy_radio_init_2057(pi);
20395                                 wlc_phy_radio_postinit_2057(pi);
20396                         }
20397
20398                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20399                                              pi->radio_chanspec);
20400                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20401                         wlc_phy_radio_preinit_205x(pi);
20402                         wlc_phy_radio_init_2056(pi);
20403                         wlc_phy_radio_postinit_2056(pi);
20404
20405                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20406                                              pi->radio_chanspec);
20407                 } else {
20408                         wlc_phy_radio_preinit_2055(pi);
20409                         wlc_phy_radio_init_2055(pi);
20410                         wlc_phy_radio_postinit_2055(pi);
20411                 }
20412
20413                 pi->radio_is_on = true;
20414
20415         } else {
20416
20417                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20418                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20419                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20420                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20421
20422                         write_radio_reg(pi,
20423                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20424                                         RADIO_2056_TX0, 0);
20425                         write_radio_reg(pi,
20426                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20427                                         RADIO_2056_TX0, 0);
20428                         write_radio_reg(pi,
20429                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20430                                         RADIO_2056_TX0, 0);
20431                         write_radio_reg(pi,
20432                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20433                                         RADIO_2056_TX0, 0);
20434                         mod_radio_reg(pi,
20435                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20436                                       RADIO_2056_TX0, 0xf0, 0);
20437                         write_radio_reg(pi,
20438                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20439                                         RADIO_2056_TX0, 0);
20440
20441                         write_radio_reg(pi,
20442                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20443                                         RADIO_2056_TX1, 0);
20444                         write_radio_reg(pi,
20445                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20446                                         RADIO_2056_TX1, 0);
20447                         write_radio_reg(pi,
20448                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20449                                         RADIO_2056_TX1, 0);
20450                         write_radio_reg(pi,
20451                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20452                                         RADIO_2056_TX1, 0);
20453                         mod_radio_reg(pi,
20454                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20455                                       RADIO_2056_TX1, 0xf0, 0);
20456                         write_radio_reg(pi,
20457                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20458                                         RADIO_2056_TX1, 0);
20459
20460                         pi->radio_is_on = false;
20461                 }
20462
20463                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20464                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20465                         pi->radio_is_on = false;
20466                 }
20467
20468         }
20469 }
20470
20471 static bool
20472 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20473                        const struct chan_info_nphy_radio2057 **t0,
20474                        const struct chan_info_nphy_radio205x **t1,
20475                        const struct chan_info_nphy_radio2057_rev5 **t2,
20476                        const struct chan_info_nphy_2055 **t3)
20477 {
20478         uint i;
20479         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20480         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20481         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20482         u32 tbl_len = 0;
20483
20484         int freq = 0;
20485
20486         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20487
20488                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20489
20490                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20491                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20492
20493                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20494                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20495                         switch (pi->pubpi.radiorev) {
20496
20497                         case 5:
20498
20499                                 if (pi->pubpi.radiover == 0x0) {
20500
20501                                         chan_info_tbl_p_2 =
20502                                                 chan_info_nphyrev8_2057_rev5;
20503                                         tbl_len = ARRAY_SIZE(
20504                                                   chan_info_nphyrev8_2057_rev5);
20505
20506                                 } else if (pi->pubpi.radiover == 0x1) {
20507
20508                                         chan_info_tbl_p_2 =
20509                                                 chan_info_nphyrev9_2057_rev5v1;
20510                                         tbl_len = ARRAY_SIZE(
20511                                                 chan_info_nphyrev9_2057_rev5v1);
20512
20513                                 }
20514                                 break;
20515
20516                         case 7:
20517                                 chan_info_tbl_p_0 =
20518                                         chan_info_nphyrev8_2057_rev7;
20519                                 tbl_len = ARRAY_SIZE(
20520                                                   chan_info_nphyrev8_2057_rev7);
20521                                 break;
20522
20523                         case 8:
20524                                 chan_info_tbl_p_0 =
20525                                         chan_info_nphyrev8_2057_rev8;
20526                                 tbl_len = ARRAY_SIZE(
20527                                                   chan_info_nphyrev8_2057_rev8);
20528                                 break;
20529
20530                         default:
20531                                 break;
20532                         }
20533                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20534
20535                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20536                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20537                 } else {
20538                         goto fail;
20539                 }
20540
20541                 for (i = 0; i < tbl_len; i++) {
20542                         if (pi->pubpi.radiorev == 5) {
20543
20544                                 if (chan_info_tbl_p_2[i].chan == channel)
20545                                         break;
20546                         } else {
20547
20548                                 if (chan_info_tbl_p_0[i].chan == channel)
20549                                         break;
20550                         }
20551                 }
20552
20553                 if (i >= tbl_len)
20554                         goto fail;
20555
20556                 if (pi->pubpi.radiorev == 5) {
20557                         *t2 = &chan_info_tbl_p_2[i];
20558                         freq = chan_info_tbl_p_2[i].freq;
20559                 } else {
20560                         *t0 = &chan_info_tbl_p_0[i];
20561                         freq = chan_info_tbl_p_0[i].freq;
20562                 }
20563
20564         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20565                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20566                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20567                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20568                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20569                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20570                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20571                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20572                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20573                         switch (pi->pubpi.radiorev) {
20574                         case 5:
20575                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20576                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20577                                 break;
20578                         case 6:
20579                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20580                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20581                                 break;
20582                         case 7:
20583                         case 9:
20584                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20585                                 tbl_len =
20586                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20587                                 break;
20588                         case 8:
20589                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20590                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20591                                 break;
20592                         case 11:
20593                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20594                                 tbl_len = ARRAY_SIZE(
20595                                                     chan_info_nphyrev6_2056v11);
20596                                 break;
20597                         default:
20598                                 break;
20599                         }
20600                 }
20601
20602                 for (i = 0; i < tbl_len; i++) {
20603                         if (chan_info_tbl_p_1[i].chan == channel)
20604                                 break;
20605                 }
20606
20607                 if (i >= tbl_len)
20608                         goto fail;
20609
20610                 *t1 = &chan_info_tbl_p_1[i];
20611                 freq = chan_info_tbl_p_1[i].freq;
20612
20613         } else {
20614                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20615                         if (chan_info_nphy_2055[i].chan == channel)
20616                                 break;
20617
20618                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20619                         goto fail;
20620
20621                 *t3 = &chan_info_nphy_2055[i];
20622                 freq = chan_info_nphy_2055[i].freq;
20623         }
20624
20625         *f = freq;
20626         return true;
20627
20628 fail:
20629         *f = WL_CHAN_FREQ_RANGE_2G;
20630         return false;
20631 }
20632
20633 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20634 {
20635         int freq;
20636         const struct chan_info_nphy_radio2057 *t0 = NULL;
20637         const struct chan_info_nphy_radio205x *t1 = NULL;
20638         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20639         const struct chan_info_nphy_2055 *t3 = NULL;
20640
20641         if (channel == 0)
20642                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20643
20644         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20645
20646         if (CHSPEC_IS2G(pi->radio_chanspec))
20647                 return WL_CHAN_FREQ_RANGE_2G;
20648
20649         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20650                 return WL_CHAN_FREQ_RANGE_5GL;
20651         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20652                 return WL_CHAN_FREQ_RANGE_5GM;
20653         else
20654                 return WL_CHAN_FREQ_RANGE_5GH;
20655 }
20656
20657 static void
20658 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20659                                  const struct chan_info_nphy_2055 *ci)
20660 {
20661
20662         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20663         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20664         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20665         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20666
20667         BRCMS_PHY_WAR_PR51571(pi);
20668
20669         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20670         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20671         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20672         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20673
20674         BRCMS_PHY_WAR_PR51571(pi);
20675
20676         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20677         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20678         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20679         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20680
20681         BRCMS_PHY_WAR_PR51571(pi);
20682
20683         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20684                         ci->RF_core1_lgbuf_a_tune);
20685         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20686                         ci->RF_core1_lgbuf_g_tune);
20687         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20688         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20689                         ci->RF_core1_tx_pga_pad_tn);
20690
20691         BRCMS_PHY_WAR_PR51571(pi);
20692
20693         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20694                         ci->RF_core1_tx_mx_bgtrim);
20695         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20696                         ci->RF_core2_lgbuf_a_tune);
20697         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20698                         ci->RF_core2_lgbuf_g_tune);
20699         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20700
20701         BRCMS_PHY_WAR_PR51571(pi);
20702
20703         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20704                         ci->RF_core2_tx_pga_pad_tn);
20705         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20706                         ci->RF_core2_tx_mx_bgtrim);
20707
20708         udelay(50);
20709
20710         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20711         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20712
20713         BRCMS_PHY_WAR_PR51571(pi);
20714
20715         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20716
20717         udelay(300);
20718 }
20719
20720 static void
20721 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20722                                  const struct chan_info_nphy_radio205x *ci)
20723 {
20724         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20725
20726         write_radio_reg(pi,
20727                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20728                         ci->RF_SYN_pll_vcocal1);
20729         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20730                         ci->RF_SYN_pll_vcocal2);
20731         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20732                         ci->RF_SYN_pll_refdiv);
20733         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20734                         ci->RF_SYN_pll_mmd2);
20735         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20736                         ci->RF_SYN_pll_mmd1);
20737         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20738                         ci->RF_SYN_pll_loopfilter1);
20739         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20740                         ci->RF_SYN_pll_loopfilter2);
20741         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20742                         ci->RF_SYN_pll_loopfilter3);
20743         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20744                         ci->RF_SYN_pll_loopfilter4);
20745         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20746                         ci->RF_SYN_pll_loopfilter5);
20747         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20748                         ci->RF_SYN_reserved_addr27);
20749         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20750                         ci->RF_SYN_reserved_addr28);
20751         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20752                         ci->RF_SYN_reserved_addr29);
20753         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20754                         ci->RF_SYN_logen_VCOBUF1);
20755         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20756                         ci->RF_SYN_logen_MIXER2);
20757         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20758                         ci->RF_SYN_logen_BUF3);
20759         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20760                         ci->RF_SYN_logen_BUF4);
20761
20762         write_radio_reg(pi,
20763                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20764                         ci->RF_RX0_lnaa_tune);
20765         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20766                         ci->RF_RX0_lnag_tune);
20767         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20768                         ci->RF_TX0_intpaa_boost_tune);
20769         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20770                         ci->RF_TX0_intpag_boost_tune);
20771         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20772                         ci->RF_TX0_pada_boost_tune);
20773         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20774                         ci->RF_TX0_padg_boost_tune);
20775         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20776                         ci->RF_TX0_pgaa_boost_tune);
20777         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20778                         ci->RF_TX0_pgag_boost_tune);
20779         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20780                         ci->RF_TX0_mixa_boost_tune);
20781         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20782                         ci->RF_TX0_mixg_boost_tune);
20783
20784         write_radio_reg(pi,
20785                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20786                         ci->RF_RX1_lnaa_tune);
20787         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20788                         ci->RF_RX1_lnag_tune);
20789         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20790                         ci->RF_TX1_intpaa_boost_tune);
20791         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20792                         ci->RF_TX1_intpag_boost_tune);
20793         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20794                         ci->RF_TX1_pada_boost_tune);
20795         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20796                         ci->RF_TX1_padg_boost_tune);
20797         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20798                         ci->RF_TX1_pgaa_boost_tune);
20799         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20800                         ci->RF_TX1_pgag_boost_tune);
20801         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20802                         ci->RF_TX1_mixa_boost_tune);
20803         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20804                         ci->RF_TX1_mixg_boost_tune);
20805
20806         if (NREV_IS(pi->pubpi.phy_rev, 3))
20807                 regs_SYN_2056_ptr = regs_SYN_2056;
20808         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20809                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20810         else {
20811                 switch (pi->pubpi.radiorev) {
20812                 case 5:
20813                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20814                         break;
20815                 case 6:
20816                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20817                         break;
20818                 case 7:
20819                 case 9:
20820                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20821                         break;
20822                 case 8:
20823                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20824                         break;
20825                 case 11:
20826                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20827                         break;
20828                 }
20829         }
20830         if (CHSPEC_IS2G(pi->radio_chanspec))
20831                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20832                                 RADIO_2056_SYN,
20833                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20834         else
20835                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20836                                 RADIO_2056_SYN,
20837                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20838
20839         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20840                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20841                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20842                                         RADIO_2056_SYN, 0x1f);
20843                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20844                                         RADIO_2056_SYN, 0x1f);
20845
20846                         write_radio_reg(pi,
20847                                         RADIO_2056_SYN_PLL_LOOPFILTER4 |
20848                                         RADIO_2056_SYN, 0xb);
20849                         write_radio_reg(pi,
20850                                         RADIO_2056_SYN_PLL_CP2 |
20851                                         RADIO_2056_SYN, 0x14);
20852                 }
20853         }
20854
20855         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20856             (CHSPEC_IS2G(pi->radio_chanspec))) {
20857                 write_radio_reg(pi,
20858                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20859                                 0x1f);
20860                 write_radio_reg(pi,
20861                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20862                                 0x1f);
20863                 write_radio_reg(pi,
20864                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20865                                 0xb);
20866                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20867                                 0x20);
20868         }
20869
20870         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20871                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20872                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20873                                         RADIO_2056_SYN, 0x1f);
20874                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20875                                         RADIO_2056_SYN, 0x1f);
20876                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20877                                         RADIO_2056_SYN, 0x5);
20878                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20879                                         RADIO_2056_SYN, 0xc);
20880                 }
20881         }
20882
20883         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20884                 u16 pag_boost_tune;
20885                 u16 padg_boost_tune;
20886                 u16 pgag_boost_tune;
20887                 u16 mixg_boost_tune;
20888                 u16 bias, cascbias;
20889                 uint core;
20890
20891                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20892
20893                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20894
20895                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20896                                                  PADG_IDAC, 0xcc);
20897
20898                                 bias = 0x25;
20899                                 cascbias = 0x20;
20900
20901                                 if ((pi->sh->chip ==
20902                                      BCM43224_CHIP_ID)
20903                                     || (pi->sh->chip ==
20904                                         BCM43225_CHIP_ID)) {
20905                                         if (pi->sh->chippkg ==
20906                                             BCM43224_FAB_SMIC) {
20907                                                 bias = 0x2a;
20908                                                 cascbias = 0x38;
20909                                         }
20910                                 }
20911
20912                                 pag_boost_tune = 0x4;
20913                                 pgag_boost_tune = 0x03;
20914                                 padg_boost_tune = 0x77;
20915                                 mixg_boost_tune = 0x65;
20916
20917                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20918                                                  INTPAG_IMAIN_STAT, bias);
20919                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20920                                                  INTPAG_IAUX_STAT, bias);
20921                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20922                                                  INTPAG_CASCBIAS, cascbias);
20923
20924                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20925                                                  INTPAG_BOOST_TUNE,
20926                                                  pag_boost_tune);
20927                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20928                                                  PGAG_BOOST_TUNE,
20929                                                  pgag_boost_tune);
20930                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20931                                                  PADG_BOOST_TUNE,
20932                                                  padg_boost_tune);
20933                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20934                                                  MIXG_BOOST_TUNE,
20935                                                  mixg_boost_tune);
20936                         } else {
20937
20938                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20939                                        0x40 : 0x20;
20940
20941                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20942                                                  INTPAG_IMAIN_STAT, bias);
20943                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20944                                                  INTPAG_IAUX_STAT, bias);
20945                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20946                                                  INTPAG_CASCBIAS, 0x30);
20947                         }
20948                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20949                                          0xee);
20950                 }
20951         }
20952
20953         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20954             && CHSPEC_IS5G(pi->radio_chanspec)) {
20955                 u16 paa_boost_tune;
20956                 u16 pada_boost_tune;
20957                 u16 pgaa_boost_tune;
20958                 u16 mixa_boost_tune;
20959                 u16 freq, pabias, cascbias;
20960                 uint core;
20961
20962                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20963
20964                 if (freq < 5150) {
20965
20966                         paa_boost_tune = 0xa;
20967                         pada_boost_tune = 0x77;
20968                         pgaa_boost_tune = 0xf;
20969                         mixa_boost_tune = 0xf;
20970                 } else if (freq < 5340) {
20971
20972                         paa_boost_tune = 0x8;
20973                         pada_boost_tune = 0x77;
20974                         pgaa_boost_tune = 0xfb;
20975                         mixa_boost_tune = 0xf;
20976                 } else if (freq < 5650) {
20977
20978                         paa_boost_tune = 0x0;
20979                         pada_boost_tune = 0x77;
20980                         pgaa_boost_tune = 0xb;
20981                         mixa_boost_tune = 0xf;
20982                 } else {
20983
20984                         paa_boost_tune = 0x0;
20985                         pada_boost_tune = 0x77;
20986                         if (freq != 5825)
20987                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20988                         else
20989                                 pgaa_boost_tune = 6;
20990
20991                         mixa_boost_tune = 0xf;
20992                 }
20993
20994                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20995                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20996                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20997                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20998                                          PADA_BOOST_TUNE, pada_boost_tune);
20999                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21000                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
21001                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21002                                          MIXA_BOOST_TUNE, mixa_boost_tune);
21003
21004                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21005                                          TXSPARE1, 0x30);
21006                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21007                                          PA_SPARE2, 0xee);
21008
21009                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21010                                          PADA_CASCBIAS, 0x3);
21011
21012                         cascbias = 0x30;
21013
21014                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21015                             (pi->sh->chip == BCM43225_CHIP_ID)) {
21016                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
21017                                         cascbias = 0x35;
21018                         }
21019
21020                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
21021
21022                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21023                                          INTPAA_IAUX_STAT, pabias);
21024                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21025                                          INTPAA_IMAIN_STAT, pabias);
21026                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21027                                          INTPAA_CASCBIAS, cascbias);
21028                 }
21029         }
21030
21031         udelay(50);
21032
21033         wlc_phy_radio205x_vcocal_nphy(pi);
21034 }
21035
21036 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21037 {
21038         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21039                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21040                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21041                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21042                               (1 << 2));
21043                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21044         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21045                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21046                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21047                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21048                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21049                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21050         }
21051
21052         udelay(300);
21053 }
21054
21055 static void
21056 wlc_phy_chanspec_radio2057_setup(
21057         struct brcms_phy *pi,
21058         const struct chan_info_nphy_radio2057 *ci,
21059         const struct chan_info_nphy_radio2057_rev5 *
21060         ci2)
21061 {
21062         int coreNum;
21063         u16 txmix2g_tune_boost_pu = 0;
21064         u16 pad2g_tune_pus = 0;
21065
21066         if (pi->pubpi.radiorev == 5) {
21067
21068                 write_radio_reg(pi,
21069                                 RADIO_2057_VCOCAL_COUNTVAL0,
21070                                 ci2->RF_vcocal_countval0);
21071                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21072                                 ci2->RF_vcocal_countval1);
21073                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21074                                 ci2->RF_rfpll_refmaster_sparextalsize);
21075                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21076                                 ci2->RF_rfpll_loopfilter_r1);
21077                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21078                                 ci2->RF_rfpll_loopfilter_c2);
21079                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21080                                 ci2->RF_rfpll_loopfilter_c1);
21081                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21082                                 ci2->RF_cp_kpd_idac);
21083                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21084                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21085                 write_radio_reg(pi,
21086                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21087                 write_radio_reg(pi,
21088                                 RADIO_2057_LOGEN_MX2G_TUNE,
21089                                 ci2->RF_logen_mx2g_tune);
21090                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21091                                 ci2->RF_logen_indbuf2g_tune);
21092
21093                 write_radio_reg(pi,
21094                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21095                                 ci2->RF_txmix2g_tune_boost_pu_core0);
21096                 write_radio_reg(pi,
21097                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21098                                 ci2->RF_pad2g_tune_pus_core0);
21099                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21100                                 ci2->RF_lna2g_tune_core0);
21101
21102                 write_radio_reg(pi,
21103                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21104                                 ci2->RF_txmix2g_tune_boost_pu_core1);
21105                 write_radio_reg(pi,
21106                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21107                                 ci2->RF_pad2g_tune_pus_core1);
21108                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21109                                 ci2->RF_lna2g_tune_core1);
21110
21111         } else {
21112
21113                 write_radio_reg(pi,
21114                                 RADIO_2057_VCOCAL_COUNTVAL0,
21115                                 ci->RF_vcocal_countval0);
21116                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21117                                 ci->RF_vcocal_countval1);
21118                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21119                                 ci->RF_rfpll_refmaster_sparextalsize);
21120                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21121                                 ci->RF_rfpll_loopfilter_r1);
21122                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21123                                 ci->RF_rfpll_loopfilter_c2);
21124                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21125                                 ci->RF_rfpll_loopfilter_c1);
21126                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21127                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21128                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21129                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21130                 write_radio_reg(pi,
21131                                 RADIO_2057_LOGEN_MX2G_TUNE,
21132                                 ci->RF_logen_mx2g_tune);
21133                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21134                                 ci->RF_logen_mx5g_tune);
21135                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21136                                 ci->RF_logen_indbuf2g_tune);
21137                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21138                                 ci->RF_logen_indbuf5g_tune);
21139
21140                 write_radio_reg(pi,
21141                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21142                                 ci->RF_txmix2g_tune_boost_pu_core0);
21143                 write_radio_reg(pi,
21144                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21145                                 ci->RF_pad2g_tune_pus_core0);
21146                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21147                                 ci->RF_pga_boost_tune_core0);
21148                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21149                                 ci->RF_txmix5g_boost_tune_core0);
21150                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21151                                 ci->RF_pad5g_tune_misc_pus_core0);
21152                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21153                                 ci->RF_lna2g_tune_core0);
21154                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21155                                 ci->RF_lna5g_tune_core0);
21156
21157                 write_radio_reg(pi,
21158                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21159                                 ci->RF_txmix2g_tune_boost_pu_core1);
21160                 write_radio_reg(pi,
21161                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21162                                 ci->RF_pad2g_tune_pus_core1);
21163                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21164                                 ci->RF_pga_boost_tune_core1);
21165                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21166                                 ci->RF_txmix5g_boost_tune_core1);
21167                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21168                                 ci->RF_pad5g_tune_misc_pus_core1);
21169                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21170                                 ci->RF_lna2g_tune_core1);
21171                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21172                                 ci->RF_lna5g_tune_core1);
21173         }
21174
21175         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21176
21177                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21178                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21179                                         0x3f);
21180                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21181                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21182                                         0x8);
21183                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21184                                         0x8);
21185                 } else {
21186                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21187                                         0x1f);
21188                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21189                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21190                                         0x8);
21191                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21192                                         0x8);
21193                 }
21194         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21195                    (pi->pubpi.radiorev == 8)) {
21196
21197                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21198                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21199                                         0x1b);
21200                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21201                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21202                                         0xa);
21203                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21204                                         0xa);
21205                 } else {
21206                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21207                                         0x1f);
21208                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21209                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21210                                         0x8);
21211                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21212                                         0x8);
21213                 }
21214
21215         }
21216
21217         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21218                 if (PHY_IPA(pi)) {
21219                         if (pi->pubpi.radiorev == 3)
21220                                 txmix2g_tune_boost_pu = 0x6b;
21221
21222                         if (pi->pubpi.radiorev == 5)
21223                                 pad2g_tune_pus = 0x73;
21224
21225                 } else {
21226                         if (pi->pubpi.radiorev != 5) {
21227                                 pad2g_tune_pus = 0x3;
21228
21229                                 txmix2g_tune_boost_pu = 0x61;
21230                         }
21231                 }
21232
21233                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21234
21235                         if (txmix2g_tune_boost_pu != 0)
21236                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21237                                                  TXMIX2G_TUNE_BOOST_PU,
21238                                                  txmix2g_tune_boost_pu);
21239
21240                         if (pad2g_tune_pus != 0)
21241                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21242                                                  PAD2G_TUNE_PUS,
21243                                                  pad2g_tune_pus);
21244                 }
21245         }
21246
21247         udelay(50);
21248
21249         wlc_phy_radio205x_vcocal_nphy(pi);
21250 }
21251
21252 static void
21253 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21254                             const struct nphy_sfo_cfg *ci)
21255 {
21256         u16 val;
21257
21258         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21259         if (CHSPEC_IS5G(chanspec) && !val) {
21260
21261                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21262                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21263                       (val | MAC_PHY_FORCE_CLK));
21264
21265                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21266                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21267
21268                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21269
21270                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21271         } else if (!CHSPEC_IS5G(chanspec) && val) {
21272
21273                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21274
21275                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21276                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21277                       (val | MAC_PHY_FORCE_CLK));
21278
21279                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21280                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21281
21282                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21283         }
21284
21285         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21286         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21287         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21288
21289         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21290         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21291         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21292
21293         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21294                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21295
21296                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21297         } else {
21298                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21299                                         NPHY_ClassifierCtrl_ofdm_en);
21300
21301                 if (CHSPEC_IS2G(chanspec))
21302                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21303         }
21304
21305         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21306                 wlc_phy_txpwr_fixpower_nphy(pi);
21307
21308         if (NREV_LT(pi->pubpi.phy_rev, 3))
21309                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21310
21311         wlc_phy_txlpfbw_nphy(pi);
21312
21313         if (NREV_GE(pi->pubpi.phy_rev, 3)
21314             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21315                 u8 spuravoid = 0;
21316
21317                 val = CHSPEC_CHANNEL(chanspec);
21318                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21319                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21320                                 if ((val == 13) || (val == 14) || (val == 153))
21321                                         spuravoid = 1;
21322                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21323                                    || (val == 14)) {
21324                                 spuravoid = 1;
21325                         }
21326                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21327                         if (val == 54)
21328                                 spuravoid = 1;
21329                 } else {
21330                         if (pi->nphy_aband_spurwar_en &&
21331                             ((val == 38) || (val == 102)
21332                              || (val == 118)))
21333                                 spuravoid = 1;
21334                 }
21335
21336                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21337                         spuravoid = 1;
21338
21339                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21340                 si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
21341                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21342
21343                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21344                     (pi->sh->chip == BCM43225_CHIP_ID)) {
21345                         if (spuravoid == 1) {
21346                                 bcma_write16(pi->d11core,
21347                                              D11REGOFFS(tsf_clk_frac_l),
21348                                              0x5341);
21349                                 bcma_write16(pi->d11core,
21350                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21351                         } else {
21352                                 bcma_write16(pi->d11core,
21353                                              D11REGOFFS(tsf_clk_frac_l),
21354                                              0x8889);
21355                                 bcma_write16(pi->d11core,
21356                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21357                         }
21358                 }
21359
21360                 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21361
21362                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21363                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21364
21365                 wlc_phy_resetcca_nphy(pi);
21366
21367                 pi->phy_isspuravoid = (spuravoid > 0);
21368         }
21369
21370         if (NREV_LT(pi->pubpi.phy_rev, 7))
21371                 write_phy_reg(pi, 0x17e, 0x3830);
21372
21373         wlc_phy_spurwar_nphy(pi);
21374 }
21375
21376 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21377 {
21378         int freq;
21379         const struct chan_info_nphy_radio2057 *t0 = NULL;
21380         const struct chan_info_nphy_radio205x *t1 = NULL;
21381         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21382         const struct chan_info_nphy_2055 *t3 = NULL;
21383
21384         if (!wlc_phy_chan2freq_nphy
21385                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21386                 return;
21387
21388         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21389
21390         if (CHSPEC_BW(chanspec) != pi->bw)
21391                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21392
21393         if (CHSPEC_IS40(chanspec)) {
21394                 if (CHSPEC_SB_UPPER(chanspec)) {
21395                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21396                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21397                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21398                 } else {
21399                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21400                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21401                                 and_phy_reg(pi, 0x310,
21402                                             (~PRIM_SEL_UP20 & 0xffff));
21403                 }
21404         }
21405
21406         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21407                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21408
21409                         if ((pi->pubpi.radiorev <= 4)
21410                             || (pi->pubpi.radiorev == 6)) {
21411                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21412                                               0x2,
21413                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21414                                                : 0));
21415                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21416                                               0x2,
21417                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21418                                                : 0));
21419                         }
21420
21421                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21422                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21423                                 (pi->pubpi.radiorev == 5) ?
21424                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21425                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21426
21427                 } else {
21428
21429                         mod_radio_reg(pi,
21430                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21431                                       0x4,
21432                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21433                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21434
21435                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21436                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21437                 }
21438
21439         } else {
21440
21441                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21442                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21443                                : (0x05 << 4)));
21444
21445                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21446                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21447                                             (const struct nphy_sfo_cfg *)
21448                                              &(t3->PHY_BW1a));
21449         }
21450
21451 }
21452
21453 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21454 {
21455         struct brcms_phy *pi = (struct brcms_phy *) ppi;
21456         u16 mask = 0xfc00;
21457         u32 mc = 0;
21458
21459         if (NREV_GE(pi->pubpi.phy_rev, 7))
21460                 return;
21461
21462         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21463                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21464
21465                 if (lut_init == false)
21466                         return;
21467
21468                 if (pi->srom_fem2g.antswctrllut == 0) {
21469                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21470                                                  1, 0x02, 16, &v0);
21471                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21472                                                  1, 0x03, 16, &v1);
21473                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21474                                                  1, 0x08, 16, &v2);
21475                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21476                                                  1, 0x0C, 16, &v3);
21477                 }
21478
21479                 if (pi->srom_fem5g.antswctrllut == 0) {
21480                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21481                                                  1, 0x12, 16, &v0);
21482                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21483                                                  1, 0x13, 16, &v1);
21484                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21485                                                  1, 0x18, 16, &v2);
21486                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21487                                                  1, 0x1C, 16, &v3);
21488                 }
21489         } else {
21490
21491                 write_phy_reg(pi, 0xc8, 0x0);
21492                 write_phy_reg(pi, 0xc9, 0x0);
21493
21494                 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21495
21496                 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21497                 mc &= ~MCTL_GPOUT_SEL_MASK;
21498                 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21499
21500                 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21501
21502                 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21503
21504                 if (lut_init) {
21505                         write_phy_reg(pi, 0xf8, 0x02d8);
21506                         write_phy_reg(pi, 0xf9, 0x0301);
21507                         write_phy_reg(pi, 0xfa, 0x02d8);
21508                         write_phy_reg(pi, 0xfb, 0x0301);
21509                 }
21510         }
21511 }
21512
21513 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21514 {
21515         u16 curr_ctl, new_ctl;
21516         bool suspended = false;
21517
21518         if (D11REV_IS(pi->sh->corerev, 16)) {
21519                 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21520                              MCTL_EN_MAC) ? false : true;
21521                 if (!suspended)
21522                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21523         }
21524
21525         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21526
21527         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21528
21529         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21530
21531         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21532                 wlapi_enable_mac(pi->sh->physhim);
21533
21534         return new_ctl;
21535 }
21536
21537 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21538 {
21539         u16 trigger_mask, status_mask;
21540         u16 orig_RfseqCoreActv;
21541
21542         switch (cmd) {
21543         case NPHY_RFSEQ_RX2TX:
21544                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21545                 status_mask = NPHY_RfseqStatus_rx2tx;
21546                 break;
21547         case NPHY_RFSEQ_TX2RX:
21548                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21549                 status_mask = NPHY_RfseqStatus_tx2rx;
21550                 break;
21551         case NPHY_RFSEQ_RESET2RX:
21552                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21553                 status_mask = NPHY_RfseqStatus_reset2rx;
21554                 break;
21555         case NPHY_RFSEQ_UPDATEGAINH:
21556                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21557                 status_mask = NPHY_RfseqStatus_updategainh;
21558                 break;
21559         case NPHY_RFSEQ_UPDATEGAINL:
21560                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21561                 status_mask = NPHY_RfseqStatus_updategainl;
21562                 break;
21563         case NPHY_RFSEQ_UPDATEGAINU:
21564                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21565                 status_mask = NPHY_RfseqStatus_updategainu;
21566                 break;
21567         default:
21568                 return;
21569         }
21570
21571         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21572         or_phy_reg(pi, 0xa1,
21573                    (NPHY_RfseqMode_CoreActv_override |
21574                     NPHY_RfseqMode_Trigger_override));
21575         or_phy_reg(pi, 0xa3, trigger_mask);
21576         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21577         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21578         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21579 }
21580
21581 static void
21582 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21583                                      u8 core_mask, u8 off)
21584 {
21585         u16 rfmxgain = 0, lpfgain = 0;
21586         u16 tgain = 0;
21587
21588         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21589
21590                 switch (cmd) {
21591                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21592                         wlc_phy_rfctrl_override_nphy_rev7(
21593                                 pi, (0x1 << 5),
21594                                 value, core_mask, off,
21595                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21596                         wlc_phy_rfctrl_override_nphy_rev7(
21597                                 pi, (0x1 << 4), value,
21598                                 core_mask, off,
21599                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21600                         wlc_phy_rfctrl_override_nphy_rev7(
21601                                 pi, (0x1 << 3), value,
21602                                 core_mask, off,
21603                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21604                         break;
21605                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21606                         wlc_phy_rfctrl_override_nphy_rev7(
21607                                 pi, (0x1 << 2),
21608                                 value, core_mask, off,
21609                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21610                         wlc_phy_rfctrl_override_nphy_rev7(
21611                                 pi, (0x1 << 1), value,
21612                                 core_mask, off,
21613                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21614                         wlc_phy_rfctrl_override_nphy_rev7(
21615                                 pi, (0x1 << 0), value,
21616                                 core_mask, off,
21617                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21618                         wlc_phy_rfctrl_override_nphy_rev7(
21619                                 pi, (0x1 << 1), value,
21620                                 core_mask, off,
21621                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21622                         wlc_phy_rfctrl_override_nphy_rev7(
21623                                 pi, (0x1 << 11), 0,
21624                                 core_mask, off,
21625                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21626                         break;
21627                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21628                         wlc_phy_rfctrl_override_nphy_rev7(
21629                                 pi, (0x1 << 2),
21630                                 value, core_mask, off,
21631                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21632                         wlc_phy_rfctrl_override_nphy_rev7(
21633                                 pi, (0x1 << 1), value,
21634                                 core_mask, off,
21635                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21636                         wlc_phy_rfctrl_override_nphy_rev7(
21637                                 pi, (0x1 << 0), value,
21638                                 core_mask, off,
21639                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21640                         wlc_phy_rfctrl_override_nphy_rev7(
21641                                 pi, (0x1 << 2), value,
21642                                 core_mask, off,
21643                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21644                         wlc_phy_rfctrl_override_nphy_rev7(
21645                                 pi, (0x1 << 11), 1,
21646                                 core_mask, off,
21647                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21648                         break;
21649                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21650                         rfmxgain = value & 0x000ff;
21651                         lpfgain = value & 0x0ff00;
21652                         lpfgain = lpfgain >> 8;
21653
21654                         wlc_phy_rfctrl_override_nphy_rev7(
21655                                 pi, (0x1 << 11),
21656                                 rfmxgain, core_mask,
21657                                 off,
21658                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21659                         wlc_phy_rfctrl_override_nphy_rev7(
21660                                 pi, (0x3 << 13),
21661                                 lpfgain, core_mask,
21662                                 off,
21663                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21664                         break;
21665                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21666                         tgain = value & 0x7fff;
21667                         lpfgain = value & 0x8000;
21668                         lpfgain = lpfgain >> 14;
21669
21670                         wlc_phy_rfctrl_override_nphy_rev7(
21671                                 pi, (0x1 << 12),
21672                                 tgain, core_mask, off,
21673                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21674                         wlc_phy_rfctrl_override_nphy_rev7(
21675                                 pi, (0x1 << 13),
21676                                 lpfgain, core_mask,
21677                                 off,
21678                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21679                         break;
21680                 }
21681         }
21682 }
21683
21684 static void
21685 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21686                                u8 coresel, u8 rail, u8 rssi_type)
21687 {
21688         u16 valuetostuff;
21689
21690         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21691                  NPHY_RSSICAL_MAXREAD : offset;
21692         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21693                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21694
21695         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21696
21697         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21698              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21700                 write_phy_reg(pi, 0x1a6, valuetostuff);
21701
21702         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21703              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21704             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21705                 write_phy_reg(pi, 0x1ac, valuetostuff);
21706
21707         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21708              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21709             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21710                 write_phy_reg(pi, 0x1b2, valuetostuff);
21711
21712         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21713              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21714             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21715                 write_phy_reg(pi, 0x1b8, valuetostuff);
21716
21717         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21718              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21719             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21720                 write_phy_reg(pi, 0x1a4, valuetostuff);
21721
21722         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21723              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21724             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21725                 write_phy_reg(pi, 0x1aa, valuetostuff);
21726
21727         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21728              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21729             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21730                 write_phy_reg(pi, 0x1b0, valuetostuff);
21731
21732         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21733              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21734             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21735                 write_phy_reg(pi, 0x1b6, valuetostuff);
21736
21737         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21738              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21739             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21740                 write_phy_reg(pi, 0x1a5, valuetostuff);
21741         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21742              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21743             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21744                 write_phy_reg(pi, 0x1ab, valuetostuff);
21745
21746         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21747              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21748             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21749                 write_phy_reg(pi, 0x1b1, valuetostuff);
21750
21751         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21752              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21753             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21754                 write_phy_reg(pi, 0x1b7, valuetostuff);
21755
21756         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21757              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21758             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21759                 write_phy_reg(pi, 0x1a7, valuetostuff);
21760         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21761              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21762             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21763                 write_phy_reg(pi, 0x1ad, valuetostuff);
21764         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21765              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21766             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21767                 write_phy_reg(pi, 0x1b3, valuetostuff);
21768         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21769              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21770             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21771                 write_phy_reg(pi, 0x1b9, valuetostuff);
21772
21773         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21774              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21775             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21776                 write_phy_reg(pi, 0x1a8, valuetostuff);
21777
21778         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21779              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21780             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21781                 write_phy_reg(pi, 0x1ae, valuetostuff);
21782
21783         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21784              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21785             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21786                 write_phy_reg(pi, 0x1b4, valuetostuff);
21787
21788         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21789              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21790             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21791                 write_phy_reg(pi, 0x1ba, valuetostuff);
21792
21793         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21794              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21795             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21796                 write_phy_reg(pi, 0x1a9, valuetostuff);
21797         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21798              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21799             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21800                 write_phy_reg(pi, 0x1b5, valuetostuff);
21801
21802         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21803              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21804             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21805                 write_phy_reg(pi, 0x1af, valuetostuff);
21806
21807         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21808              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21809             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21810                 write_phy_reg(pi, 0x1bb, valuetostuff);
21811 }
21812
21813 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21814 {
21815         if (PHY_IPA(pi)) {
21816                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21817                         write_radio_reg(pi,
21818                                         ((core == PHY_CORE_0) ?
21819                                          RADIO_2057_TX0_TX_SSI_MUX :
21820                                          RADIO_2057_TX1_TX_SSI_MUX),
21821                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21822                                         0xc : 0xe));
21823                 else
21824                         write_radio_reg(pi,
21825                                         RADIO_2056_TX_TX_SSI_MUX |
21826                                         ((core == PHY_CORE_0) ?
21827                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21828                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21829                                         0xc : 0xe));
21830         } else {
21831                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21832                         write_radio_reg(pi,
21833                                         ((core == PHY_CORE_0) ?
21834                                          RADIO_2057_TX0_TX_SSI_MUX :
21835                                          RADIO_2057_TX1_TX_SSI_MUX),
21836                                         0x11);
21837
21838                         if (pi->pubpi.radioid == BCM2057_ID)
21839                                 write_radio_reg(pi,
21840                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21841
21842                 } else {
21843                         write_radio_reg(pi,
21844                                         RADIO_2056_TX_TX_SSI_MUX |
21845                                         ((core == PHY_CORE_0) ?
21846                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21847                                         0x11);
21848                 }
21849         }
21850 }
21851
21852 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21853 {
21854         u16 mask, val;
21855         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21856             startseq;
21857         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21858             rfctrlovr_trigger_val;
21859         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21860         u16 rfctrlcmd_val, rfctrlovr_val;
21861         u8 core;
21862
21863         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21864                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21865                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21866                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21867
21868                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21869                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21870
21871                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21872                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21873
21874                         mask = (0x1 << 2) |
21875                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21876                         mod_phy_reg(pi, 0xf9, mask, 0);
21877                         mod_phy_reg(pi, 0xfb, mask, 0);
21878
21879                 } else {
21880                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21881                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21882                                     && core == PHY_CORE_1)
21883                                         continue;
21884                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21885                                          && core == PHY_CORE_0)
21886                                         continue;
21887
21888                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21889                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21890
21891                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21892                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21893                                     rssi_type == NPHY_RSSI_SEL_NB) {
21894                                         mod_phy_reg(pi,
21895                                                     (core ==
21896                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21897                                                     (0x3 << 8), 0);
21898
21899                                         mask = (0x1 << 2) |
21900                                                (0x1 << 3) |
21901                                                (0x1 << 4) | (0x1 << 5);
21902                                         mod_phy_reg(pi,
21903                                                     (core ==
21904                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21905                                                     mask, 0);
21906
21907                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21908                                                 if (CHSPEC_IS5G(
21909                                                           pi->radio_chanspec)) {
21910                                                         mask = (0x1 << 2);
21911                                                         val = 1 << 2;
21912                                                 } else {
21913                                                         mask = (0x1 << 3);
21914                                                         val = 1 << 3;
21915                                                 }
21916                                         } else if (rssi_type ==
21917                                                    NPHY_RSSI_SEL_W2) {
21918                                                 mask = (0x1 << 4);
21919                                                 val = 1 << 4;
21920                                         } else {
21921                                                 mask = (0x1 << 5);
21922                                                 val = 1 << 5;
21923                                         }
21924                                         mod_phy_reg(pi,
21925                                                     (core ==
21926                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21927                                                     mask, val);
21928
21929                                         mask = (0x1 << 5);
21930                                         val = 1 << 5;
21931                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21932                                                     0xe5 : 0xe6, mask, val);
21933                                 } else {
21934                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21935                                                 mask = (0x3 << 8);
21936                                                 val = 1 << 8;
21937                                                 mod_phy_reg(pi,
21938                                                             (core ==
21939                                                              PHY_CORE_0) ? 0xa6
21940                                                             : 0xa7, mask, val);
21941                                                 mask = (0x3 << 10);
21942                                                 val = 1 << 10;
21943                                                 mod_phy_reg(pi,
21944                                                             (core ==
21945                                                              PHY_CORE_0) ? 0xa6
21946                                                             : 0xa7, mask, val);
21947                                         } else if (rssi_type ==
21948                                                    NPHY_RSSI_SEL_IQ) {
21949                                                 mask = (0x3 << 8);
21950                                                 val = 2 << 8;
21951                                                 mod_phy_reg(pi,
21952                                                             (core ==
21953                                                              PHY_CORE_0) ? 0xa6
21954                                                             : 0xa7, mask, val);
21955                                                 mask = (0x3 << 10);
21956                                                 val = 2 << 10;
21957                                                 mod_phy_reg(pi,
21958                                                             (core ==
21959                                                              PHY_CORE_0) ? 0xa6
21960                                                             : 0xa7, mask, val);
21961                                         } else {
21962                                                 mask = (0x3 << 8);
21963                                                 val = 3 << 8;
21964                                                 mod_phy_reg(pi,
21965                                                             (core ==
21966                                                              PHY_CORE_0) ? 0xa6
21967                                                             : 0xa7, mask, val);
21968                                                 mask = (0x3 << 10);
21969                                                 val = 3 << 10;
21970                                                 mod_phy_reg(pi,
21971                                                             (core ==
21972                                                              PHY_CORE_0) ? 0xa6
21973                                                             : 0xa7, mask, val);
21974                                                 brcms_phy_wr_tx_mux(pi, core);
21975                                                 afectrlovr_rssi_val = 1 << 9;
21976                                                 mod_phy_reg(pi,
21977                                                            (core ==
21978                                                             PHY_CORE_0) ? 0x8f
21979                                                            : 0xa5, (0x1 << 9),
21980                                                            afectrlovr_rssi_val);
21981                                         }
21982                                 }
21983                         }
21984                 }
21985         } else {
21986
21987                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21988                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21989                     (rssi_type == NPHY_RSSI_SEL_NB))
21990                         val = 0x0;
21991                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21992                         val = 0x1;
21993                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21994                         val = 0x2;
21995                 else
21996                         val = 0x3;
21997
21998                 mask = ((0x3 << 12) | (0x3 << 14));
21999                 val = (val << 12) | (val << 14);
22000                 mod_phy_reg(pi, 0xa6, mask, val);
22001                 mod_phy_reg(pi, 0xa7, mask, val);
22002
22003                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22004                     (rssi_type == NPHY_RSSI_SEL_W2) ||
22005                     (rssi_type == NPHY_RSSI_SEL_NB)) {
22006                         if (rssi_type == NPHY_RSSI_SEL_W1)
22007                                 val = 0x1;
22008                         if (rssi_type == NPHY_RSSI_SEL_W2)
22009                                 val = 0x2;
22010                         if (rssi_type == NPHY_RSSI_SEL_NB)
22011                                 val = 0x3;
22012
22013                         mask = (0x3 << 4);
22014                         val = (val << 4);
22015                         mod_phy_reg(pi, 0x7a, mask, val);
22016                         mod_phy_reg(pi, 0x7d, mask, val);
22017                 }
22018
22019                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
22020                         afectrlovr_rssi_val = 0;
22021                         rfctrlcmd_rxen_val = 0;
22022                         rfctrlcmd_coresel_val = 0;
22023                         rfctrlovr_rssi_val = 0;
22024                         rfctrlovr_rxen_val = 0;
22025                         rfctrlovr_coresel_val = 0;
22026                         rfctrlovr_trigger_val = 0;
22027                         startseq = 0;
22028                 } else {
22029                         afectrlovr_rssi_val = 1;
22030                         rfctrlcmd_rxen_val = 1;
22031                         rfctrlcmd_coresel_val = core_code;
22032                         rfctrlovr_rssi_val = 1;
22033                         rfctrlovr_rxen_val = 1;
22034                         rfctrlovr_coresel_val = 1;
22035                         rfctrlovr_trigger_val = 1;
22036                         startseq = 1;
22037                 }
22038
22039                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22040                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22041                                        12) | (afectrlovr_rssi_val << 13);
22042                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22043                             afectrlovr_rssi_val);
22044
22045                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22046                     (rssi_type == NPHY_RSSI_SEL_W2) ||
22047                     (rssi_type == NPHY_RSSI_SEL_NB)) {
22048                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22049                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22050                                         (rfctrlcmd_coresel_val << 3);
22051
22052                         rfctrlovr_mask = ((0x1 << 5) |
22053                                           (0x1 << 12) |
22054                                           (0x1 << 1) | (0x1 << 0));
22055                         rfctrlovr_val = (rfctrlovr_rssi_val <<
22056                                          5) |
22057                                         (rfctrlovr_rxen_val << 12) |
22058                                         (rfctrlovr_coresel_val << 1) |
22059                                         (rfctrlovr_trigger_val << 0);
22060
22061                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22062                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22063
22064                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22065                         udelay(20);
22066
22067                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22068                 }
22069         }
22070 }
22071
22072 int
22073 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22074                        u8 nsamps)
22075 {
22076         s16 rssi0, rssi1;
22077         u16 afectrlCore1_save = 0;
22078         u16 afectrlCore2_save = 0;
22079         u16 afectrlOverride1_save = 0;
22080         u16 afectrlOverride2_save = 0;
22081         u16 rfctrlOverrideAux0_save = 0;
22082         u16 rfctrlOverrideAux1_save = 0;
22083         u16 rfctrlMiscReg1_save = 0;
22084         u16 rfctrlMiscReg2_save = 0;
22085         u16 rfctrlcmd_save = 0;
22086         u16 rfctrloverride_save = 0;
22087         u16 rfctrlrssiothers1_save = 0;
22088         u16 rfctrlrssiothers2_save = 0;
22089         s8 tmp_buf[4];
22090         u8 ctr = 0, samp = 0;
22091         s32 rssi_out_val;
22092         u16 gpiosel_orig;
22093
22094         afectrlCore1_save = read_phy_reg(pi, 0xa6);
22095         afectrlCore2_save = read_phy_reg(pi, 0xa7);
22096         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22097                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22098                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22099                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22100                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22101                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22102                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22103         } else {
22104                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22105                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
22106                 rfctrloverride_save = read_phy_reg(pi, 0xec);
22107                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22108                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22109         }
22110
22111         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22112
22113         gpiosel_orig = read_phy_reg(pi, 0xca);
22114         if (NREV_LT(pi->pubpi.phy_rev, 2))
22115                 write_phy_reg(pi, 0xca, 5);
22116
22117         for (ctr = 0; ctr < 4; ctr++)
22118                 rssi_buf[ctr] = 0;
22119
22120         for (samp = 0; samp < nsamps; samp++) {
22121                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22122                         rssi0 = read_phy_reg(pi, 0x1c9);
22123                         rssi1 = read_phy_reg(pi, 0x1ca);
22124                 } else {
22125                         rssi0 = read_phy_reg(pi, 0x219);
22126                         rssi1 = read_phy_reg(pi, 0x21a);
22127                 }
22128
22129                 ctr = 0;
22130                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22131                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22132                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22133                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22134
22135                 for (ctr = 0; ctr < 4; ctr++)
22136                         rssi_buf[ctr] += tmp_buf[ctr];
22137
22138         }
22139
22140         rssi_out_val = rssi_buf[3] & 0xff;
22141         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22142         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22143         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22144
22145         if (NREV_LT(pi->pubpi.phy_rev, 2))
22146                 write_phy_reg(pi, 0xca, gpiosel_orig);
22147
22148         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22149         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22150         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22151                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22152                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22153                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22154                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22155                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22156                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22157         } else {
22158                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22159                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22160                 write_phy_reg(pi, 0xec, rfctrloverride_save);
22161                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22162                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22163         }
22164
22165         return rssi_out_val;
22166 }
22167
22168 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22169 {
22170         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22171         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22172         u16 pwrdet_rxtx_core1_save;
22173         u16 pwrdet_rxtx_core2_save;
22174         u16 afectrlCore1_save;
22175         u16 afectrlCore2_save;
22176         u16 afectrlOverride_save;
22177         u16 afectrlOverride2_save;
22178         u16 pd_pll_ts_save;
22179         u16 gpioSel_save;
22180         s32 radio_temp[4];
22181         s32 radio_temp2[4];
22182         u16 syn_tempprocsense_save;
22183         s16 offset = 0;
22184
22185         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22186                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22187                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22188                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22189                 s32 auxADC_Vl;
22190                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22191                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22192                 u16 RSSIMultCoef0QPowerDet_save;
22193                 u16 tempsense_Rcal;
22194
22195                 syn_tempprocsense_save =
22196                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22197
22198                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22199                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22200                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22201                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22202                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22203                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22204                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22205                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22206                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22207
22208                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22209                                         &auxADC_Vmid_save);
22210                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22211                                         &auxADC_Av_save);
22212                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22213                                         &auxADC_rssi_ctrlL_save);
22214                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22215                                         &auxADC_rssi_ctrlH_save);
22216
22217                 write_phy_reg(pi, 0x1ae, 0x0);
22218
22219                 auxADC_rssi_ctrlL = 0x0;
22220                 auxADC_rssi_ctrlH = 0x20;
22221                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22222                                          &auxADC_rssi_ctrlL);
22223                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22224                                          &auxADC_rssi_ctrlH);
22225
22226                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22227
22228                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22229                                 tempsense_Rcal | 0x01);
22230
22231                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22232                                                   1, 0, 0,
22233                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22234                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22235                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22236                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22237                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22238
22239                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22240                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22241                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22242                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22243                 udelay(5);
22244                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22245                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22246                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22247                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22248                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22249                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22250                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22251                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22252                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22253                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22254
22255                 auxADC_Vmid = 0xA3;
22256                 auxADC_Av = 0x0;
22257                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22258                                          &auxADC_Vmid);
22259                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22260                                          &auxADC_Av);
22261
22262                 udelay(3);
22263
22264                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22265                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22266                                 tempsense_Rcal | 0x03);
22267
22268                 udelay(5);
22269                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22270
22271                 auxADC_Av = 0x7;
22272                 if (radio_temp[1] + radio_temp2[1] < -30) {
22273                         auxADC_Vmid = 0x45;
22274                         auxADC_Vl = 263;
22275                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22276                         auxADC_Vmid = 0x200;
22277                         auxADC_Vl = 467;
22278                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22279                         auxADC_Vmid = 0x266;
22280                         auxADC_Vl = 634;
22281                 } else {
22282                         auxADC_Vmid = 0x2D5;
22283                         auxADC_Vl = 816;
22284                 }
22285
22286                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22287                                          &auxADC_Vmid);
22288                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22289                                          &auxADC_Av);
22290
22291                 udelay(3);
22292
22293                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22294                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22295                                 tempsense_Rcal | 0x01);
22296
22297                 udelay(5);
22298                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22299
22300                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22301                                 syn_tempprocsense_save);
22302
22303                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22304                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22305                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22306                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22307                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22308                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22309                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22310                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22311                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22312
22313                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22314                                          &auxADC_Vmid_save);
22315                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22316                                          &auxADC_Av_save);
22317                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22318                                          &auxADC_rssi_ctrlL_save);
22319                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22320                                          &auxADC_rssi_ctrlH_save);
22321
22322                 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22323                                  + 82 * (auxADC_Vl) - 28861 +
22324                                  128) / 256;
22325
22326                 offset = (s16) pi->phy_tempsense_offset;
22327
22328         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22329                 syn_tempprocsense_save =
22330                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22331
22332                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22333                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22334                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22335                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22336                 gpioSel_save = read_phy_reg(pi, 0xca);
22337
22338                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22339
22340                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22341                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22342                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22343
22344                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22345                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22346                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22347                 else
22348                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22349
22350                 radio_temp[0] =
22351                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22352
22353                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22354                                 syn_tempprocsense_save);
22355
22356                 write_phy_reg(pi, 0xca, gpioSel_save);
22357                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22358                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22359                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22360                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22361
22362                 offset = (s16) pi->phy_tempsense_offset;
22363         } else {
22364
22365                 pwrdet_rxtx_core1_save =
22366                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22367                 pwrdet_rxtx_core2_save =
22368                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22369                 core1_txrf_iqcal1_save =
22370                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22371                 core1_txrf_iqcal2_save =
22372                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22373                 core2_txrf_iqcal1_save =
22374                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22375                 core2_txrf_iqcal2_save =
22376                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22377                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22378
22379                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22380                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22381                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22382                 gpioSel_save = read_phy_reg(pi, 0xca);
22383
22384                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22385                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22386                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22387                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22388                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22389                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22390                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22391
22392                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22393                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22394
22395                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22396                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22397
22398                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22399                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22400
22401                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22402                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22403                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22404                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22405
22406                 radio_temp[0] =
22407                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22408                          radio_temp[3]);
22409
22410                 radio_temp[0] =
22411                         (radio_temp[0] +
22412                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22413
22414                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22415
22416                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22417                                 pwrdet_rxtx_core1_save);
22418                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22419                                 pwrdet_rxtx_core2_save);
22420                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22421                                 core1_txrf_iqcal1_save);
22422                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22423                                 core2_txrf_iqcal1_save);
22424                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22425                                 core1_txrf_iqcal2_save);
22426                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22427                                 core2_txrf_iqcal2_save);
22428                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22429
22430                 write_phy_reg(pi, 0xca, gpioSel_save);
22431                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22432                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22433                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22434         }
22435
22436         return (s16) radio_temp[0] + offset;
22437 }
22438
22439 static void
22440 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22441 {
22442         u8 core;
22443
22444         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22445                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22446                         if (core == PHY_CORE_0) {
22447                                 mod_radio_reg(pi,
22448                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22449                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22450                                               vcm_buf[2 *
22451                                                       core] <<
22452                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22453                                 mod_radio_reg(pi,
22454                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22455                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22456                                               vcm_buf[2 * core +
22457                                                       1] <<
22458                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22459                         } else {
22460                                 mod_radio_reg(pi,
22461                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22462                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22463                                               vcm_buf[2 *
22464                                                       core] <<
22465                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22466                                 mod_radio_reg(pi,
22467                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22468                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22469                                               vcm_buf[2 * core +
22470                                                       1] <<
22471                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22472                         }
22473                 } else {
22474                         if (core == PHY_CORE_0)
22475                                 mod_radio_reg(pi,
22476                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22477                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22478                                               vcm_buf[2 *
22479                                                       core] <<
22480                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22481                         else
22482                                 mod_radio_reg(pi,
22483                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22484                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22485                                               vcm_buf[2 *
22486                                                       core] <<
22487                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22488                 }
22489         }
22490 }
22491
22492 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22493 {
22494         u16 classif_state;
22495         u16 clip_state[2];
22496         u16 clip_off[] = { 0xffff, 0xffff };
22497         s32 target_code;
22498         u8 vcm, min_vcm;
22499         u8 vcm_final = 0;
22500         u8 result_idx;
22501         s32 poll_results[8][4] = {
22502                 {0, 0, 0, 0},
22503                 {0, 0, 0, 0},
22504                 {0, 0, 0, 0},
22505                 {0, 0, 0, 0},
22506                 {0, 0, 0, 0},
22507                 {0, 0, 0, 0},
22508                 {0, 0, 0, 0},
22509                 {0, 0, 0, 0}
22510         };
22511         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22512         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22513         s32 fine_digital_offset[4];
22514         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22515         s32 min_poll;
22516         u8 vcm_level_max;
22517         u8 core;
22518         u8 wb_cnt;
22519         u8 rssi_type;
22520         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22521         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22522         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22523         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22524         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22525         u16 NPHY_RfctrlCmd_save;
22526         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22527         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22528         u8 rxcore_state;
22529         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22530         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22531         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22532         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22533
22534         NPHY_REV7_RfctrlOverride3_save =
22535                 NPHY_REV7_RfctrlOverride4_save =
22536                 NPHY_REV7_RfctrlOverride5_save =
22537                 NPHY_REV7_RfctrlOverride6_save =
22538                 NPHY_REV7_RfctrlMiscReg3_save =
22539                 NPHY_REV7_RfctrlMiscReg4_save =
22540                 NPHY_REV7_RfctrlMiscReg5_save =
22541                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22542
22543         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22544         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22545         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22546         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22547
22548         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22549         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22550         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22551         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22552         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22553         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22554         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22555         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22556         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22557                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22558                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22559                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22560                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22561         }
22562         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22563         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22564         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22565         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22566         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22567         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22568                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22569                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22570                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22571                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22572         }
22573         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22574         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22575
22576         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22577                                          RADIO_MIMO_CORESEL_ALLRXTX);
22578         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22579                                          RADIO_MIMO_CORESEL_ALLRXTX);
22580
22581         if (NREV_GE(pi->pubpi.phy_rev, 7))
22582                 wlc_phy_rfctrl_override_1tomany_nphy(
22583                         pi,
22584                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22585                         0, 0, 0);
22586         else
22587                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22588
22589         if (NREV_GE(pi->pubpi.phy_rev, 7))
22590                 wlc_phy_rfctrl_override_1tomany_nphy(
22591                         pi,
22592                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22593                         1, 0, 0);
22594         else
22595                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22596
22597         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22598                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22599                                                   1, 0, 0,
22600                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22601                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22602                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22603         } else {
22604                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22605                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22606         }
22607
22608         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22609                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22610                         wlc_phy_rfctrl_override_nphy_rev7(
22611                                 pi, (0x1 << 5),
22612                                 0, 0, 0,
22613                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22614                         wlc_phy_rfctrl_override_nphy_rev7(
22615                                 pi, (0x1 << 4), 1, 0,
22616                                 0,
22617                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22618                 } else {
22619                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22620                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22621                 }
22622
22623         } else {
22624                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22625                         wlc_phy_rfctrl_override_nphy_rev7(
22626                                 pi, (0x1 << 4),
22627                                 0, 0, 0,
22628                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22629                         wlc_phy_rfctrl_override_nphy_rev7(
22630                                 pi, (0x1 << 5), 1, 0,
22631                                 0,
22632                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22633                 } else {
22634                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22635                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22636                 }
22637         }
22638
22639         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22640                 (struct brcms_phy_pub *) pi);
22641
22642         vcm_level_max = 8;
22643
22644         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22645
22646                 if ((rxcore_state & (1 << core)) == 0)
22647                         continue;
22648
22649                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22650                                                core ==
22651                                                PHY_CORE_0 ?
22652                                                RADIO_MIMO_CORESEL_CORE1 :
22653                                                RADIO_MIMO_CORESEL_CORE2,
22654                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22655                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22656                                                core ==
22657                                                PHY_CORE_0 ?
22658                                                RADIO_MIMO_CORESEL_CORE1 :
22659                                                RADIO_MIMO_CORESEL_CORE2,
22660                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22661
22662                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22663                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22664                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22665                                               RADIO_2057_NB_MASTER_CORE0 :
22666                                               RADIO_2057_NB_MASTER_CORE1,
22667                                               RADIO_2057_VCM_MASK, vcm);
22668                         else
22669                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22670                                               ((core ==
22671                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22672                                                RADIO_2056_RX1),
22673                                               RADIO_2056_VCM_MASK,
22674                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22675
22676                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22677                                                &poll_results[vcm][0],
22678                                                NPHY_RSSICAL_NPOLL);
22679                 }
22680
22681                 for (result_idx = 0; result_idx < 4; result_idx++) {
22682                         if ((core == result_idx / 2) &&
22683                             (result_idx % 2 == 0)) {
22684
22685                                 min_d = NPHY_RSSICAL_MAXD;
22686                                 min_vcm = 0;
22687                                 min_poll =
22688                                         NPHY_RSSICAL_MAXREAD *
22689                                         NPHY_RSSICAL_NPOLL + 1;
22690                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22691                                         curr_d =
22692                                                 poll_results[vcm][result_idx] *
22693                                                 poll_results[vcm][result_idx] +
22694                                                 poll_results[vcm][result_idx +
22695                                                                   1] *
22696                                                 poll_results[vcm][result_idx +
22697                                                                   1];
22698                                         if (curr_d < min_d) {
22699                                                 min_d = curr_d;
22700                                                 min_vcm = vcm;
22701                                         }
22702                                         if (poll_results[vcm][result_idx] <
22703                                             min_poll)
22704                                                 min_poll =
22705                                                         poll_results[vcm]
22706                                                         [result_idx];
22707                                 }
22708                                 vcm_final = min_vcm;
22709                                 poll_results_min[result_idx] = min_poll;
22710                         }
22711                 }
22712
22713                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22714                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22715                                       RADIO_2057_NB_MASTER_CORE0 :
22716                                       RADIO_2057_NB_MASTER_CORE1,
22717                                       RADIO_2057_VCM_MASK, vcm_final);
22718                 else
22719                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22720                                       ((core ==
22721                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22722                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22723                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22724
22725                 for (result_idx = 0; result_idx < 4; result_idx++) {
22726                         if (core == result_idx / 2) {
22727                                 fine_digital_offset[result_idx] =
22728                                         (NPHY_RSSICAL_NB_TARGET *
22729                                          NPHY_RSSICAL_NPOLL) -
22730                                         poll_results[vcm_final][result_idx];
22731                                 if (fine_digital_offset[result_idx] < 0) {
22732                                         fine_digital_offset[result_idx] =
22733                                                 abs(fine_digital_offset
22734                                                     [result_idx]);
22735                                         fine_digital_offset[result_idx] +=
22736                                                 (NPHY_RSSICAL_NPOLL / 2);
22737                                         fine_digital_offset[result_idx] /=
22738                                                 NPHY_RSSICAL_NPOLL;
22739                                         fine_digital_offset[result_idx] =
22740                                                 -fine_digital_offset[
22741                                                                     result_idx];
22742                                 } else {
22743                                         fine_digital_offset[result_idx] +=
22744                                                 (NPHY_RSSICAL_NPOLL / 2);
22745                                         fine_digital_offset[result_idx] /=
22746                                                 NPHY_RSSICAL_NPOLL;
22747                                 }
22748
22749                                 if (poll_results_min[result_idx] ==
22750                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22751                                         fine_digital_offset[result_idx] =
22752                                                 (NPHY_RSSICAL_NB_TARGET -
22753                                                  NPHY_RSSICAL_MAXREAD - 1);
22754
22755                                 wlc_phy_scale_offset_rssi_nphy(
22756                                         pi, 0x0,
22757                                         (s8)
22758                                         fine_digital_offset
22759                                         [result_idx],
22760                                         (result_idx / 2 == 0) ?
22761                                         RADIO_MIMO_CORESEL_CORE1 :
22762                                         RADIO_MIMO_CORESEL_CORE2,
22763                                         (result_idx % 2 == 0) ?
22764                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22765                                         NPHY_RSSI_SEL_NB);
22766                         }
22767                 }
22768
22769         }
22770
22771         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22772
22773                 if ((rxcore_state & (1 << core)) == 0)
22774                         continue;
22775
22776                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22777                         if (wb_cnt == 0) {
22778                                 rssi_type = NPHY_RSSI_SEL_W1;
22779                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22780                         } else {
22781                                 rssi_type = NPHY_RSSI_SEL_W2;
22782                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22783                         }
22784
22785                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22786                                                        core ==
22787                                                        PHY_CORE_0 ?
22788                                                        RADIO_MIMO_CORESEL_CORE1
22789                                                        :
22790                                                        RADIO_MIMO_CORESEL_CORE2,
22791                                                        NPHY_RAIL_I, rssi_type);
22792                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22793                                                        core ==
22794                                                        PHY_CORE_0 ?
22795                                                        RADIO_MIMO_CORESEL_CORE1
22796                                                        :
22797                                                        RADIO_MIMO_CORESEL_CORE2,
22798                                                        NPHY_RAIL_Q, rssi_type);
22799
22800                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22801                                                NPHY_RSSICAL_NPOLL);
22802
22803                         for (result_idx = 0; result_idx < 4; result_idx++) {
22804                                 if (core == result_idx / 2) {
22805                                         fine_digital_offset[result_idx] =
22806                                                 (target_code *
22807                                                  NPHY_RSSICAL_NPOLL) -
22808                                                 poll_result_core[result_idx];
22809                                         if (fine_digital_offset[result_idx] <
22810                                             0) {
22811                                                 fine_digital_offset[result_idx]
22812                                                         = abs(
22813                                                             fine_digital_offset
22814                                                             [result_idx]);
22815                                                 fine_digital_offset[result_idx]
22816                                                         += (NPHY_RSSICAL_NPOLL
22817                                                             / 2);
22818                                                 fine_digital_offset[result_idx]
22819                                                         /= NPHY_RSSICAL_NPOLL;
22820                                                 fine_digital_offset[result_idx]
22821                                                         = -fine_digital_offset
22822                                                                 [result_idx];
22823                                         } else {
22824                                                 fine_digital_offset[result_idx]
22825                                                         += (NPHY_RSSICAL_NPOLL
22826                                                             / 2);
22827                                                 fine_digital_offset[result_idx]
22828                                                         /= NPHY_RSSICAL_NPOLL;
22829                                         }
22830
22831                                         wlc_phy_scale_offset_rssi_nphy(
22832                                                 pi, 0x0,
22833                                                 (s8)
22834                                                 fine_digital_offset
22835                                                 [core *
22836                                                  2],
22837                                                 (core == PHY_CORE_0) ?
22838                                                 RADIO_MIMO_CORESEL_CORE1 :
22839                                                 RADIO_MIMO_CORESEL_CORE2,
22840                                                 (result_idx % 2 == 0) ?
22841                                                 NPHY_RAIL_I :
22842                                                 NPHY_RAIL_Q,
22843                                                 rssi_type);
22844                                 }
22845                         }
22846
22847                 }
22848         }
22849
22850         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22851         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22852
22853         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22854
22855         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22856         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22857         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22858
22859         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22860         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22861         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22862
22863         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22864         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22865         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22866         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22867         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22868         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22869         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22870                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22871                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22872                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22873                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22874         }
22875         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22876         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22877         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22878         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22879         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22880         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22881                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22882                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22883                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22884                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22885         }
22886         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22887         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22888
22889         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22890                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22891                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22892                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22893                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22894                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22895                 } else {
22896                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22897                                 read_radio_reg(pi,
22898                                                RADIO_2056_RX_RSSI_MISC |
22899                                                RADIO_2056_RX0);
22900                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22901                                 read_radio_reg(pi,
22902                                                RADIO_2056_RX_RSSI_MISC |
22903                                                RADIO_2056_RX1);
22904                 }
22905
22906                 pi->rssical_cache.rssical_phyregs_2G[0] =
22907                         read_phy_reg(pi, 0x1a6);
22908                 pi->rssical_cache.rssical_phyregs_2G[1] =
22909                         read_phy_reg(pi, 0x1ac);
22910                 pi->rssical_cache.rssical_phyregs_2G[2] =
22911                         read_phy_reg(pi, 0x1b2);
22912                 pi->rssical_cache.rssical_phyregs_2G[3] =
22913                         read_phy_reg(pi, 0x1b8);
22914                 pi->rssical_cache.rssical_phyregs_2G[4] =
22915                         read_phy_reg(pi, 0x1a4);
22916                 pi->rssical_cache.rssical_phyregs_2G[5] =
22917                         read_phy_reg(pi, 0x1aa);
22918                 pi->rssical_cache.rssical_phyregs_2G[6] =
22919                         read_phy_reg(pi, 0x1b0);
22920                 pi->rssical_cache.rssical_phyregs_2G[7] =
22921                         read_phy_reg(pi, 0x1b6);
22922                 pi->rssical_cache.rssical_phyregs_2G[8] =
22923                         read_phy_reg(pi, 0x1a5);
22924                 pi->rssical_cache.rssical_phyregs_2G[9] =
22925                         read_phy_reg(pi, 0x1ab);
22926                 pi->rssical_cache.rssical_phyregs_2G[10] =
22927                         read_phy_reg(pi, 0x1b1);
22928                 pi->rssical_cache.rssical_phyregs_2G[11] =
22929                         read_phy_reg(pi, 0x1b7);
22930
22931                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22932         } else {
22933                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22934                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22935                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22936                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22937                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22938                 } else {
22939                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22940                                 read_radio_reg(pi,
22941                                                RADIO_2056_RX_RSSI_MISC |
22942                                                RADIO_2056_RX0);
22943                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22944                                 read_radio_reg(pi,
22945                                                RADIO_2056_RX_RSSI_MISC |
22946                                                RADIO_2056_RX1);
22947                 }
22948
22949                 pi->rssical_cache.rssical_phyregs_5G[0] =
22950                         read_phy_reg(pi, 0x1a6);
22951                 pi->rssical_cache.rssical_phyregs_5G[1] =
22952                         read_phy_reg(pi, 0x1ac);
22953                 pi->rssical_cache.rssical_phyregs_5G[2] =
22954                         read_phy_reg(pi, 0x1b2);
22955                 pi->rssical_cache.rssical_phyregs_5G[3] =
22956                         read_phy_reg(pi, 0x1b8);
22957                 pi->rssical_cache.rssical_phyregs_5G[4] =
22958                         read_phy_reg(pi, 0x1a4);
22959                 pi->rssical_cache.rssical_phyregs_5G[5] =
22960                         read_phy_reg(pi, 0x1aa);
22961                 pi->rssical_cache.rssical_phyregs_5G[6] =
22962                         read_phy_reg(pi, 0x1b0);
22963                 pi->rssical_cache.rssical_phyregs_5G[7] =
22964                         read_phy_reg(pi, 0x1b6);
22965                 pi->rssical_cache.rssical_phyregs_5G[8] =
22966                         read_phy_reg(pi, 0x1a5);
22967                 pi->rssical_cache.rssical_phyregs_5G[9] =
22968                         read_phy_reg(pi, 0x1ab);
22969                 pi->rssical_cache.rssical_phyregs_5G[10] =
22970                         read_phy_reg(pi, 0x1b1);
22971                 pi->rssical_cache.rssical_phyregs_5G[11] =
22972                         read_phy_reg(pi, 0x1b7);
22973
22974                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22975         }
22976
22977         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22978         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22979 }
22980
22981 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22982 {
22983         s32 target_code;
22984         u16 classif_state;
22985         u16 clip_state[2];
22986         u16 rssi_ctrl_state[2], pd_state[2];
22987         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22988         u16 rfctrlintc_override_val;
22989         u16 clip_off[] = { 0xffff, 0xffff };
22990         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22991         u8 vcm, min_vcm, vcm_tmp[4];
22992         u8 vcm_final[4] = { 0, 0, 0, 0 };
22993         u8 result_idx, ctr;
22994         s32 poll_results[4][4] = {
22995                 {0, 0, 0, 0},
22996                 {0, 0, 0, 0},
22997                 {0, 0, 0, 0},
22998                 {0, 0, 0, 0}
22999         };
23000         s32 poll_miniq[4][2] = {
23001                 {0, 0},
23002                 {0, 0},
23003                 {0, 0},
23004                 {0, 0}
23005         };
23006         s32 min_d, curr_d;
23007         s32 fine_digital_offset[4];
23008         s32 poll_results_min[4] = { 0, 0, 0, 0 };
23009         s32 min_poll;
23010
23011         switch (rssi_type) {
23012         case NPHY_RSSI_SEL_NB:
23013                 target_code = NPHY_RSSICAL_NB_TARGET;
23014                 break;
23015         case NPHY_RSSI_SEL_W1:
23016                 target_code = NPHY_RSSICAL_W1_TARGET;
23017                 break;
23018         case NPHY_RSSI_SEL_W2:
23019                 target_code = NPHY_RSSICAL_W2_TARGET;
23020                 break;
23021         default:
23022                 return;
23023                 break;
23024         }
23025
23026         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
23027         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
23028         wlc_phy_clip_det_nphy(pi, 0, clip_state);
23029         wlc_phy_clip_det_nphy(pi, 1, clip_off);
23030
23031         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23032         rfctrlintc_override_val =
23033                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23034
23035         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23036         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23037         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23038         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23039
23040         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23041         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23042         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23043         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23044
23045         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23046                   RADIO_2055_WBRSSI_G2_PD;
23047         pd_state[0] =
23048                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23049         pd_state[1] =
23050                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23051         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23052         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23053         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23054                          RADIO_2055_WBRSSI_G2_SEL;
23055         rssi_ctrl_state[0] =
23056                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23057         rssi_ctrl_state[1] =
23058                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23059         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23060
23061         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23062                                        NPHY_RAIL_I, rssi_type);
23063         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23064                                        NPHY_RAIL_Q, rssi_type);
23065
23066         for (vcm = 0; vcm < 4; vcm++) {
23067
23068                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23069                 if (rssi_type != NPHY_RSSI_SEL_W2)
23070                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23071
23072                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23073                                        NPHY_RSSICAL_NPOLL);
23074
23075                 if ((rssi_type == NPHY_RSSI_SEL_W1)
23076                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
23077                         for (ctr = 0; ctr < 2; ctr++)
23078                                 poll_miniq[vcm][ctr] =
23079                                         min(poll_results[vcm][ctr * 2 + 0],
23080                                             poll_results[vcm][ctr * 2 + 1]);
23081                 }
23082         }
23083
23084         for (result_idx = 0; result_idx < 4; result_idx++) {
23085                 min_d = NPHY_RSSICAL_MAXD;
23086                 min_vcm = 0;
23087                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23088                 for (vcm = 0; vcm < 4; vcm++) {
23089                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23090                                       poll_results[vcm][result_idx] :
23091                                       poll_miniq[vcm][result_idx / 2]) -
23092                                      (target_code * NPHY_RSSICAL_NPOLL));
23093                         if (curr_d < min_d) {
23094                                 min_d = curr_d;
23095                                 min_vcm = vcm;
23096                         }
23097                         if (poll_results[vcm][result_idx] < min_poll)
23098                                 min_poll = poll_results[vcm][result_idx];
23099                 }
23100                 vcm_final[result_idx] = min_vcm;
23101                 poll_results_min[result_idx] = min_poll;
23102         }
23103
23104         if (rssi_type != NPHY_RSSI_SEL_W2)
23105                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23106
23107         for (result_idx = 0; result_idx < 4; result_idx++) {
23108                 fine_digital_offset[result_idx] =
23109                         (target_code * NPHY_RSSICAL_NPOLL) -
23110                         poll_results[vcm_final[result_idx]][result_idx];
23111                 if (fine_digital_offset[result_idx] < 0) {
23112                         fine_digital_offset[result_idx] =
23113                                 abs(fine_digital_offset[result_idx]);
23114                         fine_digital_offset[result_idx] +=
23115                                 (NPHY_RSSICAL_NPOLL / 2);
23116                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23117                         fine_digital_offset[result_idx] =
23118                                 -fine_digital_offset[result_idx];
23119                 } else {
23120                         fine_digital_offset[result_idx] +=
23121                                 (NPHY_RSSICAL_NPOLL / 2);
23122                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23123                 }
23124
23125                 if (poll_results_min[result_idx] ==
23126                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23127                         fine_digital_offset[result_idx] =
23128                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23129
23130                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23131                                                (s8)
23132                                                fine_digital_offset[result_idx],
23133                                                (result_idx / 2 ==
23134                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
23135                                                RADIO_MIMO_CORESEL_CORE2,
23136                                                (result_idx % 2 ==
23137                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23138                                                rssi_type);
23139         }
23140
23141         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23142         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23143         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23144                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23145                                      NPHY_RSSI_SEL_NB);
23146         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23147                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23148                                      NPHY_RSSI_SEL_W1);
23149         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23150                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23151                                      NPHY_RSSI_SEL_W2);
23152         else
23153                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23154                                      NPHY_RSSI_SEL_W2);
23155         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23156                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23157                                      NPHY_RSSI_SEL_NB);
23158         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23159                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23160                                      NPHY_RSSI_SEL_W1);
23161         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23162                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23163                                      NPHY_RSSI_SEL_W2);
23164         else
23165                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23166                                      NPHY_RSSI_SEL_W2);
23167
23168         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23169
23170         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23171         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23172         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23173         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23174
23175         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23176         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23177
23178         wlc_phy_resetcca_nphy(pi);
23179 }
23180
23181 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23182 {
23183         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23184                 wlc_phy_rssi_cal_nphy_rev3(pi);
23185         } else {
23186                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23187                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23188                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23189         }
23190 }
23191
23192 int
23193 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23194 {
23195         s16 rxpwr, rxpwr0, rxpwr1;
23196         s16 phyRx0_l, phyRx2_l;
23197
23198         rxpwr = 0;
23199         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23200         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23201
23202         if (rxpwr0 > 127)
23203                 rxpwr0 -= 256;
23204         if (rxpwr1 > 127)
23205                 rxpwr1 -= 256;
23206
23207         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23208         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23209         if (phyRx2_l > 127)
23210                 phyRx2_l -= 256;
23211
23212         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23213                 rxpwr0 = rxpwr1;
23214                 rxpwr1 = phyRx2_l;
23215         }
23216
23217         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23218                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23219         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23220                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23221         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23222                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23223
23224         return rxpwr;
23225 }
23226
23227 static void
23228 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23229                              u16 num_samps)
23230 {
23231         u16 t;
23232         u32 *data_buf = NULL;
23233
23234         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23235         if (data_buf == NULL)
23236                 return;
23237
23238         if (pi->phyhang_avoid)
23239                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23240
23241         for (t = 0; t < num_samps; t++)
23242                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23243                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23244         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23245                                  data_buf);
23246
23247         kfree(data_buf);
23248
23249         if (pi->phyhang_avoid)
23250                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251 }
23252
23253 static u16
23254 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23255                               u8 dac_test_mode)
23256 {
23257         u8 phy_bw, is_phybw40;
23258         u16 num_samps, t, spur;
23259         s32 theta = 0, rot = 0;
23260         u32 tbl_len;
23261         struct cordic_iq *tone_buf = NULL;
23262
23263         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23264         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23265         tbl_len = (phy_bw << 3);
23266
23267         if (dac_test_mode == 1) {
23268                 spur = read_phy_reg(pi, 0x01);
23269                 spur = (spur >> 15) & 1;
23270                 phy_bw = (spur == 1) ? 82 : 80;
23271                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23272
23273                 tbl_len = (phy_bw << 1);
23274         }
23275
23276         tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23277         if (tone_buf == NULL)
23278                 return 0;
23279
23280         num_samps = (u16) tbl_len;
23281         rot = ((f_kHz * 36) / phy_bw) / 100;
23282         theta = 0;
23283
23284         for (t = 0; t < num_samps; t++) {
23285
23286                 tone_buf[t] = cordic_calc_iq(theta);
23287
23288                 theta += rot;
23289
23290                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23291                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23292         }
23293
23294         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23295
23296         kfree(tone_buf);
23297
23298         return num_samps;
23299 }
23300
23301 static void
23302 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23303                         u16 wait, u8 iqmode, u8 dac_test_mode,
23304                         bool modify_bbmult)
23305 {
23306         u16 bb_mult;
23307         u8 phy_bw, sample_cmd;
23308         u16 orig_RfseqCoreActv;
23309         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23310             lpf_bw_ctl_miscreg4;
23311
23312         if (pi->phyhang_avoid)
23313                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23314
23315         phy_bw = 20;
23316         if (CHSPEC_IS40(pi->radio_chanspec))
23317                 phy_bw = 40;
23318
23319         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23320
23321                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23322                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23323                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23324                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23325                                               (0x7 << 8);
23326                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23327                                               (0x7 << 8);
23328                 } else {
23329                         wlc_phy_rfctrl_override_nphy_rev7(
23330                                 pi,
23331                                 (0x1 << 7),
23332                                 wlc_phy_read_lpf_bw_ctl_nphy
23333                                         (pi,
23334                                         0), 0, 0,
23335                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23336
23337                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23338
23339                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23340                                               (0x7 << 8);
23341                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23342                                               (0x7 << 8);
23343                 }
23344         }
23345
23346         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23347
23348                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23349                                         &bb_mult);
23350                 pi->nphy_bb_mult_save =
23351                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23352         }
23353
23354         if (modify_bbmult) {
23355                 bb_mult = (phy_bw == 20) ? 100 : 71;
23356                 bb_mult = (bb_mult << 8) + bb_mult;
23357                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23358                                          &bb_mult);
23359         }
23360
23361         if (pi->phyhang_avoid)
23362                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23363
23364         write_phy_reg(pi, 0xc6, num_samps - 1);
23365
23366         if (loops != 0xffff)
23367                 write_phy_reg(pi, 0xc4, loops - 1);
23368         else
23369                 write_phy_reg(pi, 0xc4, loops);
23370
23371         write_phy_reg(pi, 0xc5, wait);
23372
23373         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23374         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23375         if (iqmode) {
23376
23377                 and_phy_reg(pi, 0xc2, 0x7FFF);
23378
23379                 or_phy_reg(pi, 0xc2, 0x8000);
23380         } else {
23381
23382                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23383                 write_phy_reg(pi, 0xc3, sample_cmd);
23384         }
23385
23386         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23387
23388         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23389 }
23390
23391 int
23392 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23393                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23394 {
23395         u16 num_samps;
23396         u16 loops = 0xffff;
23397         u16 wait = 0;
23398
23399         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23400                                                   dac_test_mode);
23401         if (num_samps == 0)
23402                 return -EBADE;
23403
23404         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23405                                 dac_test_mode, modify_bbmult);
23406
23407         return 0;
23408 }
23409
23410 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23411 {
23412         u16 playback_status;
23413         u16 bb_mult;
23414
23415         if (pi->phyhang_avoid)
23416                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23417
23418         playback_status = read_phy_reg(pi, 0xc7);
23419         if (playback_status & 0x1)
23420                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23421         else if (playback_status & 0x2)
23422                 and_phy_reg(pi, 0xc2,
23423                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23424
23425         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23426
23427         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23428
23429                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23430                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23431                                          &bb_mult);
23432
23433                 pi->nphy_bb_mult_save = 0;
23434         }
23435
23436         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23437                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23438                         wlc_phy_rfctrl_override_nphy_rev7(
23439                                 pi,
23440                                 (0x1 << 7),
23441                                 0, 0, 1,
23442                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23443                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23444                 }
23445         }
23446
23447         if (pi->phyhang_avoid)
23448                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23449 }
23450
23451 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23452 {
23453         u32 *tx_pwrctrl_tbl = NULL;
23454         uint phyrev = pi->pubpi.phy_rev;
23455
23456         if (PHY_IPA(pi)) {
23457                 tx_pwrctrl_tbl =
23458                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23459         } else {
23460                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23461                         if (NREV_IS(phyrev, 3))
23462                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23463                         else if (NREV_IS(phyrev, 4))
23464                                 tx_pwrctrl_tbl =
23465                                         (pi->srom_fem5g.extpagain == 3) ?
23466                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23467                                         nphy_tpc_5GHz_txgain_rev4;
23468                         else
23469                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23470                 } else {
23471                         if (NREV_GE(phyrev, 7)) {
23472                                 if (pi->pubpi.radiorev == 3)
23473                                         tx_pwrctrl_tbl =
23474                                                 nphy_tpc_txgain_epa_2057rev3;
23475                                 else if (pi->pubpi.radiorev == 5)
23476                                         tx_pwrctrl_tbl =
23477                                                 nphy_tpc_txgain_epa_2057rev5;
23478                         } else {
23479                                 if (NREV_GE(phyrev, 5) &&
23480                                    (pi->srom_fem2g.extpagain == 3))
23481                                         tx_pwrctrl_tbl =
23482                                                 nphy_tpc_txgain_HiPwrEPA;
23483                                 else
23484                                         tx_pwrctrl_tbl =
23485                                                 nphy_tpc_txgain_rev3;
23486                         }
23487                 }
23488         }
23489         return tx_pwrctrl_tbl;
23490 }
23491
23492 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23493 {
23494         u16 base_idx[2], curr_gain[2];
23495         u8 core_no;
23496         struct nphy_txgains target_gain;
23497         u32 *tx_pwrctrl_tbl = NULL;
23498
23499         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23500                 if (pi->phyhang_avoid)
23501                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23502
23503                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23504                                         curr_gain);
23505
23506                 if (pi->phyhang_avoid)
23507                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23508
23509                 for (core_no = 0; core_no < 2; core_no++) {
23510                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23511                                 target_gain.ipa[core_no] =
23512                                         curr_gain[core_no] & 0x0007;
23513                                 target_gain.pad[core_no] =
23514                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23515                                 target_gain.pga[core_no] =
23516                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23517                                 target_gain.txgm[core_no] =
23518                                         ((curr_gain[core_no] & 0x7000) >> 12);
23519                                 target_gain.txlpf[core_no] =
23520                                         ((curr_gain[core_no] & 0x8000) >> 15);
23521                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23522                                 target_gain.ipa[core_no] =
23523                                         curr_gain[core_no] & 0x000F;
23524                                 target_gain.pad[core_no] =
23525                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23526                                 target_gain.pga[core_no] =
23527                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23528                                 target_gain.txgm[core_no] =
23529                                         ((curr_gain[core_no] & 0x7000) >> 12);
23530                         } else {
23531                                 target_gain.ipa[core_no] =
23532                                         curr_gain[core_no] & 0x0003;
23533                                 target_gain.pad[core_no] =
23534                                         ((curr_gain[core_no] & 0x000C) >> 2);
23535                                 target_gain.pga[core_no] =
23536                                         ((curr_gain[core_no] & 0x0070) >> 4);
23537                                 target_gain.txgm[core_no] =
23538                                         ((curr_gain[core_no] & 0x0380) >> 7);
23539                         }
23540                 }
23541         } else {
23542                 uint phyrev = pi->pubpi.phy_rev;
23543
23544                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23545                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23546                 for (core_no = 0; core_no < 2; core_no++) {
23547                         if (NREV_GE(phyrev, 3)) {
23548                                 tx_pwrctrl_tbl =
23549                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23550                                 if (NREV_GE(phyrev, 7)) {
23551                                         target_gain.ipa[core_no] =
23552                                                 (tx_pwrctrl_tbl
23553                                                  [base_idx[core_no]]
23554                                                  >> 16) & 0x7;
23555                                         target_gain.pad[core_no] =
23556                                                 (tx_pwrctrl_tbl
23557                                                  [base_idx[core_no]]
23558                                                  >> 19) & 0x1f;
23559                                         target_gain.pga[core_no] =
23560                                                 (tx_pwrctrl_tbl
23561                                                  [base_idx[core_no]]
23562                                                  >> 24) & 0xf;
23563                                         target_gain.txgm[core_no] =
23564                                                 (tx_pwrctrl_tbl
23565                                                  [base_idx[core_no]]
23566                                                  >> 28) & 0x7;
23567                                         target_gain.txlpf[core_no] =
23568                                                 (tx_pwrctrl_tbl
23569                                                  [base_idx[core_no]]
23570                                                  >> 31) & 0x1;
23571                                 } else {
23572                                         target_gain.ipa[core_no] =
23573                                                 (tx_pwrctrl_tbl
23574                                                  [base_idx[core_no]]
23575                                                  >> 16) & 0xf;
23576                                         target_gain.pad[core_no] =
23577                                                 (tx_pwrctrl_tbl
23578                                                  [base_idx[core_no]]
23579                                                  >> 20) & 0xf;
23580                                         target_gain.pga[core_no] =
23581                                                 (tx_pwrctrl_tbl
23582                                                  [base_idx[core_no]]
23583                                                  >> 24) & 0xf;
23584                                         target_gain.txgm[core_no] =
23585                                                 (tx_pwrctrl_tbl
23586                                                 [base_idx[core_no]]
23587                                                  >> 28) & 0x7;
23588                                 }
23589                         } else {
23590                                 target_gain.ipa[core_no] =
23591                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23592                                          16) & 0x3;
23593                                 target_gain.pad[core_no] =
23594                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23595                                          18) & 0x3;
23596                                 target_gain.pga[core_no] =
23597                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23598                                          20) & 0x7;
23599                                 target_gain.txgm[core_no] =
23600                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23601                                          23) & 0x7;
23602                         }
23603                 }
23604         }
23605
23606         return target_gain;
23607 }
23608
23609 static void
23610 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23611                               struct nphy_txgains target_gain,
23612                               struct nphy_iqcal_params *params)
23613 {
23614         u8 k;
23615         int idx;
23616         u16 gain_index;
23617         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23618
23619         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23620                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23621                         params->txlpf = target_gain.txlpf[core_no];
23622
23623                 params->txgm = target_gain.txgm[core_no];
23624                 params->pga = target_gain.pga[core_no];
23625                 params->pad = target_gain.pad[core_no];
23626                 params->ipa = target_gain.ipa[core_no];
23627                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23628                         params->cal_gain =
23629                                 ((params->txlpf << 15) | (params->txgm << 12) |
23630                                  (params->pga << 8) |
23631                                  (params->pad << 3) | (params->ipa));
23632                 else
23633                         params->cal_gain =
23634                                 ((params->txgm << 12) | (params->pga << 8) |
23635                                  (params->pad << 4) | (params->ipa));
23636
23637                 params->ncorr[0] = 0x79;
23638                 params->ncorr[1] = 0x79;
23639                 params->ncorr[2] = 0x79;
23640                 params->ncorr[3] = 0x79;
23641                 params->ncorr[4] = 0x79;
23642         } else {
23643
23644                 gain_index = ((target_gain.pad[core_no] << 0) |
23645                               (target_gain.pga[core_no] << 4) |
23646                               (target_gain.txgm[core_no] << 8));
23647
23648                 idx = -1;
23649                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23650                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23651                             gain_index) {
23652                                 idx = k;
23653                                 break;
23654                         }
23655                 }
23656
23657                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23658                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23659                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23660                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23661                                     (params->pad << 2));
23662                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23663                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23664                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23665                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23666         }
23667 }
23668
23669 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23670 {
23671         u16 jtag_core, core;
23672
23673         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23674
23675                 for (core = 0; core <= 1; core++) {
23676
23677                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23678                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23679                                                 TX_SSI_MASTER);
23680
23681                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23682                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23683                                                 IQCAL_VCM_HG);
23684
23685                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23686                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23687                                                 IQCAL_IDAC);
23688
23689                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23690                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23691                                                 TSSI_VCM);
23692
23693                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23694
23695                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23696                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23697                                                 TX_SSI_MUX);
23698
23699                         if (pi->pubpi.radiorev != 5)
23700                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23701                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23702                                                         core,
23703                                                         TSSIA);
23704
23705                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23706                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23707
23708                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23709                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23710                                                 TSSI_MISC1);
23711
23712                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23713                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23714                                                  TX_SSI_MASTER, 0x0a);
23715                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23716                                                  IQCAL_VCM_HG, 0x43);
23717                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23718                                                  IQCAL_IDAC, 0x55);
23719                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23720                                                  TSSI_VCM, 0x00);
23721                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23722                                                  TSSIG, 0x00);
23723                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23724                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23725                                                          core, TX_SSI_MUX, 0x4);
23726                                         if (!(pi->
23727                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23728                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23729                                                                  TX, core,
23730                                                                  TSSIA, 0x31);
23731                                         else
23732                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23733                                                                  TX, core,
23734                                                                  TSSIA, 0x21);
23735                                 }
23736                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23737                                                  TSSI_MISC1, 0x00);
23738                         } else {
23739                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23740                                                  TX_SSI_MASTER, 0x06);
23741                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23742                                                  IQCAL_VCM_HG, 0x43);
23743                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23744                                                  IQCAL_IDAC, 0x55);
23745                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23746                                                  TSSI_VCM, 0x00);
23747
23748                                 if (pi->pubpi.radiorev != 5)
23749                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23750                                                          core, TSSIA, 0x00);
23751                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23752                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23753                                                          core, TX_SSI_MUX,
23754                                                          0x06);
23755                                         if (!(pi->
23756                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23757                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23758                                                                  TX, core,
23759                                                                  TSSIG, 0x31);
23760                                         else
23761                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23762                                                                  TX, core,
23763                                                                  TSSIG, 0x21);
23764                                 }
23765                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23766                                                  TSSI_MISC1, 0x00);
23767                         }
23768                 }
23769         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23770
23771                 for (core = 0; core <= 1; core++) {
23772                         jtag_core =
23773                                 (core ==
23774                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23775
23776                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23777                                 read_radio_reg(pi,
23778                                                RADIO_2056_TX_TX_SSI_MASTER |
23779                                                jtag_core);
23780
23781                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23782                                 read_radio_reg(pi,
23783                                                RADIO_2056_TX_IQCAL_VCM_HG |
23784                                                jtag_core);
23785
23786                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23787                                 read_radio_reg(pi,
23788                                                RADIO_2056_TX_IQCAL_IDAC |
23789                                                jtag_core);
23790
23791                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23792                                 read_radio_reg(
23793                                         pi,
23794                                         RADIO_2056_TX_TSSI_VCM |
23795                                         jtag_core);
23796
23797                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23798                                 read_radio_reg(pi,
23799                                                RADIO_2056_TX_TX_AMP_DET |
23800                                                jtag_core);
23801
23802                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23803                                 read_radio_reg(pi,
23804                                                RADIO_2056_TX_TX_SSI_MUX |
23805                                                jtag_core);
23806
23807                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23808                                 read_radio_reg(pi,
23809                                                RADIO_2056_TX_TSSIA | jtag_core);
23810
23811                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23812                                 read_radio_reg(pi,
23813                                                RADIO_2056_TX_TSSIG | jtag_core);
23814
23815                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23816                                 read_radio_reg(pi,
23817                                                RADIO_2056_TX_TSSI_MISC1 |
23818                                                jtag_core);
23819
23820                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23821                                 read_radio_reg(pi,
23822                                                RADIO_2056_TX_TSSI_MISC2 |
23823                                                jtag_core);
23824
23825                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23826                                 read_radio_reg(pi,
23827                                                RADIO_2056_TX_TSSI_MISC3 |
23828                                                jtag_core);
23829
23830                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23831                                 write_radio_reg(pi,
23832                                                 RADIO_2056_TX_TX_SSI_MASTER |
23833                                                 jtag_core, 0x0a);
23834                                 write_radio_reg(pi,
23835                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23836                                                 jtag_core, 0x40);
23837                                 write_radio_reg(pi,
23838                                                 RADIO_2056_TX_IQCAL_IDAC |
23839                                                 jtag_core, 0x55);
23840                                 write_radio_reg(pi,
23841                                                 RADIO_2056_TX_TSSI_VCM |
23842                                                 jtag_core, 0x00);
23843                                 write_radio_reg(pi,
23844                                                 RADIO_2056_TX_TX_AMP_DET |
23845                                                 jtag_core, 0x00);
23846
23847                                 if (PHY_IPA(pi)) {
23848                                         write_radio_reg(
23849                                                 pi,
23850                                                 RADIO_2056_TX_TX_SSI_MUX
23851                                                 | jtag_core, 0x4);
23852                                         write_radio_reg(pi,
23853                                                         RADIO_2056_TX_TSSIA |
23854                                                         jtag_core, 0x1);
23855                                 } else {
23856                                         write_radio_reg(
23857                                                 pi,
23858                                                 RADIO_2056_TX_TX_SSI_MUX
23859                                                 | jtag_core, 0x00);
23860                                         write_radio_reg(pi,
23861                                                         RADIO_2056_TX_TSSIA |
23862                                                         jtag_core, 0x2f);
23863                                 }
23864                                 write_radio_reg(pi,
23865                                                 RADIO_2056_TX_TSSIG | jtag_core,
23866                                                 0x00);
23867                                 write_radio_reg(pi,
23868                                                 RADIO_2056_TX_TSSI_MISC1 |
23869                                                 jtag_core, 0x00);
23870
23871                                 write_radio_reg(pi,
23872                                                 RADIO_2056_TX_TSSI_MISC2 |
23873                                                 jtag_core, 0x00);
23874                                 write_radio_reg(pi,
23875                                                 RADIO_2056_TX_TSSI_MISC3 |
23876                                                 jtag_core, 0x00);
23877                         } else {
23878                                 write_radio_reg(pi,
23879                                                 RADIO_2056_TX_TX_SSI_MASTER |
23880                                                 jtag_core, 0x06);
23881                                 write_radio_reg(pi,
23882                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23883                                                 jtag_core, 0x40);
23884                                 write_radio_reg(pi,
23885                                                 RADIO_2056_TX_IQCAL_IDAC |
23886                                                 jtag_core, 0x55);
23887                                 write_radio_reg(pi,
23888                                                 RADIO_2056_TX_TSSI_VCM |
23889                                                 jtag_core, 0x00);
23890                                 write_radio_reg(pi,
23891                                                 RADIO_2056_TX_TX_AMP_DET |
23892                                                 jtag_core, 0x00);
23893                                 write_radio_reg(pi,
23894                                                 RADIO_2056_TX_TSSIA | jtag_core,
23895                                                 0x00);
23896
23897                                 if (PHY_IPA(pi)) {
23898
23899                                         write_radio_reg(
23900                                                 pi,
23901                                                 RADIO_2056_TX_TX_SSI_MUX
23902                                                 | jtag_core, 0x06);
23903                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23904                                                 write_radio_reg(
23905                                                         pi,
23906                                                         RADIO_2056_TX_TSSIG
23907                                                         | jtag_core,
23908                                                         0x11);
23909                                         else
23910                                                 write_radio_reg(
23911                                                         pi,
23912                                                         RADIO_2056_TX_TSSIG
23913                                                         | jtag_core,
23914                                                         0x1);
23915                                 } else {
23916                                         write_radio_reg(
23917                                                 pi,
23918                                                 RADIO_2056_TX_TX_SSI_MUX
23919                                                 | jtag_core, 0x00);
23920                                         write_radio_reg(pi,
23921                                                         RADIO_2056_TX_TSSIG |
23922                                                         jtag_core, 0x20);
23923                                 }
23924
23925                                 write_radio_reg(pi,
23926                                                 RADIO_2056_TX_TSSI_MISC1 |
23927                                                 jtag_core, 0x00);
23928                                 write_radio_reg(pi,
23929                                                 RADIO_2056_TX_TSSI_MISC2 |
23930                                                 jtag_core, 0x00);
23931                                 write_radio_reg(pi,
23932                                                 RADIO_2056_TX_TSSI_MISC3 |
23933                                                 jtag_core, 0x00);
23934                         }
23935                 }
23936         } else {
23937
23938                 pi->tx_rx_cal_radio_saveregs[0] =
23939                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23940                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23941                 pi->tx_rx_cal_radio_saveregs[1] =
23942                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23943                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23944
23945                 pi->tx_rx_cal_radio_saveregs[2] =
23946                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23947                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23948                 pi->tx_rx_cal_radio_saveregs[3] =
23949                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23950                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23951
23952                 pi->tx_rx_cal_radio_saveregs[4] =
23953                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23954                 pi->tx_rx_cal_radio_saveregs[5] =
23955                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23956
23957                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23958                     0) {
23959
23960                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23961                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23962                 } else {
23963
23964                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23965                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23966                 }
23967
23968                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23969
23970                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23971                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23972                 } else {
23973
23974                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23975                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23976                 }
23977         }
23978 }
23979
23980 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23981 {
23982         u16 jtag_core, core;
23983
23984         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23985                 for (core = 0; core <= 1; core++) {
23986
23987                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23988                                          TX_SSI_MASTER,
23989                                          pi->
23990                                          tx_rx_cal_radio_saveregs[(core * 11) +
23991                                                                   0]);
23992
23993                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23994                                          pi->
23995                                          tx_rx_cal_radio_saveregs[(core * 11) +
23996                                                                   1]);
23997
23998                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23999                                          pi->
24000                                          tx_rx_cal_radio_saveregs[(core * 11) +
24001                                                                   2]);
24002
24003                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
24004                                          pi->
24005                                          tx_rx_cal_radio_saveregs[(core * 11) +
24006                                                                   3]);
24007
24008                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
24009                                          pi->
24010                                          tx_rx_cal_radio_saveregs[(core * 11) +
24011                                                                   5]);
24012
24013                         if (pi->pubpi.radiorev != 5)
24014                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24015                                                  TSSIA,
24016                                                  pi->tx_rx_cal_radio_saveregs
24017                                                              [(core * 11) + 6]);
24018
24019                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
24020                                          pi->
24021                                          tx_rx_cal_radio_saveregs[(core * 11) +
24022                                                                   7]);
24023
24024                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
24025                                          pi->
24026                                          tx_rx_cal_radio_saveregs[(core * 11) +
24027                                                                   8]);
24028                 }
24029         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24030                 for (core = 0; core <= 1; core++) {
24031                         jtag_core = (core == PHY_CORE_0) ?
24032                                      RADIO_2056_TX0 : RADIO_2056_TX1;
24033
24034                         write_radio_reg(pi,
24035                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24036                                         pi->
24037                                         tx_rx_cal_radio_saveregs[(core * 11) +
24038                                                                  0]);
24039
24040                         write_radio_reg(pi,
24041                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24042                                         pi->
24043                                         tx_rx_cal_radio_saveregs[(core * 11) +
24044                                                                  1]);
24045
24046                         write_radio_reg(pi,
24047                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24048                                         pi->
24049                                         tx_rx_cal_radio_saveregs[(core * 11) +
24050                                                                  2]);
24051
24052                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24053                                         pi->
24054                                         tx_rx_cal_radio_saveregs[(core * 11) +
24055                                                                  3]);
24056
24057                         write_radio_reg(pi,
24058                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
24059                                         pi->
24060                                         tx_rx_cal_radio_saveregs[(core * 11) +
24061                                                                  4]);
24062
24063                         write_radio_reg(pi,
24064                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24065                                         pi->
24066                                         tx_rx_cal_radio_saveregs[(core * 11) +
24067                                                                  5]);
24068
24069                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24070                                         pi->
24071                                         tx_rx_cal_radio_saveregs[(core * 11) +
24072                                                                  6]);
24073
24074                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24075                                         pi->
24076                                         tx_rx_cal_radio_saveregs[(core * 11) +
24077                                                                  7]);
24078
24079                         write_radio_reg(pi,
24080                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24081                                         pi->
24082                                         tx_rx_cal_radio_saveregs[(core * 11) +
24083                                                                  8]);
24084
24085                         write_radio_reg(pi,
24086                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24087                                         pi->
24088                                         tx_rx_cal_radio_saveregs[(core * 11) +
24089                                                                  9]);
24090
24091                         write_radio_reg(pi,
24092                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24093                                         pi->
24094                                         tx_rx_cal_radio_saveregs[(core * 11) +
24095                                                                  10]);
24096                 }
24097         } else {
24098
24099                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24100                                 pi->tx_rx_cal_radio_saveregs[0]);
24101                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24102                                 pi->tx_rx_cal_radio_saveregs[1]);
24103                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24104                                 pi->tx_rx_cal_radio_saveregs[2]);
24105                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24106                                 pi->tx_rx_cal_radio_saveregs[3]);
24107                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24108                                 pi->tx_rx_cal_radio_saveregs[4]);
24109                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24110                                 pi->tx_rx_cal_radio_saveregs[5]);
24111         }
24112 }
24113
24114 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24115 {
24116         u16 val, mask;
24117
24118         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24119                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24120                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24121
24122                 mask = ((0x3 << 8) | (0x3 << 10));
24123                 val = (0x2 << 8);
24124                 val |= (0x2 << 10);
24125                 mod_phy_reg(pi, 0xa6, mask, val);
24126                 mod_phy_reg(pi, 0xa7, mask, val);
24127
24128                 val = read_phy_reg(pi, 0x8f);
24129                 pi->tx_rx_cal_phy_saveregs[2] = val;
24130                 val |= ((0x1 << 9) | (0x1 << 10));
24131                 write_phy_reg(pi, 0x8f, val);
24132
24133                 val = read_phy_reg(pi, 0xa5);
24134                 pi->tx_rx_cal_phy_saveregs[3] = val;
24135                 val |= ((0x1 << 9) | (0x1 << 10));
24136                 write_phy_reg(pi, 0xa5, val);
24137
24138                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24139                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24140
24141                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24142                                         &val);
24143                 pi->tx_rx_cal_phy_saveregs[5] = val;
24144                 val = 0;
24145                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24146                                          &val);
24147
24148                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24149                                         &val);
24150                 pi->tx_rx_cal_phy_saveregs[6] = val;
24151                 val = 0;
24152                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24153                                          &val);
24154
24155                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24156                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24157
24158                 if (!(pi->use_int_tx_iqlo_cal_nphy))
24159                         wlc_phy_rfctrlintc_override_nphy(
24160                                 pi,
24161                                 NPHY_RfctrlIntc_override_PA,
24162                                 1,
24163                                 RADIO_MIMO_CORESEL_CORE1
24164                                 |
24165                                 RADIO_MIMO_CORESEL_CORE2);
24166                 else
24167                         wlc_phy_rfctrlintc_override_nphy(
24168                                 pi,
24169                                 NPHY_RfctrlIntc_override_PA,
24170                                 0,
24171                                 RADIO_MIMO_CORESEL_CORE1
24172                                 |
24173                                 RADIO_MIMO_CORESEL_CORE2);
24174
24175                 wlc_phy_rfctrlintc_override_nphy(pi,
24176                                                  NPHY_RfctrlIntc_override_TRSW,
24177                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
24178                 wlc_phy_rfctrlintc_override_nphy(pi,
24179                                                  NPHY_RfctrlIntc_override_TRSW,
24180                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
24181
24182                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24183                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24184                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24185                             0x29b, (0x1 << 0), (0) << 0);
24186
24187                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24188                             0x29b, (0x1 << 0), (0) << 0);
24189
24190                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24191                     || NREV_GE(pi->pubpi.phy_rev, 8))
24192                         wlc_phy_rfctrl_override_nphy_rev7(
24193                                 pi, (0x1 << 7),
24194                                 wlc_phy_read_lpf_bw_ctl_nphy
24195                                         (pi,
24196                                         0), 0, 0,
24197                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24198
24199                 if (pi->use_int_tx_iqlo_cal_nphy
24200                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24201
24202                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24203
24204                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24205                                               1 << 4);
24206
24207                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24208                                         mod_radio_reg(
24209                                                 pi,
24210                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24211                                                 1, 0);
24212                                         mod_radio_reg(
24213                                                 pi,
24214                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24215                                                 1, 0);
24216                                 } else {
24217                                         mod_radio_reg(
24218                                              pi,
24219                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24220                                              1, 0);
24221                                         mod_radio_reg(
24222                                              pi,
24223                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24224                                              1, 0);
24225                                 }
24226                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24227                                 wlc_phy_rfctrl_override_nphy_rev7(
24228                                         pi,
24229                                         (0x1 << 3), 0,
24230                                         0x3, 0,
24231                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24232                         }
24233                 }
24234         } else {
24235                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24236                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24237
24238                 mask = ((0x3 << 12) | (0x3 << 14));
24239                 val = (0x2 << 12);
24240                 val |= (0x2 << 14);
24241                 mod_phy_reg(pi, 0xa6, mask, val);
24242                 mod_phy_reg(pi, 0xa7, mask, val);
24243
24244                 val = read_phy_reg(pi, 0xa5);
24245                 pi->tx_rx_cal_phy_saveregs[2] = val;
24246                 val |= ((0x1 << 12) | (0x1 << 13));
24247                 write_phy_reg(pi, 0xa5, val);
24248
24249                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24250                                         &val);
24251                 pi->tx_rx_cal_phy_saveregs[3] = val;
24252                 val |= 0x2000;
24253                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24254                                          &val);
24255
24256                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24257                                         &val);
24258                 pi->tx_rx_cal_phy_saveregs[4] = val;
24259                 val |= 0x2000;
24260                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24261                                          &val);
24262
24263                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24264                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24265                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24266                 write_phy_reg(pi, 0x91, val);
24267                 write_phy_reg(pi, 0x92, val);
24268         }
24269 }
24270
24271 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24272 {
24273         u16 mask;
24274
24275         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24276                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24277                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24278                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24279                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24280                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24281
24282                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24283                                          &pi->tx_rx_cal_phy_saveregs[5]);
24284                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24285                                          &pi->tx_rx_cal_phy_saveregs[6]);
24286
24287                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24288                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24289
24290                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24291                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24292
24293                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24294                     || NREV_GE(pi->pubpi.phy_rev, 8))
24295                         wlc_phy_rfctrl_override_nphy_rev7(
24296                                 pi, (0x1 << 7), 0, 0,
24297                                 1,
24298                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24299
24300                 wlc_phy_resetcca_nphy(pi);
24301
24302                 if (pi->use_int_tx_iqlo_cal_nphy
24303                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24304
24305                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24306                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24307                                         mod_radio_reg(
24308                                                 pi,
24309                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24310                                                 1, 1);
24311                                         mod_radio_reg(
24312                                                 pi,
24313                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24314                                                 1, 1);
24315                                 } else {
24316                                         mod_radio_reg(
24317                                              pi,
24318                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24319                                              1, 1);
24320                                         mod_radio_reg(
24321                                              pi,
24322                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24323                                              1, 1);
24324                                 }
24325
24326                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24327                                               0);
24328                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24329                                 wlc_phy_rfctrl_override_nphy_rev7(
24330                                         pi,
24331                                         (0x1 << 3), 0,
24332                                         0x3, 1,
24333                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24334                         }
24335                 }
24336         } else {
24337                 mask = ((0x3 << 12) | (0x3 << 14));
24338                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24339                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24340                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24341
24342                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24343                                          &pi->tx_rx_cal_phy_saveregs[3]);
24344
24345                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24346                                          &pi->tx_rx_cal_phy_saveregs[4]);
24347
24348                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24349                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24350         }
24351 }
24352
24353 void
24354 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24355 {
24356         u16 tssi_reg;
24357         s32 temp, pwrindex[2];
24358         s32 idle_tssi[2];
24359         s32 rssi_buf[4];
24360         s32 tssival[2];
24361         u8 tssi_type;
24362
24363         tssi_reg = read_phy_reg(pi, 0x1e9);
24364
24365         temp = (s32) (tssi_reg & 0x3f);
24366         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24367
24368         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24369         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24370
24371         tssi_type =
24372                 CHSPEC_IS5G(pi->radio_chanspec) ?
24373                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24374
24375         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24376
24377         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24378         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24379
24380         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24381         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24382
24383         if (pwrindex[0] < 0)
24384                 pwrindex[0] = 0;
24385         else if (pwrindex[0] > 63)
24386                 pwrindex[0] = 63;
24387
24388         if (pwrindex[1] < 0)
24389                 pwrindex[1] = 0;
24390         else if (pwrindex[1] > 63)
24391                 pwrindex[1] = 63;
24392
24393         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24394                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24395         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24396                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24397 }
24398
24399 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24400 {
24401         int index;
24402         u32 bbmult_scale;
24403         u16 bbmult;
24404         u16 tblentry;
24405
24406         struct nphy_txiqcal_ladder ladder_lo[] = {
24407                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24408                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24409                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24410         };
24411
24412         struct nphy_txiqcal_ladder ladder_iq[] = {
24413                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24414                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24415                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24416         };
24417
24418         bbmult = (core == PHY_CORE_0) ?
24419                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24420                  (pi->nphy_txcal_bbmult & 0xff);
24421
24422         for (index = 0; index < 18; index++) {
24423                 bbmult_scale = ladder_lo[index].percent * bbmult;
24424                 bbmult_scale /= 100;
24425
24426                 tblentry =
24427                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24428                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24429                                          &tblentry);
24430
24431                 bbmult_scale = ladder_iq[index].percent * bbmult;
24432                 bbmult_scale /= 100;
24433
24434                 tblentry =
24435                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24436                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24437                                          16, &tblentry);
24438         }
24439 }
24440
24441 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24442 {
24443         u16 tmp;
24444         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24445
24446         tmp = (tmp & (0x7f << 8)) >> 8;
24447         return (u8) tmp;
24448 }
24449
24450 static void
24451 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24452 {
24453         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24454
24455         if (NREV_GT(pi->pubpi.phy_rev, 1))
24456                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24457 }
24458
24459 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24460 {
24461         u16 m0m1;
24462
24463         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24464
24465         return m0m1;
24466 }
24467
24468 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24469 {
24470         u16 m0m1 = (u16) ((m0 << 8) | m1);
24471
24472         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24473         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24474 }
24475
24476 static void
24477 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24478                             struct nphy_papd_restore_state *state, u8 core)
24479 {
24480         s32 tone_freq;
24481         u8 off_core;
24482         u16 mixgain = 0;
24483
24484         off_core = core ^ 0x1;
24485         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24486
24487                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24488                     || NREV_GE(pi->pubpi.phy_rev, 8))
24489                         wlc_phy_rfctrl_override_nphy_rev7(
24490                                 pi, (0x1 << 7),
24491                                 wlc_phy_read_lpf_bw_ctl_nphy
24492                                         (pi,
24493                                         0), 0, 0,
24494                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24495
24496                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24497                         if (pi->pubpi.radiorev == 5)
24498                                 mixgain = (core == 0) ? 0x20 : 0x00;
24499                         else if ((pi->pubpi.radiorev == 7)
24500                                  || (pi->pubpi.radiorev == 8))
24501                                 mixgain = 0x00;
24502                         else if ((pi->pubpi.radiorev <= 4)
24503                                  || (pi->pubpi.radiorev == 6))
24504                                 mixgain = 0x00;
24505                 } else {
24506                         if ((pi->pubpi.radiorev == 4) ||
24507                             (pi->pubpi.radiorev == 6))
24508                                 mixgain = 0x50;
24509                         else if ((pi->pubpi.radiorev == 3)
24510                                  || (pi->pubpi.radiorev == 7)
24511                                  || (pi->pubpi.radiorev == 8))
24512                                 mixgain = 0x0;
24513                 }
24514
24515                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24516                                                   mixgain, (1 << core), 0,
24517                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24518
24519                 wlc_phy_rfctrl_override_1tomany_nphy(
24520                         pi,
24521                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24522                         1, (1 << core), 0);
24523                 wlc_phy_rfctrl_override_1tomany_nphy(
24524                         pi,
24525                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24526                         0, (1 << off_core), 0);
24527
24528                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24529                                                   0, 0x3, 0,
24530                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24531                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24532                                                   (1 << core), 0,
24533                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24534                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24535                                                   (1 << core), 0,
24536                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24537                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24538                                                   (1 << core), 0,
24539                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24540                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24541                                                   (1 << core), 0,
24542                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24543                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24544                                                   (1 << core), 0,
24545                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24546                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24547                                                   (1 << core), 0,
24548                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24549                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24550                                                   (1 << core), 0,
24551                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24552
24553                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24554                                                   0, (1 << core), 0,
24555                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24556                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24557                                                   (1 << core), 0,
24558                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24559
24560                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24561                                                     0xa6 : 0xa7);
24562                 state->afeoverride[core] =
24563                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24564                 state->afectrl[off_core] =
24565                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24566                 state->afeoverride[off_core] =
24567                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24568
24569                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24570                             (0x1 << 2), 0);
24571                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24572                                  0xa5), (0x1 << 2), (0x1 << 2));
24573
24574                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24575                             (0x1 << 2), (0x1 << 2));
24576                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24577                                  0x8f), (0x1 << 2), (0x1 << 2));
24578
24579                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24580                         state->pwrup[core] =
24581                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24582                                                 TXRXCOUPLE_2G_PWRUP);
24583                         state->atten[core] =
24584                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24585                                                 TXRXCOUPLE_2G_ATTEN);
24586                         state->pwrup[off_core] =
24587                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24588                                                 TXRXCOUPLE_2G_PWRUP);
24589                         state->atten[off_core] =
24590                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24591                                                 TXRXCOUPLE_2G_ATTEN);
24592
24593                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24594                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24595
24596                         if ((pi->pubpi.radiorev == 3) ||
24597                             (pi->pubpi.radiorev == 4) ||
24598                             (pi->pubpi.radiorev == 6))
24599                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24600                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24601                         else if (pi->pubpi.radiorev == 5)
24602                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24603                                                  TXRXCOUPLE_2G_ATTEN,
24604                                                  (core == 0) ? 0xf7 : 0xf2);
24605                         else if ((pi->pubpi.radiorev == 7)
24606                                  || (pi->pubpi.radiorev == 8))
24607                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24608                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24609
24610                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24611                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24612                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24613                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24614                 } else {
24615                         state->pwrup[core] =
24616                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24617                                                 TXRXCOUPLE_5G_PWRUP);
24618                         state->atten[core] =
24619                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24620                                                 TXRXCOUPLE_5G_ATTEN);
24621                         state->pwrup[off_core] =
24622                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24623                                                 TXRXCOUPLE_5G_PWRUP);
24624                         state->atten[off_core] =
24625                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24626                                                 TXRXCOUPLE_5G_ATTEN);
24627
24628                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24629                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24630
24631                         if ((pi->pubpi.radiorev == 7)
24632                             || (pi->pubpi.radiorev == 8))
24633                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24635
24636                         else
24637                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24639
24640                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24641                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24642                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24643                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24644                 }
24645
24646                 tone_freq = 4000;
24647
24648                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24649
24650                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24651                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24652
24653                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24654                             0x2a4, (0x1 << 13), (1) << 13);
24655
24656                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24657                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24658
24659                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24660                             0x2a4, (0x1 << 13), (0) << 13);
24661
24662         } else {
24663
24664                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24665
24666                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24667
24668                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24669
24670                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24671                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24672
24673                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24674                                                     0xa6 : 0xa7);
24675                 state->afeoverride[core] =
24676                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24677
24678                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24679                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24680                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24681                                  0xa5),
24682                             (0x1 << 0) |
24683                             (0x1 << 1) |
24684                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24685
24686                 state->vga_master[core] =
24687                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24688                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24689                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24690                         state->fbmix[core] =
24691                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24692                                                 TXFBMIX_G);
24693                         state->intpa_master[core] =
24694                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24695                                                 INTPAG_MASTER);
24696
24697                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24698                                          0x03);
24699                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24700                                          INTPAG_MASTER, 0x04);
24701                 } else {
24702                         state->fbmix[core] =
24703                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24704                                                 TXFBMIX_A);
24705                         state->intpa_master[core] =
24706                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24707                                                 INTPAA_MASTER);
24708
24709                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24710                                          0x03);
24711                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24712                                          INTPAA_MASTER, 0x04);
24713
24714                 }
24715
24716                 tone_freq = 4000;
24717
24718                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24719
24720                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24721                             0x29b, (0x1 << 0), (1) << 0);
24722
24723                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24724                             0x29b, (0x1 << 0), (0) << 0);
24725
24726                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24727         }
24728 }
24729
24730 static void
24731 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24732                               struct nphy_papd_restore_state *state)
24733 {
24734         u8 core;
24735
24736         wlc_phy_stopplayback_nphy(pi);
24737
24738         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24739
24740                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24741
24742                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24743                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24744                                                  TXRXCOUPLE_2G_PWRUP, 0);
24745                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24746                                                  TXRXCOUPLE_2G_ATTEN,
24747                                                  state->atten[core]);
24748                         } else {
24749                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24750                                                  TXRXCOUPLE_5G_PWRUP, 0);
24751                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24752                                                  TXRXCOUPLE_5G_ATTEN,
24753                                                  state->atten[core]);
24754                         }
24755                 }
24756
24757                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24758                         wlc_phy_rfctrl_override_nphy_rev7(
24759                                 pi, (0x1 << 2),
24760                                 1, 0x3, 0,
24761                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24762                 else
24763                         wlc_phy_rfctrl_override_nphy_rev7(
24764                                 pi, (0x1 << 2),
24765                                 0, 0x3, 1,
24766                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24767
24768                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24769                                                   0, 0x3, 1,
24770                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24771                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24772                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24773                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24774                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24775                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24776                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24777                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24778                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24779                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24780                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24781                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24782                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24783                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24784                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24785                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24786                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24787                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24788                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24789                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24790                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24791                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24792                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24793                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24794                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24795                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24796                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24797                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24798                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24799                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24800                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24801
24802                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24803
24804                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24805                                       0xa6 : 0xa7, state->afectrl[core]);
24806                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24807                                       0xa5, state->afeoverride[core]);
24808                 }
24809
24810                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24811                                             (state->mm & 0xff));
24812
24813                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24814                     || NREV_GE(pi->pubpi.phy_rev, 8))
24815                         wlc_phy_rfctrl_override_nphy_rev7(
24816                                 pi, (0x1 << 7), 0, 0,
24817                                 1,
24818                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24819         } else {
24820                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24821                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24822                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24823
24824                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24825                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24826
24827                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24828
24829                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24830                                          state->vga_master[core]);
24831                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24832                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24833                                                  TXFBMIX_G, state->fbmix[core]);
24834                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24835                                                  INTPAG_MASTER,
24836                                                  state->intpa_master[core]);
24837                         } else {
24838                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24839                                                  TXFBMIX_A, state->fbmix[core]);
24840                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24841                                                  INTPAA_MASTER,
24842                                                  state->intpa_master[core]);
24843                         }
24844
24845                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24846                                       0xa6 : 0xa7, state->afectrl[core]);
24847                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24848                                       0xa5, state->afeoverride[core]);
24849                 }
24850
24851                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24852                                             (state->mm & 0xff));
24853
24854                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24855         }
24856 }
24857
24858 static void
24859 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24860                 u32 end)
24861 {
24862         u32 *buf, *src, *dst, sz;
24863
24864         sz = end - start + 1;
24865
24866         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24867         if (NULL == buf)
24868                 return;
24869
24870         src = buf;
24871         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24872
24873         wlc_phy_table_read_nphy(pi,
24874                                 (core ==
24875                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24876                                  NPHY_TBL_ID_EPSILONTBL1),
24877                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24878
24879         do {
24880                 u32 phy_a1, phy_a2;
24881                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24882
24883                 phy_a1 = end - min(end, (winsz >> 1));
24884                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24885                                end + (winsz >> 1));
24886                 phy_a3 = phy_a2 - phy_a1 + 1;
24887                 phy_a6 = 0;
24888                 phy_a7 = 0;
24889
24890                 do {
24891                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24892                                                     &phy_a5);
24893                         phy_a6 += phy_a4;
24894                         phy_a7 += phy_a5;
24895                 } while (phy_a2-- != phy_a1);
24896
24897                 phy_a6 /= phy_a3;
24898                 phy_a7 /= phy_a3;
24899                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24900         } while (end-- != start);
24901
24902         wlc_phy_table_write_nphy(pi,
24903                                  (core ==
24904                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24905                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24906
24907         kfree(buf);
24908 }
24909
24910 static void
24911 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24912                 enum phy_cal_mode cal_mode, u8 core)
24913 {
24914         u16 phy_a1, phy_a2, phy_a3;
24915         u16 phy_a4, phy_a5;
24916         bool phy_a6;
24917         u8 phy_a7, m[2];
24918         u32 phy_a8 = 0;
24919         struct nphy_txgains phy_a9;
24920
24921         if (NREV_LT(pi->pubpi.phy_rev, 3))
24922                 return;
24923
24924         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24925
24926         phy_a6 = ((cal_mode == CAL_GCTRL)
24927                   || (cal_mode == CAL_SOFT)) ? true : false;
24928
24929         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24930
24931                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24932
24933                 if (CHSPEC_IS2G(pi->radio_chanspec))
24934                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24935                                   (phy_a9.txgm[core] << 12) |
24936                                   (phy_a9.pga[core] << 8) |
24937                                   (txgains->gains.pad[core] << 3) |
24938                                   (phy_a9.ipa[core]));
24939                 else
24940                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24941                                   (phy_a9.txgm[core] << 12) |
24942                                   (txgains->gains.pga[core] << 8) |
24943                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24944
24945                 wlc_phy_rfctrl_override_1tomany_nphy(
24946                         pi,
24947                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24948                         phy_a5, (1 << core), 0);
24949
24950                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24951                         if ((pi->pubpi.radiorev <= 4)
24952                             || (pi->pubpi.radiorev == 6))
24953                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24954                                           60 : 79;
24955                         else
24956                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24957                                           45 : 64;
24958                 } else {
24959                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24960                 }
24961
24962                 m[phy_a7] = 0;
24963                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24964
24965                 phy_a2 = 63;
24966
24967                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24968                         if ((pi->pubpi.radiorev == 4)
24969                             || (pi->pubpi.radiorev == 6)) {
24970                                 phy_a1 = 30;
24971                                 phy_a3 = 30;
24972                         } else {
24973                                 phy_a1 = 25;
24974                                 phy_a3 = 25;
24975                         }
24976                 } else {
24977                         if ((pi->pubpi.radiorev == 5)
24978                             || (pi->pubpi.radiorev == 7)
24979                             || (pi->pubpi.radiorev == 8)) {
24980                                 phy_a1 = 25;
24981                                 phy_a3 = 25;
24982                         } else {
24983                                 phy_a1 = 35;
24984                                 phy_a3 = 35;
24985                         }
24986                 }
24987
24988                 if (cal_mode == CAL_GCTRL) {
24989                         if ((pi->pubpi.radiorev == 5)
24990                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24991                                 phy_a1 = 55;
24992                         else if (((pi->pubpi.radiorev == 7) &&
24993                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24994                                  ((pi->pubpi.radiorev == 8) &&
24995                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24996                                 phy_a1 = 60;
24997                         else
24998                                 phy_a1 = 63;
24999
25000                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
25001
25002                         phy_a1 = 35;
25003                         phy_a3 = 35;
25004                 }
25005
25006                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25007                             0x29b, (0x1 << 0), (1) << 0);
25008
25009                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25010                             0x29b, (0x1 << 0), (0) << 0);
25011
25012                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25013                             0x2a4, (0x1 << 13), (1) << 13);
25014
25015                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25016                             0x2a4, (0x1 << 13), (0) << 13);
25017
25018                 write_phy_reg(pi, 0x2a1, 0x80);
25019                 write_phy_reg(pi, 0x2a2, 0x100);
25020
25021                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25022                             0x2a4, (0x7 << 4), (11) << 4);
25023
25024                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25025                             0x2a4, (0x7 << 8), (11) << 8);
25026
25027                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25028                             0x2a4, (0x7 << 0), (0x3) << 0);
25029
25030                 write_phy_reg(pi, 0x2e5, 0x20);
25031
25032                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25033
25034                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25035
25036                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25037
25038                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25039                                                   1, ((core == 0) ? 1 : 2), 0,
25040                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25041                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25042                                                   0, ((core == 0) ? 2 : 1), 0,
25043                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25044
25045                 write_phy_reg(pi, 0x2be, 1);
25046                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25047
25048                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25049                                                   0, 0x3, 0,
25050                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25051
25052                 wlc_phy_table_write_nphy(pi,
25053                                          (core ==
25054                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25055                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25056                                          32, &phy_a8);
25057
25058                 if (cal_mode != CAL_GCTRL) {
25059                         if (CHSPEC_IS5G(pi->radio_chanspec))
25060                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25061                 }
25062
25063                 wlc_phy_rfctrl_override_1tomany_nphy(
25064                         pi,
25065                         NPHY_REV7_RfctrlOverride_cmd_txgain,
25066                         phy_a5, (1 << core), 1);
25067
25068         } else {
25069
25070                 if (txgains) {
25071                         if (txgains->useindex) {
25072                                 phy_a4 = 15 - ((txgains->index) >> 3);
25073                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25074                                         if (NREV_GE(pi->pubpi.phy_rev, 6))
25075                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
25076
25077                                         else
25078                                         if (NREV_IS(pi->pubpi.phy_rev, 5))
25079                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
25080                                         else
25081                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
25082                                 } else {
25083                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
25084                                 }
25085                                 wlc_phy_rfctrl_override_nphy(pi,
25086                                                              (0x1 << 13),
25087                                                              phy_a5,
25088                                                              (1 << core), 0);
25089                         } else {
25090                                 wlc_phy_rfctrl_override_nphy(pi,
25091                                                              (0x1 << 13),
25092                                                              0x5bf7,
25093                                                              (1 << core), 0);
25094                         }
25095                 }
25096
25097                 if (CHSPEC_IS2G(pi->radio_chanspec))
25098                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25099                 else
25100                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25101
25102                 m[phy_a7] = 0;
25103                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25104
25105                 phy_a2 = 63;
25106
25107                 if (cal_mode == CAL_FULL) {
25108                         phy_a1 = 25;
25109                         phy_a3 = 25;
25110                 } else if (cal_mode == CAL_SOFT) {
25111                         phy_a1 = 25;
25112                         phy_a3 = 25;
25113                 } else if (cal_mode == CAL_GCTRL) {
25114                         phy_a1 = 63;
25115                         phy_a3 = 25;
25116                 } else {
25117
25118                         phy_a1 = 25;
25119                         phy_a3 = 25;
25120                 }
25121
25122                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25123                             0x29b, (0x1 << 0), (1) << 0);
25124
25125                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25126                             0x29b, (0x1 << 0), (0) << 0);
25127
25128                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25129                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25130                                     0x2a4, (0x1 << 13), (1) << 13);
25131
25132                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25133                                     0x2a4, (0x1 << 13), (0) << 13);
25134
25135                         write_phy_reg(pi, 0x2a1, 0x20);
25136                         write_phy_reg(pi, 0x2a2, 0x60);
25137
25138                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25139                                     0x2a4, (0xf << 4), (9) << 4);
25140
25141                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25142                                     0x2a4, (0xf << 8), (9) << 8);
25143
25144                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25145                                     0x2a4, (0xf << 0), (0x2) << 0);
25146
25147                         write_phy_reg(pi, 0x2e5, 0x20);
25148                 } else {
25149                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25150                                     0x2a4, (0x1 << 11), (1) << 11);
25151
25152                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25153                                     0x2a4, (0x1 << 11), (0) << 11);
25154
25155                         write_phy_reg(pi, 0x2a1, 0x80);
25156                         write_phy_reg(pi, 0x2a2, 0x600);
25157
25158                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25159                                     0x2a4, (0x7 << 4), (0) << 4);
25160
25161                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25162                                     0x2a4, (0x7 << 8), (0) << 8);
25163
25164                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25165                                     0x2a4, (0x7 << 0), (0x3) << 0);
25166
25167                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25168
25169                 }
25170
25171                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25172
25173                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25174
25175                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25176
25177                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25178
25179                 write_phy_reg(pi, 0x2be, 1);
25180                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25181
25182                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25183
25184                 wlc_phy_table_write_nphy(pi,
25185                                          (core ==
25186                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25187                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25188                                          32, &phy_a8);
25189
25190                 if (cal_mode != CAL_GCTRL)
25191                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25192         }
25193 }
25194
25195 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25196 {
25197         int phy_a1;
25198         int phy_a2;
25199         bool phy_a3;
25200         struct nphy_ipa_txcalgains phy_a4;
25201         bool phy_a5 = false;
25202         bool phy_a6 = true;
25203         s32 phy_a7, phy_a8;
25204         u32 phy_a9;
25205         int phy_a10;
25206         bool phy_a11 = false;
25207         int phy_a12;
25208         u8 phy_a13 = 0;
25209         u8 phy_a14;
25210         u8 *phy_a15 = NULL;
25211
25212         phy_a4.useindex = true;
25213         phy_a12 = start_gain;
25214
25215         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25216
25217                 phy_a2 = 20;
25218                 phy_a1 = 1;
25219
25220                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25221                         if (pi->pubpi.radiorev == 5) {
25222
25223                                 phy_a15 = pad_gain_codes_used_2057rev5;
25224                                 phy_a13 =
25225                                         sizeof(pad_gain_codes_used_2057rev5) /
25226                                         sizeof(pad_gain_codes_used_2057rev5
25227                                                 [0]) - 1;
25228
25229                         } else if ((pi->pubpi.radiorev == 7)
25230                                    || (pi->pubpi.radiorev == 8)) {
25231
25232                                 phy_a15 = pad_gain_codes_used_2057rev7;
25233                                 phy_a13 =
25234                                         sizeof(pad_gain_codes_used_2057rev7) /
25235                                         sizeof(pad_gain_codes_used_2057rev7
25236                                                 [0]) - 1;
25237
25238                         } else {
25239
25240                                 phy_a15 = pad_all_gain_codes_2057;
25241                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
25242                                           sizeof(pad_all_gain_codes_2057[0]) -
25243                                           1;
25244                         }
25245
25246                 } else {
25247
25248                         phy_a15 = pga_all_gain_codes_2057;
25249                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
25250                                   sizeof(pga_all_gain_codes_2057[0]) - 1;
25251                 }
25252
25253                 phy_a14 = 0;
25254
25255                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25256                         if (CHSPEC_IS2G(pi->radio_chanspec))
25257                                 phy_a4.gains.pad[core] =
25258                                         (u16) phy_a15[phy_a12];
25259                         else
25260                                 phy_a4.gains.pga[core] =
25261                                         (u16) phy_a15[phy_a12];
25262
25263                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25264
25265                         wlc_phy_table_read_nphy(pi,
25266                                                 (core ==
25267                                                  PHY_CORE_0 ?
25268                                                  NPHY_TBL_ID_EPSILONTBL0 :
25269                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25270                                                 63, 32, &phy_a9);
25271
25272                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25273
25274                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25275                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25276
25277                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25278                                 if (!phy_a3)
25279                                         phy_a12 -= (u8) phy_a1;
25280
25281                                 phy_a11 = true;
25282                                 break;
25283                         }
25284
25285                         if (phy_a3)
25286                                 phy_a12 += (u8) phy_a1;
25287                         else
25288                                 phy_a12 -= (u8) phy_a1;
25289
25290                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25291                                 if (phy_a12 < phy_a14)
25292                                         phy_a12 = phy_a14;
25293                                 else
25294                                         phy_a12 = phy_a13;
25295
25296                                 phy_a11 = true;
25297                                 break;
25298                         }
25299
25300                         phy_a6 = false;
25301                         phy_a5 = phy_a3;
25302                 }
25303
25304         } else {
25305                 phy_a2 = 10;
25306                 phy_a1 = 8;
25307                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25308                         phy_a4.index = (u8) phy_a12;
25309                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25310
25311                         wlc_phy_table_read_nphy(pi,
25312                                                 (core ==
25313                                                  PHY_CORE_0 ?
25314                                                  NPHY_TBL_ID_EPSILONTBL0 :
25315                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25316                                                 63, 32, &phy_a9);
25317
25318                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25319
25320                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25321                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25322
25323                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25324                                 if (!phy_a3)
25325                                         phy_a12 -= (u8) phy_a1;
25326
25327                                 phy_a11 = true;
25328                                 break;
25329                         }
25330
25331                         if (phy_a3)
25332                                 phy_a12 += (u8) phy_a1;
25333                         else
25334                                 phy_a12 -= (u8) phy_a1;
25335
25336                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25337                                 if (phy_a12 < 0)
25338                                         phy_a12 = 0;
25339                                 else
25340                                         phy_a12 = 127;
25341
25342                                 phy_a11 = true;
25343                                 break;
25344                         }
25345
25346                         phy_a6 = false;
25347                         phy_a5 = phy_a3;
25348                 }
25349
25350         }
25351
25352         if (NREV_GE(pi->pubpi.phy_rev, 7))
25353                 return (u8) phy_a15[phy_a12];
25354         else
25355                 return (u8) phy_a12;
25356
25357 }
25358
25359 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25360 {
25361         struct nphy_ipa_txcalgains phy_b1[2];
25362         struct nphy_papd_restore_state phy_b2;
25363         bool phy_b3;
25364         u8 phy_b4;
25365         u8 phy_b5;
25366         s16 phy_b6, phy_b7, phy_b8;
25367         u16 phy_b9;
25368         s16 phy_b10, phy_b11, phy_b12;
25369
25370         phy_b11 = 0;
25371         phy_b12 = 0;
25372         phy_b7 = 0;
25373         phy_b8 = 0;
25374         phy_b6 = 0;
25375
25376         if (pi->nphy_papd_skip == 1)
25377                 return;
25378
25379         phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25380                         MCTL_EN_MAC));
25381         if (!phy_b3)
25382                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25383
25384         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25385
25386         pi->nphy_force_papd_cal = false;
25387
25388         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25389                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25390                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25391
25392         pi->nphy_papd_last_cal = pi->sh->now;
25393         pi->nphy_papd_recal_counter++;
25394
25395         phy_b4 = pi->nphy_txpwrctrl;
25396         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25397
25398         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25399                                  nphy_papd_scaltbl);
25400         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25401                                  nphy_papd_scaltbl);
25402
25403         phy_b9 = read_phy_reg(pi, 0x01);
25404         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25405
25406         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25407                 s32 i, val = 0;
25408                 for (i = 0; i < 64; i++)
25409                         wlc_phy_table_write_nphy(pi,
25410                                                  ((phy_b5 ==
25411                                                    PHY_CORE_0) ?
25412                                                   NPHY_TBL_ID_EPSILONTBL0 :
25413                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25414                                                  i, 32, &val);
25415         }
25416
25417         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25418
25419         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25420         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25421                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25422
25423                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25424                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25425                                 if ((pi->pubpi.radiorev == 3)
25426                                     || (pi->pubpi.radiorev == 4)
25427                                     || (pi->pubpi.radiorev == 6)) {
25428                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25429                                                 23;
25430                                 } else if (pi->pubpi.radiorev == 5) {
25431                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25432                                                 0;
25433                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25434                                                 wlc_phy_a3_nphy(
25435                                                         pi,
25436                                                         pi->
25437                                                         nphy_papd_cal_gain_index
25438                                                         [phy_b5],
25439                                                         phy_b5);
25440
25441                                 } else if ((pi->pubpi.radiorev == 7)
25442                                            || (pi->pubpi.radiorev == 8)) {
25443
25444                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25445                                                 0;
25446                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25447                                                 wlc_phy_a3_nphy(
25448                                                         pi,
25449                                                         pi->
25450                                                         nphy_papd_cal_gain_index
25451                                                         [phy_b5],
25452                                                         phy_b5);
25453
25454                                 }
25455
25456                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25457                                         pi->nphy_papd_cal_gain_index[phy_b5];
25458
25459                         } else {
25460                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25461                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25462                                         wlc_phy_a3_nphy(
25463                                                 pi,
25464                                                 pi->
25465                                                 nphy_papd_cal_gain_index
25466                                                 [phy_b5], phy_b5);
25467                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25468                                         pi->nphy_papd_cal_gain_index[phy_b5];
25469                         }
25470                 } else {
25471                         phy_b1[phy_b5].useindex = true;
25472                         phy_b1[phy_b5].index = 16;
25473                         phy_b1[phy_b5].index =
25474                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25475                                                 phy_b5);
25476
25477                         pi->nphy_papd_cal_gain_index[phy_b5] =
25478                                 15 - ((phy_b1[phy_b5].index) >> 3);
25479                 }
25480
25481                 switch (pi->nphy_papd_cal_type) {
25482                 case 0:
25483                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25484                         break;
25485                 case 1:
25486                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25487                         break;
25488                 }
25489
25490                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25491                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25492         }
25493
25494         if (NREV_LT(pi->pubpi.phy_rev, 7))
25495                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25496
25497         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25498                 int eps_offset = 0;
25499
25500                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25501                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25502                                 if (pi->pubpi.radiorev == 3)
25503                                         eps_offset = -2;
25504                                 else if (pi->pubpi.radiorev == 5)
25505                                         eps_offset = 3;
25506                                 else
25507                                         eps_offset = -1;
25508                         } else {
25509                                 eps_offset = 2;
25510                         }
25511
25512                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25513                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25514                                 phy_b10 = 0;
25515                                 if ((pi->pubpi.radiorev == 3) ||
25516                                     (pi->pubpi.radiorev == 4) ||
25517                                     (pi->pubpi.radiorev == 6)) {
25518                                         phy_b12 = -(
25519                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25520                                                              [phy_b8] + 1) / 2;
25521                                         phy_b10 = -1;
25522                                 } else if (pi->pubpi.radiorev == 5) {
25523                                         phy_b12 = -(
25524                                             nphy_papd_padgain_dlt_2g_2057rev5
25525                                                              [phy_b8] + 1) / 2;
25526                                 } else if ((pi->pubpi.radiorev == 7) ||
25527                                            (pi->pubpi.radiorev == 8)) {
25528                                         phy_b12 = -(
25529                                             nphy_papd_padgain_dlt_2g_2057rev7
25530                                                              [phy_b8] + 1) / 2;
25531                                 }
25532                         } else {
25533                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25534                                 if ((pi->pubpi.radiorev == 3) ||
25535                                     (pi->pubpi.radiorev == 4) ||
25536                                     (pi->pubpi.radiorev == 6))
25537                                         phy_b11 =
25538                                                 -(nphy_papd_pgagain_dlt_5g_2057
25539                                                   [phy_b7]
25540                                                   + 1) / 2;
25541                                 else if ((pi->pubpi.radiorev == 7)
25542                                          || (pi->pubpi.radiorev == 8))
25543                                         phy_b11 = -(
25544                                               nphy_papd_pgagain_dlt_5g_2057rev7
25545                                                              [phy_b7] + 1) / 2;
25546
25547                                 phy_b10 = -9;
25548                         }
25549
25550                         if (CHSPEC_IS2G(pi->radio_chanspec))
25551                                 phy_b6 =
25552                                         -60 + 27 + eps_offset + phy_b12 +
25553                                         phy_b10;
25554                         else
25555                                 phy_b6 =
25556                                         -60 + 27 + eps_offset + phy_b11 +
25557                                         phy_b10;
25558
25559                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25560                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25561
25562                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25563                 } else {
25564                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25565                                 eps_offset = 4;
25566                         else
25567                                 eps_offset = 2;
25568
25569                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25570
25571                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25572                                 phy_b11 =
25573                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25574                                                   phy_b7] +
25575                                           1) / 2;
25576                                 phy_b10 = 0;
25577                         } else {
25578                                 phy_b11 =
25579                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25580                                                   phy_b7] +
25581                                           1) / 2;
25582                                 phy_b10 = -9;
25583                         }
25584
25585                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25586
25587                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25588                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25589
25590                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25591                 }
25592         }
25593
25594         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25595                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25596
25597         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25598                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25599
25600         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25601                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25602                             0x2a4, (0x1 << 13), (0) << 13);
25603
25604                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25605                             0x2a4, (0x1 << 13), (0) << 13);
25606
25607         } else {
25608                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25609                             0x2a4, (0x1 << 11), (0) << 11);
25610
25611                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25612                             0x2a4, (0x1 << 11), (0) << 11);
25613
25614         }
25615         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25616
25617         write_phy_reg(pi, 0x01, phy_b9);
25618
25619         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25620
25621         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25622         if (phy_b4 == PHY_TPC_HW_OFF) {
25623                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25624                                          (s8) (pi->nphy_txpwrindex[0].
25625                                                index_internal), false);
25626                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25627                                          (s8) (pi->nphy_txpwrindex[1].
25628                                                index_internal), false);
25629         }
25630
25631         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25632
25633         if (!phy_b3)
25634                 wlapi_enable_mac(pi->sh->physhim);
25635 }
25636
25637 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25638 {
25639         struct nphy_txgains target_gain;
25640         u8 tx_pwr_ctrl_state;
25641         bool fullcal = true;
25642         bool restore_tx_gain = false;
25643         bool mphase;
25644
25645         if (PHY_MUTED(pi))
25646                 return;
25647
25648         if (caltype == PHY_PERICAL_AUTO)
25649                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25650         else if (caltype == PHY_PERICAL_PARTIAL)
25651                 fullcal = false;
25652
25653         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25654                 fullcal =
25655                         (pi->cal_type_override ==
25656                          PHY_PERICAL_FULL) ? true : false;
25657
25658         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25659                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25660                         wlc_phy_cal_perical_mphase_restart(pi);
25661         }
25662
25663         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25664                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25665
25666         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25667
25668         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25669
25670         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25671             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25672                 pi->nphy_cal_orig_pwr_idx[0] =
25673                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25674                 pi->nphy_cal_orig_pwr_idx[1] =
25675                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25676
25677                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25678                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25679                                                 0x110, 16,
25680                                                 pi->nphy_cal_orig_tx_gain);
25681                 } else {
25682                         pi->nphy_cal_orig_tx_gain[0] = 0;
25683                         pi->nphy_cal_orig_tx_gain[1] = 0;
25684                 }
25685         }
25686         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25687         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25688         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25689
25690         if (pi->antsel_type == ANTSEL_2x3)
25691                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25692
25693         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25694         if (!mphase) {
25695
25696                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25697                         wlc_phy_precal_txgain_nphy(pi);
25698                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25699                         restore_tx_gain = true;
25700
25701                         target_gain = pi->nphy_cal_target_gain;
25702                 }
25703                 if (0 ==
25704                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25705                                             mphase)) {
25706                         if (PHY_IPA(pi))
25707                                 wlc_phy_a4(pi, true);
25708
25709                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25710                         wlapi_enable_mac(pi->sh->physhim);
25711                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25712                                              10000);
25713                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25714                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25715
25716                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25717                                         (pi->first_cal_after_assoc ||
25718                                         (pi->cal_type_override ==
25719                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25720                                 wlc_phy_savecal_nphy(pi);
25721
25722                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25723
25724                                 pi->nphy_perical_last = pi->sh->now;
25725                         }
25726                 }
25727                 if (caltype != PHY_PERICAL_AUTO)
25728                         wlc_phy_rssi_cal_nphy(pi);
25729
25730                 if (pi->first_cal_after_assoc
25731                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25732                         pi->first_cal_after_assoc = false;
25733                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25734                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25735                 }
25736
25737                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25738                         wlc_phy_radio205x_vcocal_nphy(pi);
25739         } else {
25740                 switch (pi->mphase_cal_phase_id) {
25741                 case MPHASE_CAL_STATE_INIT:
25742                         pi->nphy_perical_last = pi->sh->now;
25743                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25744
25745                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25746                                 wlc_phy_precal_txgain_nphy(pi);
25747
25748                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25749                         pi->mphase_cal_phase_id++;
25750                         break;
25751
25752                 case MPHASE_CAL_STATE_TXPHASE0:
25753                 case MPHASE_CAL_STATE_TXPHASE1:
25754                 case MPHASE_CAL_STATE_TXPHASE2:
25755                 case MPHASE_CAL_STATE_TXPHASE3:
25756                 case MPHASE_CAL_STATE_TXPHASE4:
25757                 case MPHASE_CAL_STATE_TXPHASE5:
25758                         if ((pi->radar_percal_mask & 0x10) != 0)
25759                                 pi->nphy_rxcal_active = true;
25760
25761                         if (wlc_phy_cal_txiqlo_nphy
25762                                     (pi, pi->nphy_cal_target_gain, fullcal,
25763                                     true) != 0) {
25764
25765                                 wlc_phy_cal_perical_mphase_reset(pi);
25766                                 break;
25767                         }
25768
25769                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25770                             (pi->mphase_cal_phase_id ==
25771                              MPHASE_CAL_STATE_TXPHASE4))
25772                                 pi->mphase_cal_phase_id += 2;
25773                         else
25774                                 pi->mphase_cal_phase_id++;
25775                         break;
25776
25777                 case MPHASE_CAL_STATE_PAPDCAL:
25778                         if ((pi->radar_percal_mask & 0x2) != 0)
25779                                 pi->nphy_rxcal_active = true;
25780
25781                         if (PHY_IPA(pi))
25782                                 wlc_phy_a4(pi, true);
25783
25784                         pi->mphase_cal_phase_id++;
25785                         break;
25786
25787                 case MPHASE_CAL_STATE_RXCAL:
25788                         if ((pi->radar_percal_mask & 0x1) != 0)
25789                                 pi->nphy_rxcal_active = true;
25790                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25791                                                   (pi->first_cal_after_assoc ||
25792                                                    (pi->cal_type_override ==
25793                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25794                                                   false) == 0)
25795                                 wlc_phy_savecal_nphy(pi);
25796
25797                         pi->mphase_cal_phase_id++;
25798                         break;
25799
25800                 case MPHASE_CAL_STATE_RSSICAL:
25801                         if ((pi->radar_percal_mask & 0x4) != 0)
25802                                 pi->nphy_rxcal_active = true;
25803                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25804                         wlc_phy_rssi_cal_nphy(pi);
25805
25806                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25807                                 wlc_phy_radio205x_vcocal_nphy(pi);
25808
25809                         restore_tx_gain = true;
25810
25811                         if (pi->first_cal_after_assoc)
25812                                 pi->mphase_cal_phase_id++;
25813                         else
25814                                 wlc_phy_cal_perical_mphase_reset(pi);
25815
25816                         break;
25817
25818                 case MPHASE_CAL_STATE_IDLETSSI:
25819                         if ((pi->radar_percal_mask & 0x8) != 0)
25820                                 pi->nphy_rxcal_active = true;
25821
25822                         if (pi->first_cal_after_assoc) {
25823                                 pi->first_cal_after_assoc = false;
25824                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25825                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25826                         }
25827
25828                         wlc_phy_cal_perical_mphase_reset(pi);
25829                         break;
25830
25831                 default:
25832                         wlc_phy_cal_perical_mphase_reset(pi);
25833                         break;
25834                 }
25835         }
25836
25837         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25838                 if (restore_tx_gain) {
25839                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25840
25841                                 wlc_phy_txpwr_index_nphy(pi, 1,
25842                                                          pi->
25843                                                          nphy_cal_orig_pwr_idx
25844                                                          [0], false);
25845                                 wlc_phy_txpwr_index_nphy(pi, 2,
25846                                                          pi->
25847                                                          nphy_cal_orig_pwr_idx
25848                                                          [1], false);
25849
25850                                 pi->nphy_txpwrindex[0].index = -1;
25851                                 pi->nphy_txpwrindex[1].index = -1;
25852                         } else {
25853                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25854                                                          (s8) (pi->
25855                                                                nphy_txpwrindex
25856                                                                [0].
25857                                                                index_internal),
25858                                                          false);
25859                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25860                                                          (s8) (pi->
25861                                                                nphy_txpwrindex
25862                                                                [1].
25863                                                                index_internal),
25864                                                          false);
25865                         }
25866                 }
25867         }
25868
25869         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25870         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25871         wlapi_enable_mac(pi->sh->physhim);
25872 }
25873
25874 int
25875 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25876                         bool fullcal, bool mphase)
25877 {
25878         u16 val;
25879         u16 tbl_buf[11];
25880         u8 cal_cnt;
25881         u16 cal_cmd;
25882         u8 num_cals, max_cal_cmds;
25883         u16 core_no, cal_type;
25884         u16 diq_start = 0;
25885         u8 phy_bw;
25886         u16 max_val;
25887         u16 tone_freq;
25888         u16 gain_save[2];
25889         u16 cal_gain[2];
25890         struct nphy_iqcal_params cal_params[2];
25891         u32 tbl_len;
25892         void *tbl_ptr;
25893         bool ladder_updated[2];
25894         u8 mphase_cal_lastphase = 0;
25895         int bcmerror = 0;
25896         bool phyhang_avoid_state = false;
25897
25898         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25899                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25900                 0x1902,
25901                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25902                 0x6407
25903         };
25904
25905         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25906                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25907                 0x3200,
25908                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25909                 0x6407
25910         };
25911
25912         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25913                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25914                 0x1202,
25915                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25916                 0x4707
25917         };
25918
25919         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25920                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25921                 0x2300,
25922                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25923                 0x4707
25924         };
25925
25926         u16 tbl_tx_iqlo_cal_startcoefs[] = {
25927                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25928                 0x0000
25929         };
25930
25931         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25932                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25933                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25934         };
25935
25936         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25937                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25938                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25939         };
25940
25941         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25942                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25943                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25944                 0x0000
25945         };
25946
25947         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25948                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25949                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25950         };
25951
25952         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25953                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25954                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25955         };
25956
25957         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25958
25959         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25960                 phyhang_avoid_state = pi->phyhang_avoid;
25961                 pi->phyhang_avoid = false;
25962         }
25963
25964         if (CHSPEC_IS40(pi->radio_chanspec))
25965                 phy_bw = 40;
25966         else
25967                 phy_bw = 20;
25968
25969         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25970
25971         for (core_no = 0; core_no <= 1; core_no++) {
25972                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25973                                               &cal_params[core_no]);
25974                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25975         }
25976
25977         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25978
25979         wlc_phy_txcal_radio_setup_nphy(pi);
25980
25981         wlc_phy_txcal_physetup_nphy(pi);
25982
25983         ladder_updated[0] = ladder_updated[1] = false;
25984         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25985               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25986                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25987
25988                 if (phy_bw == 40) {
25989                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25990                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25991                 } else {
25992                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25993                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25994                 }
25995                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25996                                          16, tbl_ptr);
25997
25998                 if (phy_bw == 40) {
25999                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
26000                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
26001                 } else {
26002                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
26003                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
26004                 }
26005                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
26006                                          16, tbl_ptr);
26007         }
26008
26009         if (NREV_GE(pi->pubpi.phy_rev, 7))
26010                 write_phy_reg(pi, 0xc2, 0x8ad9);
26011         else
26012                 write_phy_reg(pi, 0xc2, 0x8aa9);
26013
26014         max_val = 250;
26015         tone_freq = (phy_bw == 20) ? 2500 : 5000;
26016
26017         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26018                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
26019                 bcmerror = 0;
26020         } else {
26021                 bcmerror =
26022                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
26023                                              false);
26024         }
26025
26026         if (bcmerror == 0) {
26027
26028                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26029                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
26030                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26031                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26032                                 tbl_len -= 2;
26033                 } else {
26034                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
26035
26036                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
26037                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26038                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
26039                                         tbl_len -= 2;
26040                         } else {
26041
26042                                 fullcal = true;
26043
26044                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26045                                         tbl_ptr =
26046                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26047                                         tbl_len = ARRAY_SIZE(
26048                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26049                                 } else {
26050                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26051                                         tbl_len = ARRAY_SIZE(
26052                                                     tbl_tx_iqlo_cal_startcoefs);
26053                                 }
26054                         }
26055                 }
26056                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26057                                          16, tbl_ptr);
26058
26059                 if (fullcal) {
26060                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26061                                        ARRAY_SIZE(
26062                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26063                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26064                 } else {
26065                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26066                                        ARRAY_SIZE(
26067                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26068                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26069                 }
26070
26071                 if (mphase) {
26072                         cal_cnt = pi->mphase_txcal_cmdidx;
26073                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26074                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26075                         else
26076                                 num_cals = max_cal_cmds;
26077                 } else {
26078                         cal_cnt = 0;
26079                         num_cals = max_cal_cmds;
26080                 }
26081
26082                 for (; cal_cnt < num_cals; cal_cnt++) {
26083
26084                         if (fullcal) {
26085                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26086                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26087                                           [cal_cnt] :
26088                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26089                         } else {
26090                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26091                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26092                                         cal_cnt]
26093                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26094                         }
26095
26096                         core_no = ((cal_cmd & 0x3000) >> 12);
26097                         cal_type = ((cal_cmd & 0x0F00) >> 8);
26098
26099                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26100                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
26101                              PHY_IPA(pi)
26102                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26103                                 if (!ladder_updated[core_no]) {
26104                                         wlc_phy_update_txcal_ladder_nphy(
26105                                                 pi,
26106                                                 core_no);
26107                                         ladder_updated[core_no] = true;
26108                                 }
26109                         }
26110
26111                         val =
26112                                 (cal_params[core_no].
26113                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
26114                         write_phy_reg(pi, 0xc1, val);
26115
26116                         if ((cal_type == 1) || (cal_type == 3)
26117                             || (cal_type == 4)) {
26118
26119                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26120                                                         1, 69 + core_no, 16,
26121                                                         tbl_buf);
26122
26123                                 diq_start = tbl_buf[0];
26124
26125                                 tbl_buf[0] = 0;
26126                                 wlc_phy_table_write_nphy(pi,
26127                                                          NPHY_TBL_ID_IQLOCAL, 1,
26128                                                          69 + core_no, 16,
26129                                                          tbl_buf);
26130                         }
26131
26132                         write_phy_reg(pi, 0xc0, cal_cmd);
26133
26134                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26135                                  20000);
26136                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26137                                  "HW error: txiq calib"))
26138                                 return -EIO;
26139
26140                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26141                                                 tbl_len, 96, 16, tbl_buf);
26142                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26143                                                  tbl_len, 64, 16, tbl_buf);
26144
26145                         if ((cal_type == 1) || (cal_type == 3)
26146                             || (cal_type == 4)) {
26147
26148                                 tbl_buf[0] = diq_start;
26149
26150                         }
26151
26152                 }
26153
26154                 if (mphase) {
26155                         pi->mphase_txcal_cmdidx = num_cals;
26156                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26157                                 pi->mphase_txcal_cmdidx = 0;
26158                 }
26159
26160                 mphase_cal_lastphase =
26161                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26162                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26163
26164                 if (!mphase
26165                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26166
26167                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26168                                                 16, tbl_buf);
26169                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26170                                                  16, tbl_buf);
26171
26172                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26173
26174                                 tbl_buf[0] = 0;
26175                                 tbl_buf[1] = 0;
26176                                 tbl_buf[2] = 0;
26177                                 tbl_buf[3] = 0;
26178
26179                         }
26180                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26181                                                  16, tbl_buf);
26182
26183                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26184                                                 16, tbl_buf);
26185                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26186                                                  16, tbl_buf);
26187
26188                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26189                                                  16, tbl_buf);
26190
26191                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26192                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26193                                 tbl_len -= 2;
26194
26195                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26196                                                 tbl_len, 96, 16,
26197                                                 pi->nphy_txiqlocal_bestc);
26198
26199                         pi->nphy_txiqlocal_coeffsvalid = true;
26200                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26201                 } else {
26202                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26203                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26204                                 tbl_len -= 2;
26205
26206                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26207                                                 tbl_len, 96, 16,
26208                                                 pi->mphase_txcal_bestcoeffs);
26209                 }
26210
26211                 wlc_phy_stopplayback_nphy(pi);
26212
26213                 write_phy_reg(pi, 0xc2, 0x0000);
26214
26215         }
26216
26217         wlc_phy_txcal_phycleanup_nphy(pi);
26218
26219         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26220                                  gain_save);
26221
26222         wlc_phy_txcal_radio_cleanup_nphy(pi);
26223
26224         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26225                 if (!mphase
26226                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26227                         wlc_phy_tx_iq_war_nphy(pi);
26228         }
26229
26230         if (NREV_GE(pi->pubpi.phy_rev, 4))
26231                 pi->phyhang_avoid = phyhang_avoid_state;
26232
26233         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26234
26235         return bcmerror;
26236 }
26237
26238 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26239 {
26240         u16 tbl_buf[7];
26241
26242         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26243             (pi->nphy_txiqlocal_coeffsvalid)) {
26244                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26245                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26246
26247                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26248                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26249                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26250                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26251
26252                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26253                                                  16, pi->nphy_txiqlocal_bestc);
26254
26255                         tbl_buf[0] = 0;
26256                         tbl_buf[1] = 0;
26257                         tbl_buf[2] = 0;
26258                         tbl_buf[3] = 0;
26259                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26260                                                  16, tbl_buf);
26261
26262                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26263                                                  16,
26264                                                  &pi->nphy_txiqlocal_bestc[5]);
26265
26266                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26267                                                  16,
26268                                                  &pi->nphy_txiqlocal_bestc[5]);
26269                 }
26270         }
26271 }
26272
26273 void
26274 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26275                           struct nphy_iq_comp *pcomp)
26276 {
26277         if (write) {
26278                 write_phy_reg(pi, 0x9a, pcomp->a0);
26279                 write_phy_reg(pi, 0x9b, pcomp->b0);
26280                 write_phy_reg(pi, 0x9c, pcomp->a1);
26281                 write_phy_reg(pi, 0x9d, pcomp->b1);
26282         } else {
26283                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26284                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26285                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26286                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26287         }
26288 }
26289
26290 void
26291 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26292                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26293 {
26294         u8 core;
26295
26296         write_phy_reg(pi, 0x12b, num_samps);
26297         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26298         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26299                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26300
26301         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26302
26303         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26304                  10000);
26305         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26306                  "HW error: rxiq est"))
26307                 return;
26308
26309         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26310                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26311                         est[core].i_pwr =
26312                                 (read_phy_reg(pi,
26313                                               NPHY_IqestipwrAccHi(core)) << 16)
26314                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26315                         est[core].q_pwr =
26316                                 (read_phy_reg(pi,
26317                                               NPHY_IqestqpwrAccHi(core)) << 16)
26318                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26319                         est[core].iq_prod =
26320                                 (read_phy_reg(pi,
26321                                               NPHY_IqestIqAccHi(core)) << 16) |
26322                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26323                 }
26324         }
26325 }
26326
26327 #define CAL_RETRY_CNT 2
26328 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26329 {
26330         u8 curr_core;
26331         struct phy_iq_est est[PHY_CORE_MAX];
26332         struct nphy_iq_comp old_comp, new_comp;
26333         s32 iq = 0;
26334         u32 ii = 0, qq = 0;
26335         s16 iq_nbits, qq_nbits, brsh, arsh;
26336         s32 a, b, temp;
26337         int bcmerror = 0;
26338         uint cal_retry = 0;
26339
26340         if (core_mask == 0x0)
26341                 return;
26342
26343         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26344         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26345         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26346
26347 cal_try:
26348         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26349
26350         new_comp = old_comp;
26351
26352         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26353
26354                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26355                         iq = est[curr_core].iq_prod;
26356                         ii = est[curr_core].i_pwr;
26357                         qq = est[curr_core].q_pwr;
26358                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26359                         iq = est[curr_core].iq_prod;
26360                         ii = est[curr_core].i_pwr;
26361                         qq = est[curr_core].q_pwr;
26362                 } else {
26363                         continue;
26364                 }
26365
26366                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26367                         bcmerror = -EBADE;
26368                         break;
26369                 }
26370
26371                 iq_nbits = wlc_phy_nbits(iq);
26372                 qq_nbits = wlc_phy_nbits(qq);
26373
26374                 arsh = 10 - (30 - iq_nbits);
26375                 if (arsh >= 0) {
26376                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26377                         temp = (s32) (ii >> arsh);
26378                         if (temp == 0) {
26379                                 bcmerror = -EBADE;
26380                                 break;
26381                         }
26382                 } else {
26383                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26384                         temp = (s32) (ii << -arsh);
26385                         if (temp == 0) {
26386                                 bcmerror = -EBADE;
26387                                 break;
26388                         }
26389                 }
26390
26391                 a /= temp;
26392
26393                 brsh = qq_nbits - 31 + 20;
26394                 if (brsh >= 0) {
26395                         b = (qq << (31 - qq_nbits));
26396                         temp = (s32) (ii >> brsh);
26397                         if (temp == 0) {
26398                                 bcmerror = -EBADE;
26399                                 break;
26400                         }
26401                 } else {
26402                         b = (qq << (31 - qq_nbits));
26403                         temp = (s32) (ii << -brsh);
26404                         if (temp == 0) {
26405                                 bcmerror = -EBADE;
26406                                 break;
26407                         }
26408                 }
26409                 b /= temp;
26410                 b -= a * a;
26411                 b = (s32) int_sqrt((unsigned long) b);
26412                 b -= (1 << 10);
26413
26414                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26415                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26416                                 new_comp.a0 = (s16) a & 0x3ff;
26417                                 new_comp.b0 = (s16) b & 0x3ff;
26418                         } else {
26419
26420                                 new_comp.a0 = (s16) b & 0x3ff;
26421                                 new_comp.b0 = (s16) a & 0x3ff;
26422                         }
26423                 }
26424                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26425                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26426                                 new_comp.a1 = (s16) a & 0x3ff;
26427                                 new_comp.b1 = (s16) b & 0x3ff;
26428                         } else {
26429
26430                                 new_comp.a1 = (s16) b & 0x3ff;
26431                                 new_comp.b1 = (s16) a & 0x3ff;
26432                         }
26433                 }
26434         }
26435
26436         if (bcmerror != 0) {
26437                 printk(KERN_DEBUG "%s: Failed, cnt = %d\n", __func__,
26438                        cal_retry);
26439
26440                 if (cal_retry < CAL_RETRY_CNT) {
26441                         cal_retry++;
26442                         goto cal_try;
26443                 }
26444
26445                 new_comp = old_comp;
26446         }
26447
26448         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26449 }
26450
26451 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26452 {
26453         u16 offtune_val;
26454         u16 bias_g = 0;
26455         u16 bias_a = 0;
26456
26457         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26458                 if (rx_core == PHY_CORE_0) {
26459                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26460                                 pi->tx_rx_cal_radio_saveregs[0] =
26461                                         read_radio_reg(pi,
26462                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26463                                 pi->tx_rx_cal_radio_saveregs[1] =
26464                                         read_radio_reg(pi,
26465                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26466
26467                                 write_radio_reg(pi,
26468                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26469                                         0x3);
26470                                 write_radio_reg(pi,
26471                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26472                                         0xaf);
26473
26474                         } else {
26475                                 pi->tx_rx_cal_radio_saveregs[0] =
26476                                         read_radio_reg(pi,
26477                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26478                                 pi->tx_rx_cal_radio_saveregs[1] =
26479                                         read_radio_reg(pi,
26480                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26481
26482                                 write_radio_reg(
26483                                         pi,
26484                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26485                                         0x3);
26486                                 write_radio_reg(
26487                                         pi,
26488                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26489                                         0x7f);
26490                         }
26491
26492                 } else {
26493                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26494                                 pi->tx_rx_cal_radio_saveregs[0] =
26495                                         read_radio_reg(pi,
26496                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26497                                 pi->tx_rx_cal_radio_saveregs[1] =
26498                                         read_radio_reg(pi,
26499                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26500
26501                                 write_radio_reg(
26502                                         pi,
26503                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26504                                         0x3);
26505                                 write_radio_reg(
26506                                         pi,
26507                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26508                                         0xaf);
26509
26510                         } else {
26511                                 pi->tx_rx_cal_radio_saveregs[0] =
26512                                         read_radio_reg(pi,
26513                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26514                                 pi->tx_rx_cal_radio_saveregs[1] =
26515                                         read_radio_reg(pi,
26516                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26517
26518                                 write_radio_reg(pi,
26519                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26520                                         0x3);
26521                                 write_radio_reg(pi,
26522                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26523                                         0x7f);
26524                         }
26525                 }
26526
26527         } else {
26528                 if (rx_core == PHY_CORE_0) {
26529                         pi->tx_rx_cal_radio_saveregs[0] =
26530                                 read_radio_reg(pi,
26531                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26532                                                RADIO_2056_TX1);
26533                         pi->tx_rx_cal_radio_saveregs[1] =
26534                                 read_radio_reg(pi,
26535                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26536                                                RADIO_2056_RX0);
26537
26538                         if (pi->pubpi.radiorev >= 5) {
26539                                 pi->tx_rx_cal_radio_saveregs[2] =
26540                                         read_radio_reg(pi,
26541                                                        RADIO_2056_RX_RXSPARE2 |
26542                                                        RADIO_2056_RX0);
26543                                 pi->tx_rx_cal_radio_saveregs[3] =
26544                                         read_radio_reg(pi,
26545                                                        RADIO_2056_TX_TXSPARE2 |
26546                                                        RADIO_2056_TX1);
26547                         }
26548
26549                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26550
26551                                 if (pi->pubpi.radiorev >= 5) {
26552                                         pi->tx_rx_cal_radio_saveregs[4] =
26553                                                 read_radio_reg(pi,
26554                                                       RADIO_2056_RX_LNAA_MASTER
26555                                                       | RADIO_2056_RX0);
26556
26557                                         write_radio_reg(
26558                                                 pi,
26559                                                 RADIO_2056_RX_LNAA_MASTER
26560                                                 | RADIO_2056_RX0, 0x40);
26561
26562                                         write_radio_reg(pi,
26563                                                 RADIO_2056_TX_TXSPARE2 |
26564                                                 RADIO_2056_TX1, bias_a);
26565
26566                                         write_radio_reg(pi,
26567                                                 RADIO_2056_RX_RXSPARE2 |
26568                                                 RADIO_2056_RX0, bias_a);
26569                                 } else {
26570                                         pi->tx_rx_cal_radio_saveregs[4] =
26571                                                 read_radio_reg(pi,
26572                                                         RADIO_2056_RX_LNAA_TUNE
26573                                                         | RADIO_2056_RX0);
26574
26575                                         offtune_val =
26576                                                 (pi->tx_rx_cal_radio_saveregs
26577                                                  [2] & 0xF0) >> 8;
26578                                         offtune_val =
26579                                                 (offtune_val <= 0x7) ? 0xF : 0;
26580
26581                                         mod_radio_reg(pi,
26582                                                       RADIO_2056_RX_LNAA_TUNE |
26583                                                       RADIO_2056_RX0, 0xF0,
26584                                                       (offtune_val << 8));
26585                                 }
26586
26587                                 write_radio_reg(pi,
26588                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26589                                                 RADIO_2056_TX1, 0x9);
26590                                 write_radio_reg(pi,
26591                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26592                                                 RADIO_2056_RX0, 0x9);
26593                         } else {
26594                                 if (pi->pubpi.radiorev >= 5) {
26595                                         pi->tx_rx_cal_radio_saveregs[4] =
26596                                                 read_radio_reg(
26597                                                       pi,
26598                                                       RADIO_2056_RX_LNAG_MASTER
26599                                                     | RADIO_2056_RX0);
26600
26601                                         write_radio_reg(
26602                                                 pi,
26603                                                 RADIO_2056_RX_LNAG_MASTER
26604                                                 | RADIO_2056_RX0, 0x40);
26605
26606                                         write_radio_reg(
26607                                                 pi,
26608                                                 RADIO_2056_TX_TXSPARE2
26609                                                 |
26610                                                 RADIO_2056_TX1, bias_g);
26611
26612                                         write_radio_reg(
26613                                                 pi,
26614                                                 RADIO_2056_RX_RXSPARE2
26615                                                 |
26616                                                 RADIO_2056_RX0, bias_g);
26617
26618                                 } else {
26619                                         pi->tx_rx_cal_radio_saveregs[4] =
26620                                                 read_radio_reg(
26621                                                         pi,
26622                                                         RADIO_2056_RX_LNAG_TUNE
26623                                                         | RADIO_2056_RX0);
26624
26625                                         offtune_val =
26626                                                 (pi->
26627                                                  tx_rx_cal_radio_saveregs[2] &
26628                                                  0xF0) >> 8;
26629                                         offtune_val =
26630                                                 (offtune_val <= 0x7) ? 0xF : 0;
26631
26632                                         mod_radio_reg(pi,
26633                                                       RADIO_2056_RX_LNAG_TUNE |
26634                                                       RADIO_2056_RX0, 0xF0,
26635                                                       (offtune_val << 8));
26636                                 }
26637
26638                                 write_radio_reg(pi,
26639                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26640                                                 RADIO_2056_TX1, 0x6);
26641                                 write_radio_reg(pi,
26642                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26643                                                 RADIO_2056_RX0, 0x6);
26644                         }
26645
26646                 } else {
26647                         pi->tx_rx_cal_radio_saveregs[0] =
26648                                 read_radio_reg(pi,
26649                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26650                                                RADIO_2056_TX0);
26651                         pi->tx_rx_cal_radio_saveregs[1] =
26652                                 read_radio_reg(pi,
26653                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26654                                                RADIO_2056_RX1);
26655
26656                         if (pi->pubpi.radiorev >= 5) {
26657                                 pi->tx_rx_cal_radio_saveregs[2] =
26658                                         read_radio_reg(pi,
26659                                                        RADIO_2056_RX_RXSPARE2 |
26660                                                        RADIO_2056_RX1);
26661                                 pi->tx_rx_cal_radio_saveregs[3] =
26662                                         read_radio_reg(pi,
26663                                                        RADIO_2056_TX_TXSPARE2 |
26664                                                        RADIO_2056_TX0);
26665                         }
26666
26667                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26668
26669                                 if (pi->pubpi.radiorev >= 5) {
26670                                         pi->tx_rx_cal_radio_saveregs[4] =
26671                                                 read_radio_reg(
26672                                                        pi,
26673                                                        RADIO_2056_RX_LNAA_MASTER
26674                                                        | RADIO_2056_RX1);
26675
26676                                         write_radio_reg(
26677                                                 pi,
26678                                                 RADIO_2056_RX_LNAA_MASTER |
26679                                                 RADIO_2056_RX1, 0x40);
26680
26681                                         write_radio_reg(
26682                                                 pi,
26683                                                 RADIO_2056_TX_TXSPARE2
26684                                                 |
26685                                                 RADIO_2056_TX0, bias_a);
26686
26687                                         write_radio_reg(
26688                                                 pi,
26689                                                 RADIO_2056_RX_RXSPARE2
26690                                                 |
26691                                                 RADIO_2056_RX1, bias_a);
26692                                 } else {
26693                                         pi->tx_rx_cal_radio_saveregs[4] =
26694                                                 read_radio_reg(
26695                                                         pi,
26696                                                         RADIO_2056_RX_LNAA_TUNE
26697                                                         | RADIO_2056_RX1);
26698
26699                                         offtune_val =
26700                                                 (pi->
26701                                                  tx_rx_cal_radio_saveregs[2] &
26702                                                  0xF0) >> 8;
26703                                         offtune_val =
26704                                                 (offtune_val <= 0x7) ? 0xF : 0;
26705
26706                                         mod_radio_reg(pi,
26707                                                       RADIO_2056_RX_LNAA_TUNE |
26708                                                       RADIO_2056_RX1, 0xF0,
26709                                                       (offtune_val << 8));
26710                                 }
26711
26712                                 write_radio_reg(pi,
26713                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26714                                                 RADIO_2056_TX0, 0x9);
26715                                 write_radio_reg(pi,
26716                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26717                                                 RADIO_2056_RX1, 0x9);
26718                         } else {
26719                                 if (pi->pubpi.radiorev >= 5) {
26720                                         pi->tx_rx_cal_radio_saveregs[4] =
26721                                                 read_radio_reg(
26722                                                       pi,
26723                                                       RADIO_2056_RX_LNAG_MASTER
26724                                                     | RADIO_2056_RX1);
26725
26726                                         write_radio_reg(
26727                                                 pi,
26728                                                 RADIO_2056_RX_LNAG_MASTER
26729                                                 | RADIO_2056_RX1, 0x40);
26730
26731                                         write_radio_reg(
26732                                                 pi,
26733                                                 RADIO_2056_TX_TXSPARE2
26734                                                 |
26735                                                 RADIO_2056_TX0, bias_g);
26736
26737                                         write_radio_reg(
26738                                                 pi,
26739                                                 RADIO_2056_RX_RXSPARE2
26740                                                 |
26741                                                 RADIO_2056_RX1, bias_g);
26742                                 } else {
26743                                         pi->tx_rx_cal_radio_saveregs[4] =
26744                                                 read_radio_reg(
26745                                                         pi,
26746                                                         RADIO_2056_RX_LNAG_TUNE
26747                                                         | RADIO_2056_RX1);
26748
26749                                         offtune_val =
26750                                                 (pi->
26751                                                  tx_rx_cal_radio_saveregs[2] &
26752                                                  0xF0) >> 8;
26753                                         offtune_val =
26754                                                 (offtune_val <= 0x7) ? 0xF : 0;
26755
26756                                         mod_radio_reg(pi,
26757                                                       RADIO_2056_RX_LNAG_TUNE |
26758                                                       RADIO_2056_RX1, 0xF0,
26759                                                       (offtune_val << 8));
26760                                 }
26761
26762                                 write_radio_reg(pi,
26763                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26764                                                 RADIO_2056_TX0, 0x6);
26765                                 write_radio_reg(pi,
26766                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26767                                                 RADIO_2056_RX1, 0x6);
26768                         }
26769                 }
26770         }
26771 }
26772
26773 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26774 {
26775         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26776                 if (rx_core == PHY_CORE_0) {
26777                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26778                                 write_radio_reg(
26779                                         pi,
26780                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26781                                         pi->
26782                                         tx_rx_cal_radio_saveregs[0]);
26783                                 write_radio_reg(
26784                                         pi,
26785                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26786                                         pi->
26787                                         tx_rx_cal_radio_saveregs[1]);
26788
26789                         } else {
26790                                 write_radio_reg(
26791                                         pi,
26792                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26793                                         pi->
26794                                         tx_rx_cal_radio_saveregs[0]);
26795                                 write_radio_reg(
26796                                         pi,
26797                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26798                                         pi->
26799                                         tx_rx_cal_radio_saveregs[1]);
26800                         }
26801
26802                 } else {
26803                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26804                                 write_radio_reg(
26805                                         pi,
26806                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26807                                         pi->
26808                                         tx_rx_cal_radio_saveregs[0]);
26809                                 write_radio_reg(
26810                                         pi,
26811                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26812                                         pi->
26813                                         tx_rx_cal_radio_saveregs[1]);
26814
26815                         } else {
26816                                 write_radio_reg(
26817                                         pi,
26818                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26819                                         pi->
26820                                         tx_rx_cal_radio_saveregs[0]);
26821                                 write_radio_reg(
26822                                         pi,
26823                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26824                                         pi->
26825                                         tx_rx_cal_radio_saveregs[1]);
26826                         }
26827                 }
26828
26829         } else {
26830                 if (rx_core == PHY_CORE_0) {
26831                         write_radio_reg(pi,
26832                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26833                                         RADIO_2056_TX1,
26834                                         pi->tx_rx_cal_radio_saveregs[0]);
26835
26836                         write_radio_reg(pi,
26837                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26838                                         RADIO_2056_RX0,
26839                                         pi->tx_rx_cal_radio_saveregs[1]);
26840
26841                         if (pi->pubpi.radiorev >= 5) {
26842                                 write_radio_reg(pi,
26843                                                 RADIO_2056_RX_RXSPARE2 |
26844                                                 RADIO_2056_RX0,
26845                                                 pi->
26846                                                 tx_rx_cal_radio_saveregs[2]);
26847
26848                                 write_radio_reg(pi,
26849                                                 RADIO_2056_TX_TXSPARE2 |
26850                                                 RADIO_2056_TX1,
26851                                                 pi->
26852                                                 tx_rx_cal_radio_saveregs[3]);
26853                         }
26854
26855                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26856                                 if (pi->pubpi.radiorev >= 5)
26857                                         write_radio_reg(
26858                                                 pi,
26859                                                 RADIO_2056_RX_LNAA_MASTER
26860                                                 | RADIO_2056_RX0,
26861                                                 pi->
26862                                                 tx_rx_cal_radio_saveregs
26863                                                 [4]);
26864                                 else
26865                                         write_radio_reg(
26866                                                 pi,
26867                                                 RADIO_2056_RX_LNAA_TUNE
26868                                                 | RADIO_2056_RX0,
26869                                                 pi->
26870                                                 tx_rx_cal_radio_saveregs
26871                                                 [4]);
26872                         } else {
26873                                 if (pi->pubpi.radiorev >= 5)
26874                                         write_radio_reg(
26875                                                 pi,
26876                                                 RADIO_2056_RX_LNAG_MASTER
26877                                                 | RADIO_2056_RX0,
26878                                                 pi->
26879                                                 tx_rx_cal_radio_saveregs
26880                                                 [4]);
26881                                 else
26882                                         write_radio_reg(
26883                                                 pi,
26884                                                 RADIO_2056_RX_LNAG_TUNE
26885                                                 | RADIO_2056_RX0,
26886                                                 pi->
26887                                                 tx_rx_cal_radio_saveregs
26888                                                 [4]);
26889                         }
26890
26891                 } else {
26892                         write_radio_reg(pi,
26893                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26894                                         RADIO_2056_TX0,
26895                                         pi->tx_rx_cal_radio_saveregs[0]);
26896
26897                         write_radio_reg(pi,
26898                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26899                                         RADIO_2056_RX1,
26900                                         pi->tx_rx_cal_radio_saveregs[1]);
26901
26902                         if (pi->pubpi.radiorev >= 5) {
26903                                 write_radio_reg(pi,
26904                                                 RADIO_2056_RX_RXSPARE2 |
26905                                                 RADIO_2056_RX1,
26906                                                 pi->
26907                                                 tx_rx_cal_radio_saveregs[2]);
26908
26909                                 write_radio_reg(pi,
26910                                                 RADIO_2056_TX_TXSPARE2 |
26911                                                 RADIO_2056_TX0,
26912                                                 pi->
26913                                                 tx_rx_cal_radio_saveregs[3]);
26914                         }
26915
26916                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26917                                 if (pi->pubpi.radiorev >= 5)
26918                                         write_radio_reg(
26919                                                 pi,
26920                                                 RADIO_2056_RX_LNAA_MASTER
26921                                                 | RADIO_2056_RX1,
26922                                                 pi->
26923                                                 tx_rx_cal_radio_saveregs
26924                                                 [4]);
26925                                 else
26926                                         write_radio_reg(
26927                                                 pi,
26928                                                 RADIO_2056_RX_LNAA_TUNE
26929                                                 | RADIO_2056_RX1,
26930                                                 pi->
26931                                                 tx_rx_cal_radio_saveregs
26932                                                 [4]);
26933                         } else {
26934                                 if (pi->pubpi.radiorev >= 5)
26935                                         write_radio_reg(
26936                                                 pi,
26937                                                 RADIO_2056_RX_LNAG_MASTER
26938                                                 | RADIO_2056_RX1,
26939                                                 pi->
26940                                                 tx_rx_cal_radio_saveregs
26941                                                 [4]);
26942                                 else
26943                                         write_radio_reg(
26944                                                 pi,
26945                                                 RADIO_2056_RX_LNAG_TUNE
26946                                                 | RADIO_2056_RX1,
26947                                                 pi->
26948                                                 tx_rx_cal_radio_saveregs
26949                                                 [4]);
26950                         }
26951                 }
26952         }
26953 }
26954
26955 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26956 {
26957         u8 tx_core;
26958         u16 rx_antval, tx_antval;
26959
26960         if (NREV_GE(pi->pubpi.phy_rev, 7))
26961                 tx_core = rx_core;
26962         else
26963                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26964
26965         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26966         pi->tx_rx_cal_phy_saveregs[1] =
26967                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26968         pi->tx_rx_cal_phy_saveregs[2] =
26969                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26970         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26971         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26972         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26973         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26974         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26975         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26976         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26977                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26978                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26979                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26980                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26981         }
26982
26983         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26984         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26985         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26986                     0x29b, (0x1 << 0), (0) << 0);
26987
26988         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26989                     0x29b, (0x1 << 0), (0) << 0);
26990
26991         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26992
26993                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26994
26995                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26996
26997         } else {
26998
26999                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27000                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27001                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
27002                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
27003         }
27004
27005         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
27006         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27007                     (0x1 << 2), (0x1 << 2));
27008         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27009                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27010                             (0x1 << 0) | (0x1 << 1), 0);
27011                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27012                             0x8f : 0xa5,
27013                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
27014         }
27015
27016         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
27017                                          RADIO_MIMO_CORESEL_CORE1 |
27018                                          RADIO_MIMO_CORESEL_CORE2);
27019
27020         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27021                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
27022                                                   0, 0, 0,
27023                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
27024                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
27025                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27026                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
27027                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27028                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
27029                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27030                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
27031                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
27032                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
27033                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27034                 if (CHSPEC_IS40(pi->radio_chanspec))
27035                         wlc_phy_rfctrl_override_nphy_rev7(
27036                                 pi,
27037                                 (0x1 << 7),
27038                                 2, 0, 0,
27039                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27040                 else
27041                         wlc_phy_rfctrl_override_nphy_rev7(
27042                                 pi,
27043                                 (0x1 << 7),
27044                                 0, 0, 0,
27045                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27046
27047                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27048                                                   0, 0, 0,
27049                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27050                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27051                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
27052         } else {
27053                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27054         }
27055
27056         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27057
27058         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27059
27060                 wlc_phy_rfctrlintc_override_nphy(pi,
27061                                                  NPHY_RfctrlIntc_override_TRSW,
27062                                                  0x1, rx_core + 1);
27063         } else {
27064
27065                 if (rx_core == PHY_CORE_0) {
27066                         rx_antval = 0x1;
27067                         tx_antval = 0x8;
27068                 } else {
27069                         rx_antval = 0x4;
27070                         tx_antval = 0x2;
27071                 }
27072
27073                 wlc_phy_rfctrlintc_override_nphy(pi,
27074                                                  NPHY_RfctrlIntc_override_TRSW,
27075                                                  rx_antval, rx_core + 1);
27076                 wlc_phy_rfctrlintc_override_nphy(pi,
27077                                                  NPHY_RfctrlIntc_override_TRSW,
27078                                                  tx_antval, tx_core + 1);
27079         }
27080 }
27081
27082 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27083 {
27084
27085         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27086         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27087                       pi->tx_rx_cal_phy_saveregs[1]);
27088         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27089                       pi->tx_rx_cal_phy_saveregs[2]);
27090         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27091         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27092
27093         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27094         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27095         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27096         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27097         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27098                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27099                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27100                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27101                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27102         }
27103
27104         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27105         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27106 }
27107
27108 static void
27109 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27110                                  u16 *rxgain, u8 cal_type)
27111 {
27112
27113         u16 num_samps;
27114         struct phy_iq_est est[PHY_CORE_MAX];
27115         u8 tx_core;
27116         struct nphy_iq_comp save_comp, zero_comp;
27117         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27118             thresh_pwr = 10000;
27119         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27120         bool gainctrl_done = false;
27121         u8 mix_tia_gain = 3;
27122         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27123         s8 curr_gaintbl_index = 3;
27124         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27125         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27126         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27127         int fine_gain_idx;
27128         s8 txpwrindex;
27129         u16 nphy_rxcal_txgain[2];
27130
27131         if (NREV_GE(pi->pubpi.phy_rev, 7))
27132                 tx_core = rx_core;
27133         else
27134                 tx_core = 1 - rx_core;
27135
27136         num_samps = 1024;
27137         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27138
27139         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27140         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27141         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27142
27143         if (CHSPEC_IS5G(pi->radio_chanspec)) {
27144                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27145                         mix_tia_gain = 3;
27146                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27147                         mix_tia_gain = 4;
27148                 else
27149                         mix_tia_gain = 6;
27150                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27151                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27152                 else
27153                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27154         } else {
27155                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27156                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27157                 else
27158                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27159         }
27160
27161         do {
27162
27163                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27164                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27165                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27166                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27167                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27168                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27169                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27170
27171                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27172                         wlc_phy_rfctrl_override_1tomany_nphy(
27173                                 pi,
27174                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27175                                 ((lpf_biq1 << 12) |
27176                                  (lpf_biq0 << 8) |
27177                                  (mix_tia_gain << 4) | (lna2 << 2)
27178                                  | lna1), 0x3, 0);
27179                 else
27180                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27181                                                      ((hpvga << 12) |
27182                                                       (lpf_biq1 << 10) |
27183                                                       (lpf_biq0 << 8) |
27184                                                       (mix_tia_gain << 4) |
27185                                                       (lna2 << 2) | lna1), 0x3,
27186                                                      0);
27187
27188                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27189
27190                 if (txpwrindex == -1) {
27191                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27192                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27193                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27194                                                  2, 0x110, 16,
27195                                                  nphy_rxcal_txgain);
27196                 } else {
27197                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27198                                                  false);
27199                 }
27200
27201                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27202                                      NPHY_RXCAL_TONEFREQ_40MHz :
27203                                      NPHY_RXCAL_TONEFREQ_20MHz,
27204                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27205
27206                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27207                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27208                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27209                 curr_pwr = i_pwr + q_pwr;
27210
27211                 switch (gainctrl_dirn) {
27212                 case NPHY_RXCAL_GAIN_INIT:
27213                         if (curr_pwr > thresh_pwr) {
27214                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27215                                 prev_gaintbl_index = curr_gaintbl_index;
27216                                 curr_gaintbl_index--;
27217                         } else {
27218                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27219                                 prev_gaintbl_index = curr_gaintbl_index;
27220                                 curr_gaintbl_index++;
27221                         }
27222                         break;
27223
27224                 case NPHY_RXCAL_GAIN_UP:
27225                         if (curr_pwr > thresh_pwr) {
27226                                 gainctrl_done = true;
27227                                 optim_pwr = prev_pwr;
27228                                 optim_gaintbl_index = prev_gaintbl_index;
27229                         } else {
27230                                 prev_gaintbl_index = curr_gaintbl_index;
27231                                 curr_gaintbl_index++;
27232                         }
27233                         break;
27234
27235                 case NPHY_RXCAL_GAIN_DOWN:
27236                         if (curr_pwr > thresh_pwr) {
27237                                 prev_gaintbl_index = curr_gaintbl_index;
27238                                 curr_gaintbl_index--;
27239                         } else {
27240                                 gainctrl_done = true;
27241                                 optim_pwr = curr_pwr;
27242                                 optim_gaintbl_index = curr_gaintbl_index;
27243                         }
27244                         break;
27245
27246                 default:
27247                         break;
27248                 }
27249
27250                 if ((curr_gaintbl_index < 0) ||
27251                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27252                         gainctrl_done = true;
27253                         optim_pwr = curr_pwr;
27254                         optim_gaintbl_index = prev_gaintbl_index;
27255                 } else {
27256                         prev_pwr = curr_pwr;
27257                 }
27258
27259                 wlc_phy_stopplayback_nphy(pi);
27260         } while (!gainctrl_done);
27261
27262         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27263         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27264         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27265         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27266         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27267         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27268
27269         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27270         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27271
27272         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27273                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27274
27275                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27276                         lpf_biq1 = 10 - lpf_biq0;
27277                 else
27278                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27279
27280                 wlc_phy_rfctrl_override_1tomany_nphy(
27281                         pi,
27282                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27283                         ((lpf_biq1 << 12) |
27284                          (lpf_biq0 << 8) |
27285                          (mix_tia_gain << 4) |
27286                          (lna2 << 2) | lna1), 0x3,
27287                         0);
27288         } else {
27289                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27290                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27291                                              ((hpvga << 12) |
27292                                               (lpf_biq1 << 10) |
27293                                               (lpf_biq0 << 8) |
27294                                               (mix_tia_gain << 4) |
27295                                               (lna2 << 2) |
27296                                               lna1), 0x3, 0);
27297         }
27298
27299         if (rxgain != NULL) {
27300                 *rxgain++ = lna1;
27301                 *rxgain++ = lna2;
27302                 *rxgain++ = mix_tia_gain;
27303                 *rxgain++ = lpf_biq0;
27304                 *rxgain++ = lpf_biq1;
27305                 *rxgain = hpvga;
27306         }
27307
27308         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27309 }
27310
27311 static void
27312 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27313                             u8 cal_type)
27314 {
27315         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27316 }
27317
27318 static u8
27319 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27320 {
27321         u32 target_bws[2] = { 9500, 21000 };
27322         u32 ref_tones[2] = { 3000, 6000 };
27323         u32 target_bw, ref_tone;
27324
27325         u32 target_pwr_ratios[2] = { 28606, 18468 };
27326         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27327
27328         u16 start_rccal_ovr_val = 128;
27329         u16 txlpf_rccal_lpc_ovr_val = 128;
27330         u16 rxlpf_rccal_hpc_ovr_val = 159;
27331
27332         u16 orig_txlpf_rccal_lpc_ovr_val;
27333         u16 orig_rxlpf_rccal_hpc_ovr_val;
27334         u16 radio_addr_offset_rx;
27335         u16 radio_addr_offset_tx;
27336         u16 orig_dcBypass;
27337         u16 orig_RxStrnFilt40Num[6];
27338         u16 orig_RxStrnFilt40Den[4];
27339         u16 orig_rfctrloverride[2];
27340         u16 orig_rfctrlauxreg[2];
27341         u16 orig_rfctrlrssiothers;
27342         u16 tx_lpf_bw = 4;
27343
27344         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27345         u16 lpf_hpc = 7, hpvga_hpc = 7;
27346
27347         s8 rccal_stepsize;
27348         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27349         u32 ref_iq_vals = 0, target_iq_vals = 0;
27350         u16 num_samps, log_num_samps = 10;
27351         struct phy_iq_est est[PHY_CORE_MAX];
27352
27353         if (NREV_GE(pi->pubpi.phy_rev, 7))
27354                 return 0;
27355
27356         num_samps = (1 << log_num_samps);
27357
27358         if (CHSPEC_IS40(pi->radio_chanspec)) {
27359                 target_bw = target_bws[1];
27360                 target_pwr_ratio = target_pwr_ratios[1];
27361                 ref_tone = ref_tones[1];
27362                 rx_lpf_bw = rx_lpf_bws[1];
27363         } else {
27364                 target_bw = target_bws[0];
27365                 target_pwr_ratio = target_pwr_ratios[0];
27366                 ref_tone = ref_tones[0];
27367                 rx_lpf_bw = rx_lpf_bws[0];
27368         }
27369
27370         if (core_idx == 0) {
27371                 radio_addr_offset_rx = RADIO_2056_RX0;
27372                 radio_addr_offset_tx =
27373                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27374         } else {
27375                 radio_addr_offset_rx = RADIO_2056_RX1;
27376                 radio_addr_offset_tx =
27377                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27378         }
27379
27380         orig_txlpf_rccal_lpc_ovr_val =
27381                 read_radio_reg(pi,
27382                                (RADIO_2056_TX_TXLPF_RCCAL |
27383                                 radio_addr_offset_tx));
27384         orig_rxlpf_rccal_hpc_ovr_val =
27385                 read_radio_reg(pi,
27386                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27387                                 radio_addr_offset_rx));
27388
27389         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27390
27391         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27392         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27393         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27394         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27395         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27396         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27397         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27398         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27399         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27400         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27401
27402         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27403         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27404         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27405         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27406         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27407
27408         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27409                         txlpf_rccal_lpc_ovr_val);
27410
27411         write_radio_reg(pi,
27412                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27413                         rxlpf_rccal_hpc_ovr_val);
27414
27415         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27416
27417         write_phy_reg(pi, 0x267, 0x02d4);
27418         write_phy_reg(pi, 0x268, 0x0000);
27419         write_phy_reg(pi, 0x269, 0x0000);
27420         write_phy_reg(pi, 0x26a, 0x0000);
27421         write_phy_reg(pi, 0x26b, 0x0000);
27422         write_phy_reg(pi, 0x26c, 0x02d4);
27423         write_phy_reg(pi, 0x26d, 0x0000);
27424         write_phy_reg(pi, 0x26e, 0x0000);
27425         write_phy_reg(pi, 0x26f, 0x0000);
27426         write_phy_reg(pi, 0x270, 0x0000);
27427
27428         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27429         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27430         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27431         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27432
27433         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27434                     (0x7 << 10), (tx_lpf_bw << 10));
27435         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27436                     (0x7 << 0), (hpvga_hpc << 0));
27437         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27438                     (0x7 << 4), (lpf_hpc << 4));
27439         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27440                     (0x7 << 8), (rx_lpf_bw << 8));
27441
27442         rccal_stepsize = 16;
27443         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27444
27445         while (rccal_stepsize >= 0) {
27446                 write_radio_reg(pi,
27447                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27448                                  radio_addr_offset_rx), rccal_val);
27449
27450                 if (rccal_stepsize == 16) {
27451
27452                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27453                                              0, 1, false);
27454                         udelay(2);
27455
27456                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27457
27458                         if (core_idx == 0)
27459                                 ref_iq_vals =
27460                                         max_t(u32, (est[0].i_pwr +
27461                                                     est[0].q_pwr) >>
27462                                               (log_num_samps + 1),
27463                                               1);
27464                         else
27465                                 ref_iq_vals =
27466                                         max_t(u32, (est[1].i_pwr +
27467                                                     est[1].q_pwr) >>
27468                                               (log_num_samps + 1),
27469                                               1);
27470
27471                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27472                                              0, 1, false);
27473                         udelay(2);
27474                 }
27475
27476                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27477
27478                 if (core_idx == 0)
27479                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27480                                          (log_num_samps + 1);
27481                 else
27482                         target_iq_vals =
27483                                 (est[1].i_pwr +
27484                                  est[1].q_pwr) >> (log_num_samps + 1);
27485
27486                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27487
27488                 if (rccal_stepsize == 0)
27489                         rccal_stepsize--;
27490                 else if (rccal_stepsize == 1) {
27491                         last_rccal_val = rccal_val;
27492                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27493                         last_pwr_ratio = pwr_ratio;
27494                         rccal_stepsize--;
27495                 } else {
27496                         rccal_stepsize = (rccal_stepsize >> 1);
27497                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27498                                       rccal_stepsize : (-rccal_stepsize));
27499                 }
27500
27501                 if (rccal_stepsize == -1) {
27502                         best_rccal_val =
27503                                 (abs((int)last_pwr_ratio -
27504                                      (int)target_pwr_ratio) <
27505                                  abs((int)pwr_ratio -
27506                                      (int)target_pwr_ratio)) ? last_rccal_val :
27507                                 rccal_val;
27508
27509                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27510                                 if ((best_rccal_val > 140)
27511                                     || (best_rccal_val < 135))
27512                                         best_rccal_val = 138;
27513                         } else {
27514                                 if ((best_rccal_val > 142)
27515                                     || (best_rccal_val < 137))
27516                                         best_rccal_val = 140;
27517                         }
27518
27519                         write_radio_reg(pi,
27520                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27521                                          radio_addr_offset_rx), best_rccal_val);
27522                 }
27523         }
27524
27525         wlc_phy_stopplayback_nphy(pi);
27526
27527         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27528                         orig_txlpf_rccal_lpc_ovr_val);
27529         write_radio_reg(pi,
27530                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27531                         orig_rxlpf_rccal_hpc_ovr_val);
27532
27533         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27534
27535         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27536         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27537         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27538         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27539         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27540         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27541         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27542         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27543         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27544         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27545
27546         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27547         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27548         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27549         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27550         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27551
27552         pi->nphy_anarxlpf_adjusted = false;
27553
27554         return best_rccal_val - 0x80;
27555 }
27556
27557 #define WAIT_FOR_SCOPE  4000
27558 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27559                                       struct nphy_txgains target_gain,
27560                                       u8 cal_type, bool debug)
27561 {
27562         u16 orig_BBConfig;
27563         u8 core_no, rx_core;
27564         u8 best_rccal[2];
27565         u16 gain_save[2];
27566         u16 cal_gain[2];
27567         struct nphy_iqcal_params cal_params[2];
27568         u8 rxcore_state;
27569         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27570         s8 txlpf_idac;
27571         bool phyhang_avoid_state = false;
27572         bool skip_rxiqcal = false;
27573
27574         orig_BBConfig = read_phy_reg(pi, 0x01);
27575         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27576
27577         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27578
27579         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27580                 phyhang_avoid_state = pi->phyhang_avoid;
27581                 pi->phyhang_avoid = false;
27582         }
27583
27584         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27585
27586         for (core_no = 0; core_no <= 1; core_no++) {
27587                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27588                                               &cal_params[core_no]);
27589                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27590         }
27591
27592         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27593
27594         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27595                 (struct brcms_phy_pub *) pi);
27596
27597         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27598
27599                 skip_rxiqcal =
27600                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27601
27602                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27603
27604                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27605
27606                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27607
27608                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27609
27610                         wlc_phy_tx_tone_nphy(pi,
27611                                              (CHSPEC_IS40(
27612                                                       pi->radio_chanspec)) ?
27613                                              NPHY_RXCAL_TONEFREQ_40MHz :
27614                                              NPHY_RXCAL_TONEFREQ_20MHz,
27615                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27616                                              false);
27617
27618                         if (debug)
27619                                 mdelay(WAIT_FOR_SCOPE);
27620
27621                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27622                         wlc_phy_stopplayback_nphy(pi);
27623                 }
27624
27625                 if (((cal_type == 1) || (cal_type == 2))
27626                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27627
27628                         if (rx_core == PHY_CORE_1) {
27629
27630                                 if (rxcore_state == 1)
27631                                         wlc_phy_rxcore_setstate_nphy(
27632                                                 (struct brcms_phy_pub *) pi, 3);
27633
27634                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27635                                                             1);
27636
27637                                 best_rccal[rx_core] =
27638                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27639                                 pi->nphy_rccal_value = best_rccal[rx_core];
27640
27641                                 if (rxcore_state == 1)
27642                                         wlc_phy_rxcore_setstate_nphy(
27643                                                 (struct brcms_phy_pub *) pi,
27644                                                 rxcore_state);
27645                         }
27646                 }
27647
27648                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27649
27650                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27651                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27652         }
27653
27654         if ((cal_type == 1) || (cal_type == 2)) {
27655
27656                 best_rccal[0] = best_rccal[1];
27657                 write_radio_reg(pi,
27658                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27659                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27660
27661                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27662                         rxlpf_rccal_hpc =
27663                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27664                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27665
27666                         if (PHY_IPA(pi)) {
27667                                 txlpf_rccal_lpc +=
27668                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27669                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27670                                              0x0e : 0x13;
27671                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27672                                                  TXLPF_IDAC_4, txlpf_idac);
27673                         }
27674
27675                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27676                                               0);
27677                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27678                                               0);
27679
27680                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27681                                              ((rx_core ==
27682                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27683                                               RADIO_2056_RX1)),
27684                                         (rxlpf_rccal_hpc | 0x80));
27685
27686                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27687                                              ((rx_core ==
27688                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27689                                               RADIO_2056_TX1)),
27690                                         (txlpf_rccal_lpc | 0x80));
27691                 }
27692         }
27693
27694         write_phy_reg(pi, 0x01, orig_BBConfig);
27695
27696         wlc_phy_resetcca_nphy(pi);
27697
27698         if (NREV_GE(pi->pubpi.phy_rev, 7))
27699                 wlc_phy_rfctrl_override_1tomany_nphy(
27700                         pi,
27701                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27702                         0, 0x3, 1);
27703         else
27704                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27705
27706         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27707
27708         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27709                                  gain_save);
27710
27711         if (NREV_GE(pi->pubpi.phy_rev, 4))
27712                 pi->phyhang_avoid = phyhang_avoid_state;
27713
27714         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27715
27716         return 0;
27717 }
27718
27719 static int
27720 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27721                            struct nphy_txgains target_gain, bool debug)
27722 {
27723         struct phy_iq_est est[PHY_CORE_MAX];
27724         u8 core_num, rx_core, tx_core;
27725         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27726         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27727         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27728         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27729         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27730         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27731         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27732         u16 num_samps;
27733         u32 i_pwr, q_pwr, tot_pwr[3];
27734         u8 gain_pass, use_hpf_num;
27735         u16 mask, val1, val2;
27736         u16 core_no;
27737         u16 gain_save[2];
27738         u16 cal_gain[2];
27739         struct nphy_iqcal_params cal_params[2];
27740         u8 phy_bw;
27741         int bcmerror = 0;
27742         bool first_playtone = true;
27743
27744         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27745
27746         if (NREV_LT(pi->pubpi.phy_rev, 2))
27747                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27748
27749         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27750
27751         for (core_no = 0; core_no <= 1; core_no++) {
27752                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27753                                               &cal_params[core_no]);
27754                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27755         }
27756
27757         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27758
27759         num_samps = 1024;
27760         desired_log2_pwr = 13;
27761
27762         for (core_num = 0; core_num < 2; core_num++) {
27763
27764                 rx_core = core_num;
27765                 tx_core = 1 - core_num;
27766
27767                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27768                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27769                                                 0xa6 : 0xa7);
27770                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27771                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27772                                                  0x91 : 0x92);
27773                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27774                                                  0x91 : 0x92);
27775
27776                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27777                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27778
27779                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27780                            ((0x1 << 1) | (0x1 << 2)));
27781                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27782
27783                 if (((pi->nphy_rxcalparams) & 0xff000000))
27784                         write_phy_reg(pi,
27785                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27786                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27787                                         0x140 : 0x110));
27788                 else
27789                         write_phy_reg(pi,
27790                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27791                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27792                                        0x180 : 0x120));
27793
27794                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27795                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27796                                0x114));
27797
27798                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27799                 if (rx_core == PHY_CORE_0) {
27800                         val1 = RADIO_2055_COUPLE_RX_MASK;
27801                         val2 = RADIO_2055_COUPLE_TX_MASK;
27802                 } else {
27803                         val1 = RADIO_2055_COUPLE_TX_MASK;
27804                         val2 = RADIO_2055_COUPLE_RX_MASK;
27805                 }
27806
27807                 if ((pi->nphy_rxcalparams & 0x10000)) {
27808                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27809                                       val1);
27810                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27811                                       val2);
27812                 }
27813
27814                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27815
27816                         if (debug)
27817                                 mdelay(WAIT_FOR_SCOPE);
27818
27819                         if (gain_pass < 3) {
27820                                 curr_lna = lna_vals[gain_pass];
27821                                 curr_hpf1 = hpf1_vals[gain_pass];
27822                                 curr_hpf2 = hpf2_vals[gain_pass];
27823                         } else {
27824
27825                                 if (tot_pwr[1] > 10000) {
27826                                         curr_lna = lna_vals[2];
27827                                         curr_hpf1 = hpf1_vals[2];
27828                                         curr_hpf2 = hpf2_vals[2];
27829                                         use_hpf_num = 1;
27830                                         curr_hpf = curr_hpf1;
27831                                         actual_log2_pwr =
27832                                                 wlc_phy_nbits(tot_pwr[2]);
27833                                 } else {
27834                                         if (tot_pwr[0] > 10000) {
27835                                                 curr_lna = lna_vals[1];
27836                                                 curr_hpf1 = hpf1_vals[1];
27837                                                 curr_hpf2 = hpf2_vals[1];
27838                                                 use_hpf_num = 1;
27839                                                 curr_hpf = curr_hpf1;
27840                                                 actual_log2_pwr =
27841                                                         wlc_phy_nbits(
27842                                                                 tot_pwr[1]);
27843                                         } else {
27844                                                 curr_lna = lna_vals[0];
27845                                                 curr_hpf1 = hpf1_vals[0];
27846                                                 curr_hpf2 = hpf2_vals[0];
27847                                                 use_hpf_num = 2;
27848                                                 curr_hpf = curr_hpf2;
27849                                                 actual_log2_pwr =
27850                                                         wlc_phy_nbits(
27851                                                                 tot_pwr[0]);
27852                                         }
27853                                 }
27854
27855                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27856                                 curr_hpf += hpf_change;
27857                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27858                                 if (use_hpf_num == 1)
27859                                         curr_hpf1 = curr_hpf;
27860                                 else
27861                                         curr_hpf2 = curr_hpf;
27862                         }
27863
27864                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27865                                                      ((curr_hpf2 << 8) |
27866                                                       (curr_hpf1 << 4) |
27867                                                       (curr_lna << 2)), 0x3, 0);
27868                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27869
27870                         wlc_phy_stopplayback_nphy(pi);
27871
27872                         if (first_playtone) {
27873                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27874                                                 (u16) (pi->nphy_rxcalparams &
27875                                                        0xffff), 0, 0, true);
27876                                 first_playtone = false;
27877                         } else {
27878                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27879                                           40 : 20;
27880                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27881                                                         0, 0, 0, true);
27882                         }
27883
27884                         if (bcmerror == 0) {
27885                                 if (gain_pass < 3) {
27886
27887                                         wlc_phy_rx_iq_est_nphy(pi, est,
27888                                                                num_samps, 32,
27889                                                                0);
27890                                         i_pwr = (est[rx_core].i_pwr +
27891                                                  num_samps / 2) / num_samps;
27892                                         q_pwr = (est[rx_core].q_pwr +
27893                                                  num_samps / 2) / num_samps;
27894                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27895                                 } else {
27896
27897                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27898                                                                      (1 <<
27899                                                                       rx_core));
27900                                 }
27901
27902                                 wlc_phy_stopplayback_nphy(pi);
27903                         }
27904
27905                         if (bcmerror != 0)
27906                                 break;
27907                 }
27908
27909                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27910                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27911
27912                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27913                               0x92, orig_RfctrlIntcTx);
27914                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27915                               0x92, orig_RfctrlIntcRx);
27916                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27917                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27918                               0xa7, orig_AfectrlCore);
27919                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27920
27921                 if (bcmerror != 0)
27922                         break;
27923         }
27924
27925         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27926         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27927
27928         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27929                                  gain_save);
27930
27931         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27932
27933         return bcmerror;
27934 }
27935
27936 int
27937 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27938                       u8 cal_type, bool debug)
27939 {
27940         if (NREV_GE(pi->pubpi.phy_rev, 7))
27941                 cal_type = 0;
27942
27943         if (NREV_GE(pi->pubpi.phy_rev, 3))
27944                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27945                                                   debug);
27946         else
27947                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27948 }
27949
27950 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27951 {
27952         uint core;
27953         u32 txgain;
27954         u16 rad_gain, dac_gain, bbmult, m1m2;
27955         u8 txpi[2], chan_freq_range;
27956         s32 rfpwr_offset;
27957
27958         if (pi->phyhang_avoid)
27959                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27960
27961         if (pi->sh->sromrev < 4) {
27962                 txpi[0] = txpi[1] = 72;
27963         } else {
27964
27965                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27966                 switch (chan_freq_range) {
27967                 case WL_CHAN_FREQ_RANGE_2G:
27968                 case WL_CHAN_FREQ_RANGE_5GL:
27969                 case WL_CHAN_FREQ_RANGE_5GM:
27970                 case WL_CHAN_FREQ_RANGE_5GH:
27971                         txpi[0] = 0;
27972                         txpi[1] = 0;
27973                         break;
27974                 default:
27975                         txpi[0] = txpi[1] = 91;
27976                         break;
27977                 }
27978         }
27979
27980         if (NREV_GE(pi->pubpi.phy_rev, 7))
27981                 txpi[0] = txpi[1] = 30;
27982         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27983                 txpi[0] = txpi[1] = 40;
27984
27985         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27986
27987                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27988                     (txpi[1] < 40) || (txpi[1] > 100))
27989                         txpi[0] = txpi[1] = 91;
27990         }
27991
27992         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27993         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27994         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27995         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27996
27997         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27998                 uint phyrev = pi->pubpi.phy_rev;
27999
28000                 if (NREV_GE(phyrev, 3)) {
28001                         if (PHY_IPA(pi)) {
28002                                 u32 *tx_gaintbl =
28003                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
28004                                 txgain = tx_gaintbl[txpi[core]];
28005                         } else {
28006                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28007                                         if (NREV_IS(phyrev, 3)) {
28008                                                 txgain =
28009                                                       nphy_tpc_5GHz_txgain_rev3
28010                                                                    [txpi[core]];
28011                                         } else if (NREV_IS(phyrev, 4)) {
28012                                                 txgain = (
28013                                                   pi->srom_fem5g.extpagain ==
28014                                                   3) ?
28015                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
28016                                                  [txpi[core]] :
28017                                                  nphy_tpc_5GHz_txgain_rev4
28018                                                  [txpi[core]];
28019                                         } else {
28020                                                 txgain =
28021                                                       nphy_tpc_5GHz_txgain_rev5
28022                                                                    [txpi[core]];
28023                                         }
28024                                 } else {
28025                                         if (NREV_GE(phyrev, 5) &&
28026                                             (pi->srom_fem2g.extpagain == 3)) {
28027                                                 txgain =
28028                                                         nphy_tpc_txgain_HiPwrEPA
28029                                                         [txpi[core]];
28030                                         } else {
28031                                                 txgain = nphy_tpc_txgain_rev3
28032                                                          [txpi[core]];
28033                                         }
28034                                 }
28035                         }
28036                 } else {
28037                         txgain = nphy_tpc_txgain[txpi[core]];
28038                 }
28039
28040                 if (NREV_GE(phyrev, 3))
28041                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28042                 else
28043                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28044
28045                 if (NREV_GE(phyrev, 7))
28046                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28047                 else
28048                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28049
28050                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28051
28052                 if (NREV_GE(phyrev, 3))
28053                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28054                                          0xa5), (0x1 << 8), (0x1 << 8));
28055                 else
28056                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28057
28058                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28059
28060                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28061                                          &rad_gain);
28062
28063                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28064                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28065                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28066                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28067
28068                 if (PHY_IPA(pi)) {
28069                         wlc_phy_table_read_nphy(pi,
28070                                                 (core ==
28071                                                  PHY_CORE_0 ?
28072                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28073                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28074                                                 576 + txpi[core], 32,
28075                                                 &rfpwr_offset);
28076
28077                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28078                                     0x29b, (0x1ff << 4),
28079                                     ((s16) rfpwr_offset) << 4);
28080
28081                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28082                                     0x29b, (0x1 << 2), (1) << 2);
28083
28084                 }
28085         }
28086
28087         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28088
28089         if (pi->phyhang_avoid)
28090                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28091 }
28092
28093 static void
28094 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28095                                 u8 tmp_max_pwr, u8 rate_start,
28096                                 u8 rate_end)
28097 {
28098         u8 rate;
28099         u8 word_num, nibble_num;
28100         u8 tmp_nibble;
28101
28102         for (rate = rate_start; rate <= rate_end; rate++) {
28103                 word_num = (rate - rate_start) >> 2;
28104                 nibble_num = (rate - rate_start) & 0x3;
28105                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28106
28107                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28108         }
28109 }
28110
28111 static void
28112 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28113                             u8 rate_start, u8 rate_end)
28114 {
28115         u8 rate;
28116
28117         for (rate = rate_start; rate <= rate_end; rate++)
28118                 srom_max[rate] -= 2 * pwr_offset;
28119 }
28120
28121 void
28122 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28123                                 u8 rate_mcs_end, u8 rate_ofdm_start)
28124 {
28125         u8 rate1, rate2;
28126
28127         rate2 = rate_ofdm_start;
28128         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28129                 power[rate1] = power[rate2];
28130                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28131         }
28132         power[rate_mcs_end] = power[rate_mcs_end - 1];
28133 }
28134
28135 void
28136 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28137                                 u8 rate_ofdm_end, u8 rate_mcs_start)
28138 {
28139         u8 rate1, rate2;
28140
28141         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28142              rate1 <= rate_ofdm_end; rate1++, rate2++) {
28143                 power[rate1] = power[rate2];
28144                 if (rate1 == rate_ofdm_start)
28145                         power[++rate1] = power[rate2];
28146         }
28147 }
28148
28149 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28150 {
28151         uint rate1, rate2, band_num;
28152         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28153         u8 tmp_max_pwr = 0;
28154         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28155         u8 *tx_srom_max_rate = NULL;
28156
28157         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28158              band_num++) {
28159                 switch (band_num) {
28160                 case 0:
28161
28162                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28163                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
28164
28165                         pwr_offsets1[0] = pi->cck2gpo;
28166                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28167                                                         pwr_offsets1,
28168                                                         tmp_max_pwr,
28169                                                         TXP_FIRST_CCK,
28170                                                         TXP_LAST_CCK);
28171
28172                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28173                         pwr_offsets1[1] =
28174                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28175
28176                         pwr_offsets2 = pi->mcs2gpo;
28177
28178                         tmp_cddpo = pi->cdd2gpo;
28179                         tmp_stbcpo = pi->stbc2gpo;
28180                         tmp_bw40po = pi->bw402gpo;
28181
28182                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28183                         break;
28184                 case 1:
28185
28186                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28187                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28188
28189                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28190                         pwr_offsets1[1] =
28191                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28192
28193                         pwr_offsets2 = pi->mcs5gpo;
28194
28195                         tmp_cddpo = pi->cdd5gpo;
28196                         tmp_stbcpo = pi->stbc5gpo;
28197                         tmp_bw40po = pi->bw405gpo;
28198
28199                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28200                         break;
28201                 case 2:
28202
28203                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28204                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28205
28206                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28207                         pwr_offsets1[1] =
28208                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28209
28210                         pwr_offsets2 = pi->mcs5glpo;
28211
28212                         tmp_cddpo = pi->cdd5glpo;
28213                         tmp_stbcpo = pi->stbc5glpo;
28214                         tmp_bw40po = pi->bw405glpo;
28215
28216                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28217                         break;
28218                 case 3:
28219
28220                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28221                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28222
28223                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28224                         pwr_offsets1[1] =
28225                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28226
28227                         pwr_offsets2 = pi->mcs5ghpo;
28228
28229                         tmp_cddpo = pi->cdd5ghpo;
28230                         tmp_stbcpo = pi->stbc5ghpo;
28231                         tmp_bw40po = pi->bw405ghpo;
28232
28233                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28234                         break;
28235                 }
28236
28237                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28238                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28239                                                 TXP_LAST_OFDM);
28240
28241                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28242                                                 TXP_FIRST_MCS_20_SISO,
28243                                                 TXP_LAST_MCS_20_SISO,
28244                                                 TXP_FIRST_OFDM);
28245
28246                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28247                                                 tmp_max_pwr,
28248                                                 TXP_FIRST_MCS_20_CDD,
28249                                                 TXP_LAST_MCS_20_CDD);
28250
28251                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28252                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28253                                                     TXP_FIRST_MCS_20_CDD,
28254                                                     TXP_LAST_MCS_20_CDD);
28255
28256                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28257                                                 TXP_FIRST_OFDM_20_CDD,
28258                                                 TXP_LAST_OFDM_20_CDD,
28259                                                 TXP_FIRST_MCS_20_CDD);
28260
28261                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28262                                                 tmp_max_pwr,
28263                                                 TXP_FIRST_MCS_20_STBC,
28264                                                 TXP_LAST_MCS_20_STBC);
28265
28266                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28267                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28268                                                     tmp_stbcpo,
28269                                                     TXP_FIRST_MCS_20_STBC,
28270                                                     TXP_LAST_MCS_20_STBC);
28271
28272                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28273                                                 &pwr_offsets2[2], tmp_max_pwr,
28274                                                 TXP_FIRST_MCS_20_SDM,
28275                                                 TXP_LAST_MCS_20_SDM);
28276
28277                 if (NPHY_IS_SROM_REINTERPRET) {
28278
28279                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28280                                                         &pwr_offsets2[4],
28281                                                         tmp_max_pwr,
28282                                                         TXP_FIRST_MCS_40_SISO,
28283                                                         TXP_LAST_MCS_40_SISO);
28284
28285                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28286                                                         TXP_FIRST_OFDM_40_SISO,
28287                                                         TXP_LAST_OFDM_40_SISO,
28288                                                         TXP_FIRST_MCS_40_SISO);
28289
28290                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28291                                                         &pwr_offsets2[4],
28292                                                         tmp_max_pwr,
28293                                                         TXP_FIRST_MCS_40_CDD,
28294                                                         TXP_LAST_MCS_40_CDD);
28295
28296                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28297                                                     TXP_FIRST_MCS_40_CDD,
28298                                                     TXP_LAST_MCS_40_CDD);
28299
28300                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28301                                                         TXP_FIRST_OFDM_40_CDD,
28302                                                         TXP_LAST_OFDM_40_CDD,
28303                                                         TXP_FIRST_MCS_40_CDD);
28304
28305                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28306                                                         &pwr_offsets2[4],
28307                                                         tmp_max_pwr,
28308                                                         TXP_FIRST_MCS_40_STBC,
28309                                                         TXP_LAST_MCS_40_STBC);
28310
28311                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28312                                                     tmp_stbcpo,
28313                                                     TXP_FIRST_MCS_40_STBC,
28314                                                     TXP_LAST_MCS_40_STBC);
28315
28316                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28317                                                         &pwr_offsets2[6],
28318                                                         tmp_max_pwr,
28319                                                         TXP_FIRST_MCS_40_SDM,
28320                                                         TXP_LAST_MCS_40_SDM);
28321                 } else {
28322
28323                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28324                                      TXP_FIRST_OFDM;
28325                              rate1 <= TXP_LAST_MCS_40_SDM;
28326                              rate1++, rate2++)
28327                                 tx_srom_max_rate[rate1] =
28328                                         tx_srom_max_rate[rate2];
28329                 }
28330
28331                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28332                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28333                                                     tmp_bw40po,
28334                                                     TXP_FIRST_OFDM_40_SISO,
28335                                                     TXP_LAST_MCS_40_SDM);
28336
28337                 tx_srom_max_rate[TXP_MCS_32] =
28338                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28339         }
28340
28341         return;
28342 }
28343
28344 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28345 {
28346         u8 tx_pwr_ctrl_state;
28347         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28348         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28349
28350         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28351
28352         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28353                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28354                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28355                 udelay(1);
28356         }
28357
28358         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28359
28360         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28361                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28362 }
28363
28364 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28365 {
28366         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28367                                             (0x1 << 14) | (0x1 << 13));
28368 }
28369
28370 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28371 {
28372         u16 tmp;
28373         u16 pwr_idx[2];
28374
28375         if (wlc_phy_txpwr_ison_nphy(pi)) {
28376                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28377                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28378
28379                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28380         } else {
28381                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28382                         << 8) |
28383                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28384         }
28385
28386         return tmp;
28387 }
28388
28389 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28390 {
28391         if (PHY_IPA(pi)
28392             && (pi->nphy_force_papd_cal
28393                 || (wlc_phy_txpwr_ison_nphy(pi)
28394                     &&
28395                     (((u32)
28396                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28397                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28398                      || ((u32)
28399                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28400                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28401                 wlc_phy_a4(pi, true);
28402 }
28403
28404 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28405 {
28406         u16 mask = 0, val = 0, ishw = 0;
28407         u8 ctr;
28408         uint core;
28409         u32 tbl_offset;
28410         u32 tbl_len;
28411         u16 regval[84];
28412
28413         if (pi->phyhang_avoid)
28414                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28415
28416         switch (ctrl_type) {
28417         case PHY_TPC_HW_OFF:
28418         case PHY_TPC_HW_ON:
28419                 pi->nphy_txpwrctrl = ctrl_type;
28420                 break;
28421         default:
28422                 break;
28423         }
28424
28425         if (ctrl_type == PHY_TPC_HW_OFF) {
28426                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28427
28428                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28429                                 for (core = 0; core < pi->pubpi.phy_corenum;
28430                                      core++)
28431                                         pi->nphy_txpwr_idx[core] =
28432                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28433                                                         pi,
28434                                                         (u8) core);
28435                         }
28436
28437                 }
28438
28439                 tbl_len = 84;
28440                 tbl_offset = 64;
28441                 for (ctr = 0; ctr < tbl_len; ctr++)
28442                         regval[ctr] = 0;
28443                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28444                                          regval);
28445                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28446                                          regval);
28447
28448                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28449                         and_phy_reg(pi, 0x1e7,
28450                                     (u16) (~((0x1 << 15) |
28451                                              (0x1 << 14) | (0x1 << 13))));
28452                 else
28453                         and_phy_reg(pi, 0x1e7,
28454                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28455
28456                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28457                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28458                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28459                 } else {
28460                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28461                 }
28462
28463                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28464                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28465                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28466                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28467
28468                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28469                     pi->bw == WL_CHANSPEC_BW_40)
28470                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28471                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28472
28473         } else {
28474
28475                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28476                                          8, pi->adj_pwr_tbl_nphy);
28477                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28478                                          8, pi->adj_pwr_tbl_nphy);
28479
28480                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28481                 mask = (0x1 << 14) | (0x1 << 13);
28482                 val = (ishw << 14) | (ishw << 13);
28483
28484                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28485                         mask |= (0x1 << 15);
28486                         val |= (ishw << 15);
28487                 }
28488
28489                 mod_phy_reg(pi, 0x1e7, mask, val);
28490
28491                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28492                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28493                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28494                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28495                         } else {
28496                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28497                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28498                                         mod_phy_reg(pi, 0x222,
28499                                                     (0xff << 0), 0x64);
28500                         }
28501                 }
28502
28503                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28504                         if ((pi->nphy_txpwr_idx[0] != 128)
28505                             && (pi->nphy_txpwr_idx[1] != 128))
28506                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28507                                                                pi->
28508                                                                nphy_txpwr_idx
28509                                                                [0],
28510                                                                pi->
28511                                                                nphy_txpwr_idx
28512                                                                [1]);
28513                 }
28514
28515                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28516                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28517                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28518                 } else {
28519                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28520                 }
28521
28522                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28523                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28524                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28525                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28526
28527                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28528                     pi->bw == WL_CHANSPEC_BW_40)
28529                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28530                                        0x0, BRCM_BAND_ALL);
28531
28532                 if (PHY_IPA(pi)) {
28533                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28534                                     0x29b, (0x1 << 2), (0) << 2);
28535
28536                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28537                                     0x29b, (0x1 << 2), (0) << 2);
28538
28539                 }
28540
28541         }
28542
28543         if (pi->phyhang_avoid)
28544                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28545 }
28546
28547 void
28548 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28549                          bool restore_cals)
28550 {
28551         u8 core, txpwrctl_tbl;
28552         u16 tx_ind0, iq_ind0, lo_ind0;
28553         u16 m1m2;
28554         u32 txgain;
28555         u16 rad_gain, dac_gain;
28556         u8 bbmult;
28557         u32 iqcomp;
28558         u16 iqcomp_a, iqcomp_b;
28559         u32 locomp;
28560         u16 tmpval;
28561         u8 tx_pwr_ctrl_state;
28562         s32 rfpwr_offset;
28563         u16 regval[2];
28564
28565         if (pi->phyhang_avoid)
28566                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28567
28568         tx_ind0 = 192;
28569         iq_ind0 = 320;
28570         lo_ind0 = 448;
28571
28572         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28573
28574                 if ((core_mask & (1 << core)) == 0)
28575                         continue;
28576
28577                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28578
28579                 if (txpwrindex < 0) {
28580                         if (pi->nphy_txpwrindex[core].index < 0)
28581                                 continue;
28582
28583                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28584                                 mod_phy_reg(pi, 0x8f,
28585                                             (0x1 << 8),
28586                                             pi->nphy_txpwrindex[core].
28587                                             AfectrlOverride);
28588                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28589                                             pi->nphy_txpwrindex[core].
28590                                             AfectrlOverride);
28591                         } else {
28592                                 mod_phy_reg(pi, 0xa5,
28593                                             (0x1 << 14),
28594                                             pi->nphy_txpwrindex[core].
28595                                             AfectrlOverride);
28596                         }
28597
28598                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28599                                       0xaa : 0xab,
28600                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28601
28602                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28603                                                  &pi->nphy_txpwrindex[core].
28604                                                  rad_gain);
28605
28606                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28607                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28608                         m1m2 |= ((core == PHY_CORE_0) ?
28609                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28610                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28611                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28612
28613                         if (restore_cals) {
28614                                 wlc_phy_table_write_nphy(
28615                                         pi, 15, 2, (80 + 2 * core), 16,
28616                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28617                                 wlc_phy_table_write_nphy(
28618                                         pi, 15, 1, (85 + core), 16,
28619                                         &pi->nphy_txpwrindex[core].locomp);
28620                                 wlc_phy_table_write_nphy(
28621                                         pi, 15, 1, (93 + core), 16,
28622                                         &pi->nphy_txpwrindex[core].locomp);
28623                         }
28624
28625                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28626
28627                         pi->nphy_txpwrindex[core].index_internal =
28628                                 pi->nphy_txpwrindex[core].index_internal_save;
28629                 } else {
28630
28631                         if (pi->nphy_txpwrindex[core].index < 0) {
28632
28633                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28634                                         mod_phy_reg(pi, 0x8f,
28635                                                     (0x1 << 8),
28636                                                     pi->nphy_txpwrindex[core].
28637                                                     AfectrlOverride);
28638                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28639                                                     pi->nphy_txpwrindex[core].
28640                                                     AfectrlOverride);
28641                                 } else {
28642                                         pi->nphy_txpwrindex[core].
28643                                         AfectrlOverride =
28644                                                 read_phy_reg(pi, 0xa5);
28645                                 }
28646
28647                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28648                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28649                                                          0xaa : 0xab);
28650
28651                                 wlc_phy_table_read_nphy(pi, 7, 1,
28652                                                         (0x110 + core), 16,
28653                                                         &pi->
28654                                                         nphy_txpwrindex[core].
28655                                                         rad_gain);
28656
28657                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28658                                                         &tmpval);
28659                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28660                                 tmpval &= 0xff;
28661                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28662
28663                                 wlc_phy_table_read_nphy(pi, 15, 2,
28664                                                         (80 + 2 * core), 16,
28665                                                         &pi->
28666                                                         nphy_txpwrindex[core].
28667                                                         iqcomp_a);
28668
28669                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28670                                                         16,
28671                                                         &pi->
28672                                                         nphy_txpwrindex[core].
28673                                                         locomp);
28674
28675                                 pi->nphy_txpwrindex[core].index_internal_save =
28676                                         pi->nphy_txpwrindex[core].
28677                                         index_internal;
28678                         }
28679
28680                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28681                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28682
28683                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28684                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28685
28686                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28687                                                 (tx_ind0 + txpwrindex), 32,
28688                                                 &txgain);
28689
28690                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28691                                 rad_gain = (txgain >> 16) &
28692                                            ((1 << (32 - 16 + 1)) - 1);
28693                         else
28694                                 rad_gain = (txgain >> 16) &
28695                                            ((1 << (28 - 16 + 1)) - 1);
28696
28697                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28698                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28699
28700                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28701                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28702                                                  0xa5), (0x1 << 8), (0x1 << 8));
28703                         else
28704                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28705
28706                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28707                                       0xaa : 0xab, dac_gain);
28708
28709                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28710                                                  &rad_gain);
28711
28712                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28713                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28714                         m1m2 |= ((core == PHY_CORE_0) ?
28715                                 (bbmult << 8) : (bbmult << 0));
28716
28717                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28718
28719                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28720                                                 (iq_ind0 + txpwrindex), 32,
28721                                                 &iqcomp);
28722                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28723                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28724
28725                         if (restore_cals) {
28726                                 regval[0] = (u16) iqcomp_a;
28727                                 regval[1] = (u16) iqcomp_b;
28728                                 wlc_phy_table_write_nphy(pi, 15, 2,
28729                                                          (80 + 2 * core), 16,
28730                                                          regval);
28731                         }
28732
28733                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28734                                                 (lo_ind0 + txpwrindex), 32,
28735                                                 &locomp);
28736                         if (restore_cals)
28737                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28738                                                          16, &locomp);
28739
28740                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28741                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28742
28743                         if (PHY_IPA(pi)) {
28744                                 wlc_phy_table_read_nphy(pi,
28745                                                 (core == PHY_CORE_0 ?
28746                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28747                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28748                                                 1, 576 + txpwrindex, 32,
28749                                                 &rfpwr_offset);
28750
28751                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28752                                             0x29b, (0x1ff << 4),
28753                                             ((s16) rfpwr_offset) << 4);
28754
28755                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28756                                             0x29b, (0x1 << 2), (1) << 2);
28757
28758                         }
28759
28760                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28761                 }
28762
28763                 pi->nphy_txpwrindex[core].index = txpwrindex;
28764         }
28765
28766         if (pi->phyhang_avoid)
28767                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28768 }
28769
28770 void
28771 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28772                                    u8 txp_rate_idx)
28773 {
28774         u8 chan_freq_range;
28775
28776         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28777         switch (chan_freq_range) {
28778         case WL_CHAN_FREQ_RANGE_2G:
28779                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28780                 break;
28781         case WL_CHAN_FREQ_RANGE_5GM:
28782                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28783                 break;
28784         case WL_CHAN_FREQ_RANGE_5GL:
28785                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28786                 break;
28787         case WL_CHAN_FREQ_RANGE_5GH:
28788                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28789                 break;
28790         default:
28791                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28792                 break;
28793         }
28794
28795         return;
28796 }
28797
28798 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28799 {
28800         u16 clip_off[] = { 0xffff, 0xffff };
28801
28802         if (enable) {
28803                 if (pi->nphy_deaf_count == 0) {
28804                         pi->classifier_state =
28805                                 wlc_phy_classifier_nphy(pi, 0, 0);
28806                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28807                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28808                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28809                 }
28810
28811                 pi->nphy_deaf_count++;
28812
28813                 wlc_phy_resetcca_nphy(pi);
28814
28815         } else {
28816                 pi->nphy_deaf_count--;
28817
28818                 if (pi->nphy_deaf_count == 0) {
28819                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28820                                                 pi->classifier_state);
28821                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28822                 }
28823         }
28824 }
28825
28826 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28827 {
28828         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28829
28830         if (mode) {
28831                 if (pi->nphy_deaf_count == 0)
28832                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28833         } else if (pi->nphy_deaf_count > 0) {
28834                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28835         }
28836
28837         wlapi_enable_mac(pi->sh->physhim);
28838 }