This source file includes following definitions.
- wlc_phy_bist_check_phy
- wlc_phy_bphy_init_nphy
- wlc_phy_table_write_nphy
- wlc_phy_table_read_nphy
- wlc_phy_static_table_download_nphy
- wlc_phy_tbl_init_nphy
- wlc_phy_write_txmacreg_nphy
- wlc_phy_nphy_tkip_rifs_war
- wlc_phy_txpwrctrl_config_nphy
- wlc_phy_txpwr_srom_read_ppr_nphy
- wlc_phy_txpwr_srom_read_nphy
- wlc_phy_attach_nphy
- get_rf_pwr_offset
- wlc_phy_update_mimoconfig_nphy
- wlc_phy_ipa_set_tx_digi_filts_nphy
- wlc_phy_ipa_restore_tx_digi_filts_nphy
- wlc_phy_set_rfseq_nphy
- wlc_phy_read_lpf_bw_ctl_nphy
- wlc_phy_rfctrl_override_nphy_rev7
- wlc_phy_adjust_lnagaintbl_nphy
- wlc_phy_war_force_trsw_to_R_cliplo_nphy
- wlc_phy_war_txchain_upd_nphy
- wlc_phy_workarounds_nphy_gainctrl_2057_rev5
- wlc_phy_workarounds_nphy_gainctrl_2057_rev6
- wlc_phy_workarounds_nphy_gainctrl
- wlc_phy_workarounds_nphy_rev7
- wlc_phy_workarounds_nphy_rev3
- wlc_phy_workarounds_nphy_rev1
- wlc_phy_workarounds_nphy
- wlc_phy_extpa_set_tx_digi_filts_nphy
- wlc_phy_clip_det_nphy
- wlc_phy_ipa_internal_tssi_setup_nphy
- wlc_phy_rfctrl_override_nphy
- wlc_phy_txpwrctrl_idle_tssi_nphy
- wlc_phy_txpwr_limit_to_tbl_nphy
- wlc_phy_txpwrctrl_pwr_setup_nphy
- wlc_phy_get_ipa_gaintbl_nphy
- wlc_phy_restore_rssical_nphy
- wlc_phy_internal_cal_txgain_nphy
- wlc_phy_precal_txgain_nphy
- wlc_phy_rfctrlintc_override_nphy
- wlc_phy_cal_txgainctrl_nphy
- wlc_phy_savecal_nphy
- wlc_phy_tx_iq_war_nphy
- wlc_phy_restorecal_nphy
- wlc_phy_txpwrctrl_coeff_setup_nphy
- wlc_phy_txlpfbw_nphy
- wlc_phy_adjust_rx_analpfbw_nphy
- wlc_phy_adjust_min_noisevar_nphy
- wlc_phy_adjust_crsminpwr_nphy
- wlc_phy_spurwar_nphy
- wlc_phy_init_nphy
- wlc_phy_resetcca_nphy
- wlc_phy_pa_override_nphy
- wlc_phy_stf_chain_upd_nphy
- wlc_phy_rxcore_setstate_nphy
- wlc_phy_rxcore_getstate_nphy
- wlc_phy_n_txpower_ipa_ison
- wlc_phy_cal_init_nphy
- wlc_phy_radio_preinit_205x
- wlc_phy_radio_init_2057
- wlc_phy_radio205x_rcal
- wlc_phy_radio2057_rccal
- wlc_phy_radio_postinit_2057
- wlc_phy_radio_init_2056
- wlc_phy_radio_postinit_2056
- wlc_phy_radio_preinit_2055
- wlc_phy_radio_init_2055
- wlc_phy_radio_postinit_2055
- wlc_phy_switch_radio_nphy
- wlc_phy_chan2freq_nphy
- wlc_phy_get_chan_freq_range_nphy
- wlc_phy_chanspec_radio2055_setup
- wlc_phy_chanspec_radio2056_setup
- wlc_phy_radio205x_vcocal_nphy
- wlc_phy_chanspec_radio2057_setup
- wlc_phy_chanspec_nphy_setup
- wlc_phy_chanspec_set_nphy
- wlc_phy_antsel_init
- wlc_phy_classifier_nphy
- wlc_phy_force_rfseq_nphy
- wlc_phy_rfctrl_override_1tomany_nphy
- wlc_phy_scale_offset_rssi_nphy
- brcms_phy_wr_tx_mux
- wlc_phy_rssisel_nphy
- wlc_phy_poll_rssi_nphy
- wlc_phy_tempsense_nphy
- wlc_phy_set_rssi_2055_vcm
- wlc_phy_rssi_cal_nphy_rev3
- wlc_phy_rssi_cal_nphy_rev2
- wlc_phy_rssi_cal_nphy
- wlc_phy_rssi_compute_nphy
- wlc_phy_loadsampletable_nphy
- wlc_phy_gen_load_samples_nphy
- wlc_phy_runsamples_nphy
- wlc_phy_tx_tone_nphy
- wlc_phy_stopplayback_nphy
- brcms_phy_get_tx_pwrctrl_tbl
- wlc_phy_get_tx_gain_nphy
- wlc_phy_iqcal_gainparams_nphy
- wlc_phy_txcal_radio_setup_nphy
- wlc_phy_txcal_radio_cleanup_nphy
- wlc_phy_txcal_physetup_nphy
- wlc_phy_txcal_phycleanup_nphy
- wlc_phy_est_tonepwr_nphy
- wlc_phy_update_txcal_ladder_nphy
- wlc_phy_txpwr_idx_cur_get_nphy
- wlc_phy_txpwr_idx_cur_set_nphy
- wlc_phy_ipa_get_bbmult_nphy
- wlc_phy_ipa_set_bbmult_nphy
- wlc_phy_papd_cal_setup_nphy
- wlc_phy_papd_cal_cleanup_nphy
- wlc_phy_a1_nphy
- wlc_phy_a2_nphy
- wlc_phy_a3_nphy
- wlc_phy_a4
- wlc_phy_cal_perical_nphy_run
- wlc_phy_cal_txiqlo_nphy
- wlc_phy_reapply_txcal_coeffs_nphy
- wlc_phy_rx_iq_coeffs_nphy
- wlc_phy_rx_iq_est_nphy
- wlc_phy_calc_rx_iq_comp_nphy
- wlc_phy_rxcal_radio_setup_nphy
- wlc_phy_rxcal_radio_cleanup_nphy
- wlc_phy_rxcal_physetup_nphy
- wlc_phy_rxcal_phycleanup_nphy
- wlc_phy_rxcal_gainctrl_nphy_rev5
- wlc_phy_rxcal_gainctrl_nphy
- wlc_phy_rc_sweep_nphy
- wlc_phy_cal_rxiq_nphy_rev3
- wlc_phy_cal_rxiq_nphy_rev2
- wlc_phy_cal_rxiq_nphy
- wlc_phy_txpwr_fixpower_nphy
- wlc_phy_txpwr_nphy_srom_convert
- wlc_phy_txpwr_nphy_po_apply
- wlc_phy_ofdm_to_mcs_powers_nphy
- wlc_phy_mcs_to_ofdm_powers_nphy
- wlc_phy_txpwr_apply_nphy
- wlc_phy_txpower_recalc_target_nphy
- wlc_phy_txpwr_ison_nphy
- wlc_phy_txpwr_idx_get_nphy
- wlc_phy_txpwr_papd_cal_nphy
- wlc_phy_txpwrctrl_enable_nphy
- wlc_phy_txpwr_index_nphy
- wlc_phy_txpower_sromlimit_get_nphy
- wlc_phy_stay_in_carriersearch_nphy
- wlc_nphy_deaf_mode
1
2
3
4
5
6 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7
8 #include <linux/kernel.h>
9 #include <linux/delay.h>
10 #include <linux/cordic.h>
11
12 #include <brcm_hw_ids.h>
13 #include <aiutils.h>
14 #include <chipcommon.h>
15 #include <pmu.h>
16 #include <d11.h>
17 #include <phy_shim.h>
18 #include "phy_int.h"
19 #include "phy_hal.h"
20 #include "phy_radio.h"
21 #include "phyreg_n.h"
22 #include "phytbl_n.h"
23 #include "soc.h"
24
25 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
26 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
27 ((core == PHY_CORE_0) ? \
28 radio_type##_##jspace##0 : \
29 radio_type##_##jspace##1))
30
31 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
32 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
33 ((core == PHY_CORE_0) ? \
34 radio_type##_##jspace##0 : \
35 radio_type##_##jspace##1), value)
36
37 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
38 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
39
40 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
41 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
42 radio_type##_##jspace##0##_##reg_name : \
43 radio_type##_##jspace##1##_##reg_name))
44
45 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
46 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
47 radio_type##_##jspace##0##_##reg_name : \
48 radio_type##_##jspace##1##_##reg_name), \
49 value)
50
51 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
52 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 radio_type##_##reg_name##_##jspace##0 : \
54 radio_type##_##reg_name##_##jspace##1))
55
56 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
57 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 radio_type##_##reg_name##_##jspace##0 : \
59 radio_type##_##reg_name##_##jspace##1), \
60 value)
61
62 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
63 #define NPHY_ACI_CHANNEL_DELTA 5
64 #define NPHY_ACI_CHANNEL_SKIP 4
65 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
66 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
67 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
68 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
69 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
70 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
71
72 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
73
74 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
75
76 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
77
78 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
79
80 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
81
82 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
83
84 #define NPHY_NOISE_NOASSOC_ENTER_TH 400
85
86 #define NPHY_NOISE_ASSOC_ENTER_TH 400
87
88 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
89
90 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
91 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
92
93 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
94
95 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
96
97 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
98
99 #define NPHY_RSSICAL_MAXREAD 31
100
101 #define NPHY_RSSICAL_NPOLL 8
102 #define NPHY_RSSICAL_MAXD (1<<20)
103 #define NPHY_MIN_RXIQ_PWR 2
104
105 #define NPHY_RSSICAL_W1_TARGET 25
106 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
107 #define NPHY_RSSICAL_NB_TARGET 0
108
109 #define NPHY_RSSICAL_W1_TARGET_REV3 29
110 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
111
112 #define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
113 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
114 #define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
115 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
116 NPHY_RSSICAL_MAXREAD)
117 #define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
118 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
119 NPHY_RSSICAL_MAXREAD)
120 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
121 #define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
122 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
123 #define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
124 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
125 #define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
126 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
127
128 #define NPHY_IQCAL_NUMGAINS 9
129 #define NPHY_N_GCTL 0x66
130
131 #define NPHY_PAPD_EPS_TBL_SIZE 64
132 #define NPHY_PAPD_SCL_TBL_SIZE 64
133 #define NPHY_NUM_DIG_FILT_COEFFS 15
134
135 #define NPHY_PAPD_COMP_OFF 0
136 #define NPHY_PAPD_COMP_ON 1
137
138 #define NPHY_SROM_TEMPSHIFT 32
139 #define NPHY_SROM_MAXTEMPOFFSET 16
140 #define NPHY_SROM_MINTEMPOFFSET -16
141
142 #define NPHY_CAL_MAXTEMPDELTA 64
143
144 #define NPHY_NOISEVAR_TBLLEN40 256
145 #define NPHY_NOISEVAR_TBLLEN20 128
146
147 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
148
149 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
150
151
152 #define CCTRL5357_EXTPA (1<<14)
153 #define CCTRL5357_ANT_MUX_2o3 (1<<15)
154
155 #define NPHY_CAL_TSSISAMPS 64
156 #define NPHY_TEST_TONE_FREQ_40MHz 4000
157 #define NPHY_TEST_TONE_FREQ_20MHz 2500
158
159 #define MAX_205x_RCAL_WAITLOOPS 10000
160
161 #define NPHY_RXCAL_TONEAMP 181
162 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
163 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
164
165 #define TXFILT_SHAPING_OFDM20 0
166 #define TXFILT_SHAPING_OFDM40 1
167 #define TXFILT_SHAPING_CCK 2
168 #define TXFILT_DEFAULT_OFDM20 3
169 #define TXFILT_DEFAULT_OFDM40 4
170
171 struct nphy_iqcal_params {
172 u16 txlpf;
173 u16 txgm;
174 u16 pga;
175 u16 pad;
176 u16 ipa;
177 u16 cal_gain;
178 u16 ncorr[5];
179 };
180
181 struct nphy_txiqcal_ladder {
182 u8 percent;
183 u8 g_env;
184 };
185
186 struct nphy_ipa_txcalgains {
187 struct nphy_txgains gains;
188 bool useindex;
189 u8 index;
190 };
191
192 struct nphy_papd_restore_state {
193 u16 fbmix[2];
194 u16 vga_master[2];
195 u16 intpa_master[2];
196 u16 afectrl[2];
197 u16 afeoverride[2];
198 u16 pwrup[2];
199 u16 atten[2];
200 u16 mm;
201 };
202
203 struct nphy_ipa_txrxgain {
204 u16 hpvga;
205 u16 lpf_biq1;
206 u16 lpf_biq0;
207 u16 lna2;
208 u16 lna1;
209 s8 txpwrindex;
210 };
211
212 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
213
214 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
215 {0, 0, 0, 0, 0, 100},
216 {0, 0, 0, 0, 0, 50},
217 {0, 0, 0, 0, 0, -1},
218 {0, 0, 0, 3, 0, -1},
219 {0, 0, 3, 3, 0, -1},
220 {0, 2, 3, 3, 0, -1}
221 };
222
223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
224 {0, 0, 0, 0, 0, 128},
225 {0, 0, 0, 0, 0, 70},
226 {0, 0, 0, 0, 0, 20},
227 {0, 0, 0, 3, 0, 20},
228 {0, 0, 3, 3, 0, 20},
229 {0, 2, 3, 3, 0, 20}
230 };
231
232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
233 {0, 0, 0, 0, 0, 100},
234 {0, 0, 0, 0, 0, 50},
235 {0, 0, 0, 0, 0, -1},
236 {0, 0, 0, 3, 0, -1},
237 {0, 0, 3, 3, 0, -1},
238 {0, 0, 5, 3, 0, -1}
239 };
240
241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
242 {0, 0, 0, 0, 0, 10},
243 {0, 0, 0, 1, 0, 10},
244 {0, 0, 1, 2, 0, 10},
245 {0, 0, 1, 3, 0, 10},
246 {0, 0, 4, 3, 0, 10},
247 {0, 0, 6, 3, 0, 10}
248 };
249
250 enum {
251 NPHY_RXCAL_GAIN_INIT = 0,
252 NPHY_RXCAL_GAIN_UP,
253 NPHY_RXCAL_GAIN_DOWN
254 };
255
256 #define wlc_phy_get_papd_nphy(pi) \
257 (read_phy_reg((pi), 0x1e7) & \
258 ((0x1 << 15) | \
259 (0x1 << 14) | \
260 (0x1 << 13)))
261
262 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
263 {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
264 230, -44, 230, 201, -191, 201},
265 {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
266 26, 34, -32, 34},
267 {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
268 121, -73, 121, 91, 124, 91},
269 {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
270 151, 301, 151, 602, -752, 602},
271 {-92, 58, -96, 49, -104, 44, 17, 35, 17,
272 12, 25, 12, 13, 27, 13},
273 {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
274 230, -44, 230, 201, -191, 201},
275 {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
276 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
277 };
278
279 struct chan_info_nphy_2055 {
280 u16 chan;
281 u16 freq;
282 uint unknown;
283 u8 RF_pll_ref;
284 u8 RF_rf_pll_mod1;
285 u8 RF_rf_pll_mod0;
286 u8 RF_vco_cap_tail;
287 u8 RF_vco_cal1;
288 u8 RF_vco_cal2;
289 u8 RF_pll_lf_c1;
290 u8 RF_pll_lf_r1;
291 u8 RF_pll_lf_c2;
292 u8 RF_lgbuf_cen_buf;
293 u8 RF_lgen_tune1;
294 u8 RF_lgen_tune2;
295 u8 RF_core1_lgbuf_a_tune;
296 u8 RF_core1_lgbuf_g_tune;
297 u8 RF_core1_rxrf_reg1;
298 u8 RF_core1_tx_pga_pad_tn;
299 u8 RF_core1_tx_mx_bgtrim;
300 u8 RF_core2_lgbuf_a_tune;
301 u8 RF_core2_lgbuf_g_tune;
302 u8 RF_core2_rxrf_reg1;
303 u8 RF_core2_tx_pga_pad_tn;
304 u8 RF_core2_tx_mx_bgtrim;
305 u16 PHY_BW1a;
306 u16 PHY_BW2;
307 u16 PHY_BW3;
308 u16 PHY_BW4;
309 u16 PHY_BW5;
310 u16 PHY_BW6;
311 };
312
313 struct chan_info_nphy_radio205x {
314 u16 chan;
315 u16 freq;
316 u8 RF_SYN_pll_vcocal1;
317 u8 RF_SYN_pll_vcocal2;
318 u8 RF_SYN_pll_refdiv;
319 u8 RF_SYN_pll_mmd2;
320 u8 RF_SYN_pll_mmd1;
321 u8 RF_SYN_pll_loopfilter1;
322 u8 RF_SYN_pll_loopfilter2;
323 u8 RF_SYN_pll_loopfilter3;
324 u8 RF_SYN_pll_loopfilter4;
325 u8 RF_SYN_pll_loopfilter5;
326 u8 RF_SYN_reserved_addr27;
327 u8 RF_SYN_reserved_addr28;
328 u8 RF_SYN_reserved_addr29;
329 u8 RF_SYN_logen_VCOBUF1;
330 u8 RF_SYN_logen_MIXER2;
331 u8 RF_SYN_logen_BUF3;
332 u8 RF_SYN_logen_BUF4;
333 u8 RF_RX0_lnaa_tune;
334 u8 RF_RX0_lnag_tune;
335 u8 RF_TX0_intpaa_boost_tune;
336 u8 RF_TX0_intpag_boost_tune;
337 u8 RF_TX0_pada_boost_tune;
338 u8 RF_TX0_padg_boost_tune;
339 u8 RF_TX0_pgaa_boost_tune;
340 u8 RF_TX0_pgag_boost_tune;
341 u8 RF_TX0_mixa_boost_tune;
342 u8 RF_TX0_mixg_boost_tune;
343 u8 RF_RX1_lnaa_tune;
344 u8 RF_RX1_lnag_tune;
345 u8 RF_TX1_intpaa_boost_tune;
346 u8 RF_TX1_intpag_boost_tune;
347 u8 RF_TX1_pada_boost_tune;
348 u8 RF_TX1_padg_boost_tune;
349 u8 RF_TX1_pgaa_boost_tune;
350 u8 RF_TX1_pgag_boost_tune;
351 u8 RF_TX1_mixa_boost_tune;
352 u8 RF_TX1_mixg_boost_tune;
353 u16 PHY_BW1a;
354 u16 PHY_BW2;
355 u16 PHY_BW3;
356 u16 PHY_BW4;
357 u16 PHY_BW5;
358 u16 PHY_BW6;
359 };
360
361 struct chan_info_nphy_radio2057 {
362 u16 chan;
363 u16 freq;
364 u8 RF_vcocal_countval0;
365 u8 RF_vcocal_countval1;
366 u8 RF_rfpll_refmaster_sparextalsize;
367 u8 RF_rfpll_loopfilter_r1;
368 u8 RF_rfpll_loopfilter_c2;
369 u8 RF_rfpll_loopfilter_c1;
370 u8 RF_cp_kpd_idac;
371 u8 RF_rfpll_mmd0;
372 u8 RF_rfpll_mmd1;
373 u8 RF_vcobuf_tune;
374 u8 RF_logen_mx2g_tune;
375 u8 RF_logen_mx5g_tune;
376 u8 RF_logen_indbuf2g_tune;
377 u8 RF_logen_indbuf5g_tune;
378 u8 RF_txmix2g_tune_boost_pu_core0;
379 u8 RF_pad2g_tune_pus_core0;
380 u8 RF_pga_boost_tune_core0;
381 u8 RF_txmix5g_boost_tune_core0;
382 u8 RF_pad5g_tune_misc_pus_core0;
383 u8 RF_lna2g_tune_core0;
384 u8 RF_lna5g_tune_core0;
385 u8 RF_txmix2g_tune_boost_pu_core1;
386 u8 RF_pad2g_tune_pus_core1;
387 u8 RF_pga_boost_tune_core1;
388 u8 RF_txmix5g_boost_tune_core1;
389 u8 RF_pad5g_tune_misc_pus_core1;
390 u8 RF_lna2g_tune_core1;
391 u8 RF_lna5g_tune_core1;
392 u16 PHY_BW1a;
393 u16 PHY_BW2;
394 u16 PHY_BW3;
395 u16 PHY_BW4;
396 u16 PHY_BW5;
397 u16 PHY_BW6;
398 };
399
400 struct chan_info_nphy_radio2057_rev5 {
401 u16 chan;
402 u16 freq;
403 u8 RF_vcocal_countval0;
404 u8 RF_vcocal_countval1;
405 u8 RF_rfpll_refmaster_sparextalsize;
406 u8 RF_rfpll_loopfilter_r1;
407 u8 RF_rfpll_loopfilter_c2;
408 u8 RF_rfpll_loopfilter_c1;
409 u8 RF_cp_kpd_idac;
410 u8 RF_rfpll_mmd0;
411 u8 RF_rfpll_mmd1;
412 u8 RF_vcobuf_tune;
413 u8 RF_logen_mx2g_tune;
414 u8 RF_logen_indbuf2g_tune;
415 u8 RF_txmix2g_tune_boost_pu_core0;
416 u8 RF_pad2g_tune_pus_core0;
417 u8 RF_lna2g_tune_core0;
418 u8 RF_txmix2g_tune_boost_pu_core1;
419 u8 RF_pad2g_tune_pus_core1;
420 u8 RF_lna2g_tune_core1;
421 u16 PHY_BW1a;
422 u16 PHY_BW2;
423 u16 PHY_BW3;
424 u16 PHY_BW4;
425 u16 PHY_BW5;
426 u16 PHY_BW6;
427 };
428
429 struct nphy_sfo_cfg {
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 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
439 {
440 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
441 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
442 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
443 {
444 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
445 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
446 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
447 {
448 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
449 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
451 {
452 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
453 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
455 {
456 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
457 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
459 {
460 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
461 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
463 {
464 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
465 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
467 {
468 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
469 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
471 {
472 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
473 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
475 {
476 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
477 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
478 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
479 {
480 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
481 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
482 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
483 {
484 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
485 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
486 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
487 {
488 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
489 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
490 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
491 {
492 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
493 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
494 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
495 {
496 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
497 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
498 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
499 {
500 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
501 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
502 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
503 {
504 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
505 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
506 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
507 {
508 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
509 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
510 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
511 {
512 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
513 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
514 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
515 {
516 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
517 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
518 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
519 {
520 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
521 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
522 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
523 {
524 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
525 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
526 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
527 {
528 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
529 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
530 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
531 {
532 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
533 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
534 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
535 {
536 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
537 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
538 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
539 {
540 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
541 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
542 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
543 {
544 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
545 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
546 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
547 {
548 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
549 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
550 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
551 {
552 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
553 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
554 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
555 {
556 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
557 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
558 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
559 {
560 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
561 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
562 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
563 {
564 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
565 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
566 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
567 {
568 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
569 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
570 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
571 {
572 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
573 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
574 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
575 {
576 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
577 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
578 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
579 {
580 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
581 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
582 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
583 {
584 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
585 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
586 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
587 {
588 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
589 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
590 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
591 {
592 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
593 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
594 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
595 {
596 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
597 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
598 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
599 {
600 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
601 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
602 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
603 {
604 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
605 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
606 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
607 {
608 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
609 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
610 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
611 {
612 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
613 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
614 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
615 {
616 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
617 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
618 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
619 {
620 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
621 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
622 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
623 {
624 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
625 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
626 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
627 {
628 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
629 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
630 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
631 {
632 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
633 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
634 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
635 {
636 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
637 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
638 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
639 {
640 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
641 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
642 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
643 {
644 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
645 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
646 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
647 {
648 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
649 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
650 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
651 {
652 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
653 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
654 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
655 {
656 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
657 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
658 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
659 {
660 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
661 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
662 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
663 {
664 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
665 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
666 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
667 {
668 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
669 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
670 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
671 {
672 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
673 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
674 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
675 {
676 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
677 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
678 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
679 {
680 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
681 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
682 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
683 {
684 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
685 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
686 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
687 {
688 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
689 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
690 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
691 {
692 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
693 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
694 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
695 {
696 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
697 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
698 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
699 {
700 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
701 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
702 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
703 {
704 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
705 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
706 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
707 {
708 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
709 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
710 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
711 {
712 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
713 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
714 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
715 {
716 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
717 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
718 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
719 {
720 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
721 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
722 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
723 {
724 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
725 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
726 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
727 {
728 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
729 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
730 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
731 {
732 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
733 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
735 {
736 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
737 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
739 {
740 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
741 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
743 {
744 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
745 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
747 {
748 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
749 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
751 {
752 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
753 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
755 {
756 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
757 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
759 {
760 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
761 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
763 {
764 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
765 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
767 {
768 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
769 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
771 {
772 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
773 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
775 {
776 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
777 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
779 {
780 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
781 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
783 {
784 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
785 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
787 {
788 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
789 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
791 {
792 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
793 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
795 {
796 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
797 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
799 {
800 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
801 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
803 {
804 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
805 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
807 {
808 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
809 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
811 {
812 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
813 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
815 {
816 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
817 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
819 {
820 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
821 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
823 {
824 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
825 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
827 {
828 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
831 {
832 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
833 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
835 {
836 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
837 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
839 {
840 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
841 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
843 {
844 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
845 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
847 {
848 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
849 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
851 {
852 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
853 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
855 {
856 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
857 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
859 {
860 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
861 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
862 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
863 {
864 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
865 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
866 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
867 {
868 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
869 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
870 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
871 {
872 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
873 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
874 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
875 {
876 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
877 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
878 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
879 {
880 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
881 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
882 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
883 {
884 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
885 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
886 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
887 {
888 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
889 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
890 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
891 {
892 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
893 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
894 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
895 {
896 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
897 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
898 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
899 {
900 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
901 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
902 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
903 {
904 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
905 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
906 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
907 {
908 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
909 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
910 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
911 {
912 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
913 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
914 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
915 {
916 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
917 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
918 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
919 {
920 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
921 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
922 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
923 {
924 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
925 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
926 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
927 {
928 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
929 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
930 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
931 {
932 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
933 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
934 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
935 };
936
937 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
938 {
939 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
940 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
941 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
942 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
943 {
944 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
945 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
946 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
947 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
948 {
949 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
950 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
951 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
952 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
953 {
954 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
955 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
956 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
957 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
958 {
959 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
960 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
961 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
962 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
963 {
964 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
965 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
966 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
967 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
968 {
969 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
970 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
971 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
972 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
973 {
974 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
975 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
976 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
977 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
978 {
979 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
980 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
981 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
982 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
983 {
984 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
985 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
986 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
987 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
988 {
989 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
990 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
991 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
992 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
993 {
994 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
995 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
996 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
997 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
998 {
999 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1000 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1001 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1002 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1003 {
1004 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1005 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1006 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1007 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1008 {
1009 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1010 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1011 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1012 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1013 {
1014 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1015 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1016 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1017 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1018 {
1019 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1020 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1021 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1022 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1023 {
1024 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1025 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1026 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1027 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1028 {
1029 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1030 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1031 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1032 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1033 {
1034 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1035 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1036 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1037 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1038 {
1039 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1040 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1041 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1042 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1043 {
1044 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1045 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1046 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1047 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1048 {
1049 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1050 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1051 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1052 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1053 {
1054 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1055 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1056 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1057 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1058 {
1059 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1060 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1061 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1062 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1063 {
1064 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1065 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1066 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1067 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1068 {
1069 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1070 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1071 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1072 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1073 {
1074 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1075 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1076 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1077 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1078 {
1079 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1080 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1081 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1082 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1083 {
1084 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1085 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1086 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1087 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1088 {
1089 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1090 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1091 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1092 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1093 {
1094 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1095 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1096 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1097 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1098 {
1099 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1100 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1101 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1102 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1103 {
1104 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1105 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1106 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1107 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1108 {
1109 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1110 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1111 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1112 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1113 {
1114 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1115 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1116 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1117 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1118 {
1119 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1120 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1121 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1122 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1123 {
1124 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1125 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1126 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1127 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1128 {
1129 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1130 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1131 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1132 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1133 {
1134 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1135 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1136 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1137 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1138 {
1139 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1140 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1141 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1142 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1143 {
1144 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1145 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1146 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1147 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1148 {
1149 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1150 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1151 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1152 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1153 {
1154 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1155 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1156 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1157 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1158 {
1159 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1160 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1161 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1162 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1163 {
1164 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1165 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1166 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1167 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1168 {
1169 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1170 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1171 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1172 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1173 {
1174 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1175 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1176 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1177 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1178 {
1179 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1180 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1181 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1182 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1183 {
1184 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1185 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1186 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1187 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1188 {
1189 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1190 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1191 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1192 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1193 {
1194 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1195 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1196 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1197 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1198 {
1199 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1200 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1201 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1202 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1203 {
1204 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1205 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1206 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1207 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1208 {
1209 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1210 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1211 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1212 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1213 {
1214 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1215 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1216 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1217 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1218 {
1219 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1220 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1221 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1222 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1223 {
1224 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1225 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1226 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1227 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1228 {
1229 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1230 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1231 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1232 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1233 {
1234 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1235 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1236 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1237 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1238 {
1239 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1240 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1241 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1242 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1243 {
1244 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1245 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1246 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1247 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1248 {
1249 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1250 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1251 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1252 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1253 {
1254 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1255 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1256 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1257 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1258 {
1259 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1260 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1261 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1262 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1263 {
1264 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1265 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1266 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1267 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1268 {
1269 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1270 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1271 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1272 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1273 {
1274 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1275 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1276 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1277 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1278 {
1279 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1280 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1281 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1282 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1283 {
1284 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1285 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1286 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1287 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1288 {
1289 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1290 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1291 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1292 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1293 {
1294 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1295 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1296 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1297 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1298 {
1299 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1300 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1301 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1302 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1303 {
1304 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1305 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1306 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1307 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1308 {
1309 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1310 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1311 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1312 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1313 {
1314 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1315 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1316 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1317 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1318 {
1319 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1320 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1321 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1322 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1323 {
1324 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1325 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1326 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1327 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1328 {
1329 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1330 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1331 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1332 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1333 {
1334 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1335 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1336 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1337 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1338 {
1339 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1340 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1341 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1342 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1343 {
1344 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1345 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1346 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1347 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1348 {
1349 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1350 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1351 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1352 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1353 {
1354 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1355 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1356 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1357 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1358 {
1359 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1360 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1361 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1362 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1363 {
1364 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1365 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1366 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1367 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1368 {
1369 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1370 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1371 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1372 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1373 {
1374 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1375 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1376 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1377 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1378 {
1379 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1380 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1381 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1382 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1383 {
1384 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1385 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1386 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1387 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1388 {
1389 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1390 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1391 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1392 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1393 {
1394 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1395 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1396 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1397 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1398 {
1399 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1400 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1401 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1402 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1403 {
1404 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1405 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1406 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1407 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1408 {
1409 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1410 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1411 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1412 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1413 {
1414 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1415 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1416 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1417 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1418 {
1419 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1420 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1421 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1422 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1423 {
1424 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1425 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1426 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1427 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1428 {
1429 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1430 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1431 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1432 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1433 {
1434 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1435 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1436 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1437 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1438 {
1439 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1440 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1441 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1442 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1443 {
1444 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1445 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1446 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1447 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1448 {
1449 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1450 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1451 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1452 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1453 {
1454 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1455 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1456 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1457 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1458 {
1459 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1460 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1461 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1462 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1463 {
1464 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1465 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1466 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1467 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1468 {
1469 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1470 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1471 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1472 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1473 {
1474 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1475 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1476 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1477 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1478 {
1479 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1480 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1481 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1482 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1483 {
1484 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1485 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1486 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1487 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1488 {
1489 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1490 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1491 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1492 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1493 {
1494 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1495 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1496 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1497 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1498 {
1499 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1500 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1501 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1502 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1503 {
1504 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1505 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1506 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1507 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1508 {
1509 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1510 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1511 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1512 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1513 {
1514 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1515 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1516 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1517 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1518 {
1519 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1520 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1521 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1522 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1523 {
1524 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1525 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1526 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1527 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1528 {
1529 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1530 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1531 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1532 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1533 {
1534 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1535 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1536 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1537 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1538 {
1539 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1540 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1541 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1542 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1543 {
1544 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1545 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1546 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1547 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1548 {
1549 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1550 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1551 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1552 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1553 {
1554 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1555 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1556 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1557 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1558 };
1559
1560 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1561 {
1562 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1563 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1564 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1565 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1566 {
1567 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1568 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1569 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1570 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1571 {
1572 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1573 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1574 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1575 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1576 {
1577 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1578 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1579 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1580 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1581 {
1582 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1583 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1584 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1585 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1586 {
1587 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1588 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1589 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1590 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1591 {
1592 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1593 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1594 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1595 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1596 {
1597 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1598 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1599 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1600 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1601 {
1602 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1603 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1604 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1605 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1606 {
1607 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1608 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1609 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1610 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1611 {
1612 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1613 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1614 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1615 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1616 {
1617 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1618 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1619 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1620 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1621 {
1622 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1623 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1624 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1625 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1626 {
1627 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1628 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1629 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1630 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1631 {
1632 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1633 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1634 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1635 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1636 {
1637 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1638 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1639 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1640 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1641 {
1642 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1643 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1644 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1645 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1646 {
1647 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1648 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1649 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1650 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1651 {
1652 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1653 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1654 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1655 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1656 {
1657 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1658 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1659 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1660 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1661 {
1662 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1663 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1664 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1665 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1666 {
1667 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1668 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1669 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1670 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1671 {
1672 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1673 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1674 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1675 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1676 {
1677 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1678 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1679 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1680 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1681 {
1682 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1683 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1684 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1685 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1686 {
1687 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1688 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1689 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1690 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1691 {
1692 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1693 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1694 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1695 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1696 {
1697 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1698 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1699 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1700 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1701 {
1702 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1703 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1704 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1705 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1706 {
1707 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1708 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1709 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1710 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1711 {
1712 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1713 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1714 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1715 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1716 {
1717 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1718 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1719 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1720 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1721 {
1722 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1723 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1724 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1725 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1726 {
1727 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1728 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1729 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1730 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1731 {
1732 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1733 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1734 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1735 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1736 {
1737 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1738 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1739 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1740 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1741 {
1742 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1743 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1744 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1745 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1746 {
1747 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1748 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1749 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1750 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1751 {
1752 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1753 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1754 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1755 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1756 {
1757 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1758 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1759 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1760 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1761 {
1762 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1763 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1764 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1765 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1766 {
1767 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1768 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1769 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1770 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1771 {
1772 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1773 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1774 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1775 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1776 {
1777 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1778 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1779 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1780 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1781 {
1782 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1783 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1784 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1785 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1786 {
1787 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1788 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1789 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1790 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1791 {
1792 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1793 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1794 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1795 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1796 {
1797 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1798 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1799 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1800 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1801 {
1802 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1803 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1804 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1805 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1806 {
1807 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1808 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1809 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1810 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1811 {
1812 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1813 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1814 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1815 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1816 {
1817 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1818 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1819 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1820 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1821 {
1822 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1823 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1824 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1825 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1826 {
1827 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1828 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1829 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1830 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1831 {
1832 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1833 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1834 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1835 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1836 {
1837 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1838 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1839 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1840 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1841 {
1842 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1843 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1844 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1845 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1846 {
1847 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1848 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1849 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1850 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1851 {
1852 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1853 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1854 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1855 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1856 {
1857 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1858 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1859 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1860 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1861 {
1862 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1863 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1864 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1865 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1866 {
1867 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1868 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1869 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1870 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1871 {
1872 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1873 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1874 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1875 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1876 {
1877 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1878 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1879 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1880 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1881 {
1882 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1883 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1884 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1885 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1886 {
1887 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1888 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1889 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1890 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1891 {
1892 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1893 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1894 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1895 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1896 {
1897 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1898 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1899 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1900 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1901 {
1902 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1903 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1904 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1905 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1906 {
1907 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1908 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1909 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1910 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1911 {
1912 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1913 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1914 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1915 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1916 {
1917 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1918 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1919 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1920 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1921 {
1922 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1923 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1924 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1925 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1926 {
1927 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1928 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1929 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1930 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1931 {
1932 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1933 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1934 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1935 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1936 {
1937 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1938 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1939 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1940 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1941 {
1942 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1943 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1944 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1945 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1946 {
1947 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1948 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1949 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1950 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1951 {
1952 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1953 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1954 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1955 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1956 {
1957 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1958 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1959 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1960 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1961 {
1962 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1963 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1964 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1965 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1966 {
1967 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1968 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1969 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1970 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1971 {
1972 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1973 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1974 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1975 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1976 {
1977 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1978 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1979 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1980 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1981 {
1982 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1983 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1984 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1985 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1986 {
1987 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1988 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1989 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1990 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1991 {
1992 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1993 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1994 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1995 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1996 {
1997 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1998 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1999 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2000 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2001 {
2002 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2003 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2004 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2005 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2006 {
2007 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2008 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2009 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2010 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2011 {
2012 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2013 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2014 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2015 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2016 {
2017 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2018 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2019 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2020 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2021 {
2022 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2023 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2024 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2025 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2026 {
2027 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2028 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2029 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2030 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2031 {
2032 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2033 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2034 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2035 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2036 {
2037 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2038 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2039 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2040 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2041 {
2042 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2043 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2044 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2045 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2046 {
2047 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2048 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2049 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2050 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2051 {
2052 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2053 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2054 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2055 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2056 {
2057 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2058 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2059 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2060 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2061 {
2062 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2063 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2064 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2065 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2066 {
2067 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2068 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2069 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2070 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2071 {
2072 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2073 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2074 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2075 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2076 {
2077 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2078 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2079 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2080 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2081 {
2082 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2083 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2084 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2085 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2086 {
2087 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2088 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2089 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2090 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2091 {
2092 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2093 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2094 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2095 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2096 {
2097 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2098 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2099 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2100 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2101 {
2102 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2103 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2104 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2105 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2106 {
2107 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2108 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2109 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2110 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2111 {
2112 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2113 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2114 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2115 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2116 {
2117 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2118 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2119 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2120 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2121 {
2122 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2123 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2124 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2125 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2126 {
2127 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2128 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2129 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2130 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2131 {
2132 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2133 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2134 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2135 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2136 {
2137 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2138 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2139 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2140 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2141 {
2142 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2143 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2144 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2145 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2146 {
2147 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2148 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2149 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2150 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2151 {
2152 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2153 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2154 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2155 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2156 {
2157 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2158 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2159 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2160 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2161 {
2162 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2163 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2164 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2165 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2166 {
2167 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2168 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2169 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2170 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2171 {
2172 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2173 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2174 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2175 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2176 {
2177 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2178 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2179 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2180 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2181 };
2182
2183 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2184 {
2185 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2186 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2187 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2188 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2189 {
2190 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2191 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2192 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2193 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2194 {
2195 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2196 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2197 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2198 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2199 {
2200 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2201 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2202 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2203 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2204 {
2205 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2206 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2207 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2208 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2209 {
2210 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2211 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2212 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2213 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2214 {
2215 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2216 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2217 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2218 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2219 {
2220 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2221 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2222 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2223 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2224 {
2225 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2226 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2227 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2228 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2229 {
2230 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2231 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2232 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2233 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2234 {
2235 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2236 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2237 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2238 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2239 {
2240 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2241 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2242 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2243 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2244 {
2245 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2246 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2247 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2248 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2249 {
2250 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2251 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2252 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2253 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2254 {
2255 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2256 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2257 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2258 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2259 {
2260 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2261 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2262 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2263 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2264 {
2265 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2266 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2267 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2268 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2269 {
2270 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2271 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2272 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2273 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2274 {
2275 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2276 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2277 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2278 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2279 {
2280 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2281 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2282 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2283 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2284 {
2285 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2286 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2287 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2288 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2289 {
2290 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2291 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2292 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2293 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2294 {
2295 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2296 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2297 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2298 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2299 {
2300 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2301 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2302 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2303 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2304 {
2305 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2306 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2307 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2308 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2309 {
2310 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2311 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2312 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2313 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2314 {
2315 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2316 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2317 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2318 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2319 {
2320 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2321 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2322 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2323 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2324 {
2325 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2326 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2327 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2328 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2329 {
2330 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2331 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2332 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2333 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2334 {
2335 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2336 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2337 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2338 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2339 {
2340 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2341 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2342 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2343 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2344 {
2345 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2346 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2347 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2348 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2349 {
2350 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2351 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2352 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2353 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2354 {
2355 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2356 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2357 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2358 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2359 {
2360 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2361 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2362 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2363 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2364 {
2365 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2366 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2367 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2368 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2369 {
2370 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2371 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2372 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2373 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2374 {
2375 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2376 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2377 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2378 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2379 {
2380 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2381 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2382 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2383 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2384 {
2385 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2386 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2387 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2388 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2389 {
2390 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2391 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2392 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2393 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2394 {
2395 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2396 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2397 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2398 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2399 {
2400 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2401 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2402 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2403 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2404 {
2405 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2406 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2407 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2408 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2409 {
2410 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2411 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2412 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2413 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2414 {
2415 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2416 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2417 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2418 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2419 {
2420 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2421 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2422 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2423 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2424 {
2425 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2426 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2427 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2428 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2429 {
2430 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2431 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2432 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2433 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2434 {
2435 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2436 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2437 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2438 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2439 {
2440 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2441 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2442 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2443 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2444 {
2445 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2446 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2447 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2448 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2449 {
2450 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2451 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2452 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2453 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2454 {
2455 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2456 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2457 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2458 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2459 {
2460 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2461 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2462 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2463 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2464 {
2465 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2466 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2467 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2468 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2469 {
2470 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2471 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2472 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2473 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2474 {
2475 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2476 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2477 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2478 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2479 {
2480 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2481 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2482 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2483 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2484 {
2485 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2486 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2487 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2488 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2489 {
2490 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2491 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2492 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2493 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2494 {
2495 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2496 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2497 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2498 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2499 {
2500 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2501 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2502 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2503 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2504 {
2505 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2506 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2507 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2508 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2509 {
2510 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2511 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2512 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2513 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2514 {
2515 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2516 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2517 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2518 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2519 {
2520 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2521 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2522 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2523 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2524 {
2525 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2526 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2527 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2528 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2529 {
2530 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2531 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2532 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2533 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2534 {
2535 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2536 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2537 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2538 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2539 {
2540 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2541 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2542 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2543 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2544 {
2545 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2546 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2547 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2548 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2549 {
2550 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2551 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2552 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2553 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2554 {
2555 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2556 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2557 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2558 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2559 {
2560 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2561 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2562 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2563 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2564 {
2565 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2566 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2567 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2568 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2569 {
2570 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2571 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2572 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2573 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2574 {
2575 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2576 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2577 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2578 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2579 {
2580 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2581 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2582 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2583 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2584 {
2585 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2586 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2587 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2588 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2589 {
2590 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2591 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2592 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2593 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2594 {
2595 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2596 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2597 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2598 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2599 {
2600 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2601 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2602 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2603 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2604 {
2605 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2606 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2607 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2608 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2609 {
2610 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2611 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2612 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2613 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2614 {
2615 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2616 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2617 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2618 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2619 {
2620 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2621 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2622 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2623 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2624 {
2625 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2626 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2627 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2628 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2629 {
2630 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2631 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2632 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2633 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2634 {
2635 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2636 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2637 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2638 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2639 {
2640 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2641 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2642 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2643 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2644 {
2645 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2646 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2647 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2648 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2649 {
2650 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2651 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2652 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2653 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2654 {
2655 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2656 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2657 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2658 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2659 {
2660 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2661 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2662 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2663 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2664 {
2665 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2666 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2667 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2668 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2669 {
2670 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2671 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2672 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2673 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2674 {
2675 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2676 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2677 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2678 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2679 {
2680 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2681 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2682 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2683 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2684 {
2685 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2686 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2687 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2688 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2689 {
2690 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2691 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2692 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2693 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2694 {
2695 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2696 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2697 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2698 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2699 {
2700 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2701 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2702 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2703 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2704 {
2705 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2706 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2707 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2708 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2709 {
2710 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2711 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2712 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2713 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2714 {
2715 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2716 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2717 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2718 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2719 {
2720 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2721 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2722 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2723 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2724 {
2725 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2726 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2727 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2728 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2729 {
2730 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2731 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2732 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2733 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2734 {
2735 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2736 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2737 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2738 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2739 {
2740 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2741 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2742 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2743 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2744 {
2745 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2746 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2747 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2748 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2749 {
2750 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2751 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2752 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2753 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2754 {
2755 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2756 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2757 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2758 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2759 {
2760 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2761 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2762 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2763 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2764 {
2765 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2766 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2767 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2768 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2769 {
2770 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2771 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2772 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2773 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2774 {
2775 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2776 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2777 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2778 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2779 {
2780 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2781 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2782 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2783 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2784 {
2785 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2786 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2787 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2788 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2789 {
2790 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2791 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2792 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2793 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2794 {
2795 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2796 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2797 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2798 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2799 {
2800 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2801 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2802 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2803 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2804 };
2805
2806 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2807 {
2808 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2809 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2810 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2811 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2812 {
2813 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2814 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2815 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2816 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2817 {
2818 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2819 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2820 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2821 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2822 {
2823 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2824 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2825 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2826 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2827 {
2828 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2829 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2830 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2831 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2832 {
2833 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2834 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2835 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2836 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2837 {
2838 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2839 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2840 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2841 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2842 {
2843 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2844 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2845 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2846 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2847 {
2848 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2849 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2850 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2851 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2852 {
2853 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2854 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2855 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2856 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2857 {
2858 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2859 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2860 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2861 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2862 {
2863 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2864 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2865 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2866 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2867 {
2868 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2869 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2870 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2871 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2872 {
2873 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2874 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2875 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2876 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2877 {
2878 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2879 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2880 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2881 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2882 {
2883 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2884 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2885 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2886 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2887 {
2888 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2889 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2890 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2891 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2892 {
2893 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2894 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2895 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2896 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2897 {
2898 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2899 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2900 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2901 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2902 {
2903 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2904 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2905 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2906 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2907 {
2908 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2909 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2910 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2911 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2912 {
2913 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2914 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2915 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2916 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2917 {
2918 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2919 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2920 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2921 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2922 {
2923 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2924 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2925 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2926 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2927 {
2928 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2929 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2930 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2931 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2932 {
2933 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2934 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2935 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2936 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2937 {
2938 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2939 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2940 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2941 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2942 {
2943 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2944 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2945 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2946 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2947 {
2948 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2949 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2950 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2951 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2952 {
2953 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2954 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2955 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2956 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2957 {
2958 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2959 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2960 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2961 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2962 {
2963 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2964 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2965 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2966 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2967 {
2968 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2969 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2970 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2971 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2972 {
2973 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2974 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2975 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2976 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2977 {
2978 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2979 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2980 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2981 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2982 {
2983 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2984 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2985 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2986 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2987 {
2988 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2989 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2990 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2991 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2992 {
2993 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2994 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2995 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2996 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2997 {
2998 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2999 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3000 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3001 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3002 {
3003 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3004 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3005 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3006 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3007 {
3008 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3009 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3010 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3011 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3012 {
3013 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3014 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3015 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3016 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3017 {
3018 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3019 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3020 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3021 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3022 {
3023 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3024 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3025 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3026 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3027 {
3028 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3029 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3030 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3031 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3032 {
3033 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3034 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3035 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3036 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3037 {
3038 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3039 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3040 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3041 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3042 {
3043 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3044 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3045 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3046 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3047 {
3048 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3049 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3050 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3051 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3052 {
3053 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3054 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3055 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3056 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3057 {
3058 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3059 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3060 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3061 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3062 {
3063 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3064 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3065 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3066 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3067 {
3068 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3069 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3070 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3071 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3072 {
3073 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3074 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3075 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3076 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3077 {
3078 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3079 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3080 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3081 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3082 {
3083 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3084 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3085 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3086 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3087 {
3088 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3089 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3090 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3091 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3092 {
3093 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3094 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3095 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3096 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3097 {
3098 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3099 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3100 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3101 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3102 {
3103 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3104 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3105 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3106 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3107 {
3108 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3109 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3110 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3111 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3112 {
3113 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3114 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3115 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3116 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3117 {
3118 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3119 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3120 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3121 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3122 {
3123 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3124 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3125 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3126 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3127 {
3128 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3129 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3130 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3131 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3132 {
3133 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3134 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3135 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3136 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3137 {
3138 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3139 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3140 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3141 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3142 {
3143 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3144 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3145 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3146 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3147 {
3148 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3149 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3150 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3151 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3152 {
3153 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3154 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3155 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3156 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3157 {
3158 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3159 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3160 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3161 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3162 {
3163 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3164 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3165 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3166 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3167 {
3168 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3169 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3170 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3171 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3172 {
3173 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3174 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3175 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3176 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3177 {
3178 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3179 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3180 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3181 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3182 {
3183 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3184 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3185 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3186 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3187 {
3188 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3189 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3190 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3191 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3192 {
3193 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3194 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3195 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3196 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3197 {
3198 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3199 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3200 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3201 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3202 {
3203 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3204 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3205 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3206 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3207 {
3208 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3209 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3210 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3211 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3212 {
3213 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3214 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3215 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3216 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3217 {
3218 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3219 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3220 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3221 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3222 {
3223 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3224 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3225 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3226 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3227 {
3228 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3229 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3230 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3231 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3232 {
3233 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3234 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3235 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3236 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3237 {
3238 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3239 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3240 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3241 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3242 {
3243 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3244 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3245 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3246 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3247 {
3248 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3249 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3250 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3251 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3252 {
3253 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3254 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3255 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3256 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3257 {
3258 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3259 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3260 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3261 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3262 {
3263 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3264 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3265 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3266 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3267 {
3268 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3269 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3270 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3271 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3272 {
3273 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3274 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3275 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3276 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3277 {
3278 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3279 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3280 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3281 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3282 {
3283 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3284 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3285 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3286 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3287 {
3288 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3289 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3290 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3291 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3292 {
3293 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3294 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3295 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3296 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3297 {
3298 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3299 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3300 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3301 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3302 {
3303 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3304 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3305 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3306 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3307 {
3308 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3309 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3310 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3311 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3312 {
3313 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3314 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3315 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3316 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3317 {
3318 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3319 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3320 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3321 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3322 {
3323 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3324 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3325 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3326 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3327 {
3328 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3329 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3330 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3331 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3332 {
3333 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3334 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3335 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3336 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3337 {
3338 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3339 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3340 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3341 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3342 {
3343 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3344 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3345 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3346 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3347 {
3348 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3349 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3350 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3351 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3352 {
3353 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3354 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3355 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3356 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3357 {
3358 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3359 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3360 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3361 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3362 {
3363 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3364 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3365 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3366 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3367 {
3368 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3369 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3370 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3371 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3372 {
3373 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3374 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3375 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3376 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3377 {
3378 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3379 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3380 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3381 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3382 {
3383 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3384 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3385 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3386 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3387 {
3388 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3389 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3390 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3391 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3392 {
3393 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3394 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3395 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3396 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3397 {
3398 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3399 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3400 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3401 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3402 {
3403 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3404 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3405 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3406 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3407 {
3408 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3409 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3410 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3411 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3412 {
3413 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3414 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3415 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3416 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3417 {
3418 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3419 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3420 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3421 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3422 {
3423 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3424 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3425 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3426 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3427 };
3428
3429 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3430 {
3431 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3432 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3433 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3434 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3435 {
3436 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3437 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3438 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3439 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3440 {
3441 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3442 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3443 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3444 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3445 {
3446 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3447 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3448 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3449 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3450 {
3451 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3452 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3453 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3454 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3455 {
3456 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3457 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3458 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3459 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3460 {
3461 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3462 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3463 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3464 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3465 {
3466 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3467 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3468 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3469 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3470 {
3471 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3472 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3473 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3474 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3475 {
3476 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3477 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3478 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3479 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3480 {
3481 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3482 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3483 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3484 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3485 {
3486 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3487 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3488 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3489 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3490 {
3491 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3492 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3493 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3494 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3495 {
3496 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3497 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3498 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3499 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3500 {
3501 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3502 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3503 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3504 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3505 {
3506 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3507 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3508 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3509 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3510 {
3511 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3512 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3513 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3514 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3515 {
3516 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3517 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3518 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3519 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3520 {
3521 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3522 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3523 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3524 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3525 {
3526 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3527 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3528 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3529 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3530 {
3531 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3532 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3533 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3534 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3535 {
3536 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3537 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3538 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3539 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3540 {
3541 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3542 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3543 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3544 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3545 {
3546 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3547 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3548 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3549 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3550 {
3551 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3552 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3553 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3554 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3555 {
3556 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3557 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3558 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3559 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3560 {
3561 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3562 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3563 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3564 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3565 {
3566 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3567 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3568 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3569 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3570 {
3571 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3572 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3573 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3574 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3575 {
3576 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3577 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3578 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3579 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3580 {
3581 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3582 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3583 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3584 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3585 {
3586 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3587 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3588 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3589 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3590 {
3591 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3592 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3593 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3594 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3595 {
3596 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3597 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3598 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3599 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3600 {
3601 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3602 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3603 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3604 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3605 {
3606 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3607 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3608 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3609 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3610 {
3611 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3612 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3613 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3614 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3615 {
3616 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3617 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3618 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3619 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3620 {
3621 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3622 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3623 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3624 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3625 {
3626 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3627 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3628 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3629 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3630 {
3631 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3632 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3633 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3634 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3635 {
3636 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3637 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3638 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3639 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3640 {
3641 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3642 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3643 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3644 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3645 {
3646 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3647 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3648 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3649 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3650 {
3651 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3652 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3653 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3654 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3655 {
3656 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3657 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3658 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3659 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3660 {
3661 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3662 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3663 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3664 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3665 {
3666 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3667 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3668 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3669 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3670 {
3671 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3672 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3673 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3674 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3675 {
3676 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3677 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3678 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3679 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3680 {
3681 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3682 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3683 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3684 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3685 {
3686 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3687 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3688 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3689 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3690 {
3691 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3692 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3693 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3694 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3695 {
3696 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3697 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3698 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3699 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3700 {
3701 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3702 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3703 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3704 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3705 {
3706 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3707 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3708 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3709 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3710 {
3711 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3712 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3713 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3714 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3715 {
3716 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3717 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3718 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3719 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3720 {
3721 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3722 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3723 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3724 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3725 {
3726 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3727 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3728 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3729 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3730 {
3731 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3732 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3733 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3734 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3735 {
3736 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3737 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3738 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3739 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3740 {
3741 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3742 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3743 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3744 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3745 {
3746 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3747 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3748 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3749 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3750 {
3751 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3752 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3753 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3754 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3755 {
3756 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3757 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3758 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3759 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3760 {
3761 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3762 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3763 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3764 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3765 {
3766 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3767 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3768 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3769 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3770 {
3771 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3772 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3773 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3774 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3775 {
3776 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3777 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3778 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3779 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3780 {
3781 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3782 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3783 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3784 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3785 {
3786 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3787 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3788 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3789 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3790 {
3791 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3792 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3793 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3794 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3795 {
3796 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3797 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3798 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3799 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3800 {
3801 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3802 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3803 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3804 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3805 {
3806 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3807 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3808 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3809 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3810 {
3811 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3812 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3813 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3814 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3815 {
3816 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3817 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3818 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3819 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3820 {
3821 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3822 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3823 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3824 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3825 {
3826 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3827 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3828 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3829 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3830 {
3831 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3832 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3833 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3834 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3835 {
3836 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3837 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3838 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3839 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3840 {
3841 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3842 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3843 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3844 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3845 {
3846 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3847 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3848 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3849 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3850 {
3851 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3852 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3853 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3854 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3855 {
3856 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3857 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3858 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3859 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3860 {
3861 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3862 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3863 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3864 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3865 {
3866 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3867 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3868 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3869 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3870 {
3871 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3872 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3873 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3874 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3875 {
3876 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3877 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3878 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3879 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3880 {
3881 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3882 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3883 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3884 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3885 {
3886 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3887 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3888 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3889 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3890 {
3891 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3892 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3893 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3894 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3895 {
3896 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3897 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3898 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3899 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3900 {
3901 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3902 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3903 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3904 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3905 {
3906 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3907 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3908 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3909 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3910 {
3911 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3912 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3913 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3914 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3915 {
3916 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3917 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3918 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3919 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3920 {
3921 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3922 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3923 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3924 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3925 {
3926 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3927 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3928 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3929 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3930 {
3931 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3932 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3933 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3934 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3935 {
3936 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3937 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3938 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3939 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3940 {
3941 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3942 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3943 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3944 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3945 {
3946 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3947 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3948 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3949 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3950 {
3951 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3952 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3953 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3954 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3955 {
3956 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3957 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3958 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3959 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3960 {
3961 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3962 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3963 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3964 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3965 {
3966 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3967 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3968 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3969 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3970 {
3971 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3972 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3973 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3974 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3975 {
3976 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3977 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3978 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3979 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3980 {
3981 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3982 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3983 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3984 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3985 {
3986 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3987 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3988 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3989 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3990 {
3991 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3992 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3993 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3994 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3995 {
3996 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3997 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3998 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3999 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4000 {
4001 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4002 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4003 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4004 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4005 {
4006 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4007 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4008 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4009 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4010 {
4011 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4012 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4013 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4014 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4015 {
4016 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4017 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4018 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4019 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4020 {
4021 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4022 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4023 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4024 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4025 {
4026 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4027 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4028 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4029 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4030 {
4031 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4032 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4033 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4034 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4035 {
4036 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4037 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4038 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4039 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4040 {
4041 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4042 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4043 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4044 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4045 {
4046 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4047 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4048 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4049 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4050 };
4051
4052 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4053 {
4054 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4055 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4056 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4057 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4058 {
4059 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4060 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4061 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4062 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4063 {
4064 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4065 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4066 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4067 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4068 {
4069 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4070 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4071 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4072 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4073 {
4074 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4075 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4076 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4077 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4078 {
4079 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4080 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4081 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4082 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4083 {
4084 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4085 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4086 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4087 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4088 {
4089 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4090 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4091 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4092 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4093 {
4094 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4095 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4096 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4097 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4098 {
4099 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4100 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4101 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4102 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4103 {
4104 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4105 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4106 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4107 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4108 {
4109 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4110 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4111 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4112 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4113 {
4114 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4115 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4116 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4117 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4118 {
4119 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4120 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4121 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4122 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4123 {
4124 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4125 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4126 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4127 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4128 {
4129 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4130 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4131 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4132 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4133 {
4134 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4135 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4136 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4137 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4138 {
4139 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4140 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4141 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4142 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4143 {
4144 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4145 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4146 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4147 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4148 {
4149 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4150 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4151 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4152 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4153 {
4154 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4155 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4156 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4157 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4158 {
4159 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4160 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4161 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4162 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4163 {
4164 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4165 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4166 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4167 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4168 {
4169 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4170 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4171 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4172 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4173 {
4174 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4175 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4176 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4177 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4178 {
4179 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4180 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4181 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4182 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4183 {
4184 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4185 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4186 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4187 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4188 {
4189 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4190 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4191 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4192 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4193 {
4194 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4195 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4196 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4197 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4198 {
4199 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4200 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4201 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4202 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4203 {
4204 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4205 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4206 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4207 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4208 {
4209 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4210 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4211 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4212 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4213 {
4214 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4215 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4216 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4217 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4218 {
4219 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4220 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4221 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4222 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4223 {
4224 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4225 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4226 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4227 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4228 {
4229 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4230 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4231 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4232 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4233 {
4234 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4235 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4236 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4237 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4238 {
4239 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4240 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4241 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4242 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4243 {
4244 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4245 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4246 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4247 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4248 {
4249 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4250 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4251 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4252 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4253 {
4254 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4255 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4256 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4257 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4258 {
4259 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4260 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4261 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4262 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4263 {
4264 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4265 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4266 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4267 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4268 {
4269 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4270 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4271 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4272 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4273 {
4274 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4275 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4276 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4277 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4278 {
4279 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4280 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4281 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4282 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4283 {
4284 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4285 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4286 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4287 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4288 {
4289 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4290 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4291 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4292 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4293 {
4294 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4295 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4296 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4297 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4298 {
4299 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4300 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4301 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4302 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4303 {
4304 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4305 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4306 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4307 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4308 {
4309 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4310 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4311 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4312 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4313 {
4314 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4315 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4316 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4317 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4318 {
4319 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4320 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4321 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4322 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4323 {
4324 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4325 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4326 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4327 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4328 {
4329 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4330 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4331 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4332 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4333 {
4334 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4335 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4336 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4337 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4338 {
4339 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4340 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4341 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4342 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4343 {
4344 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4345 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4346 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4347 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4348 {
4349 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4350 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4351 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4352 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4353 {
4354 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4355 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4356 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4357 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4358 {
4359 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4360 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4361 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4362 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4363 {
4364 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4365 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4366 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4367 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4368 {
4369 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4370 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4371 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4372 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4373 {
4374 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4375 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4376 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4377 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4378 {
4379 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4380 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4381 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4382 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4383 {
4384 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4385 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4386 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4387 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4388 {
4389 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4390 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4391 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4392 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4393 {
4394 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4395 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4396 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4397 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4398 {
4399 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4400 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4401 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4402 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4403 {
4404 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4405 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4406 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4407 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4408 {
4409 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4410 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4411 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4412 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4413 {
4414 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4415 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4416 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4417 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4418 {
4419 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4420 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4421 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4422 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4423 {
4424 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4425 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4426 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4427 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4428 {
4429 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4430 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4431 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4432 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4433 {
4434 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4435 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4436 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4437 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4438 {
4439 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4440 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4441 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4442 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4443 {
4444 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4445 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4446 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4447 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4448 {
4449 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4450 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4451 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4452 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4453 {
4454 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4455 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4456 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4457 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4458 {
4459 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4460 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4461 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4462 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4463 {
4464 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4465 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4466 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4467 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4468 {
4469 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4470 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4471 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4472 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4473 {
4474 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4475 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4476 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4477 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4478 {
4479 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4480 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4481 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4482 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4483 {
4484 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4485 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4486 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4487 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4488 {
4489 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4490 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4491 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4492 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4493 {
4494 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4495 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4496 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4497 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4498 {
4499 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4500 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4501 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4502 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4503 {
4504 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4505 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4506 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4507 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4508 {
4509 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4510 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4511 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4512 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4513 {
4514 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4515 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4516 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4517 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4518 {
4519 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4520 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4521 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4522 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4523 {
4524 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4525 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4526 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4527 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4528 {
4529 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4530 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4531 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4532 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4533 {
4534 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4535 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4536 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4537 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4538 {
4539 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4540 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4541 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4542 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4543 {
4544 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4545 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4546 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4547 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4548 {
4549 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4550 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4551 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4552 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4553 {
4554 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4555 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4556 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4557 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4558 {
4559 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4560 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4561 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4562 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4563 {
4564 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4565 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4566 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4567 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4568 {
4569 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4570 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4571 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4572 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4573 {
4574 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4575 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4576 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4577 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4578 {
4579 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4580 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4581 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4582 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4583 {
4584 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4585 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4586 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4587 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4588 {
4589 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4590 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4591 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4592 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4593 {
4594 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4595 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4596 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4597 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4598 {
4599 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4600 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4601 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4602 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4603 {
4604 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4605 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4606 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4607 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4608 {
4609 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4610 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4611 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4612 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4613 {
4614 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4615 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4616 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4617 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4618 {
4619 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4620 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4621 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4622 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4623 {
4624 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4625 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4626 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4627 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4628 {
4629 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4630 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4631 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4632 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4633 {
4634 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4635 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4636 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4637 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4638 {
4639 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4640 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4641 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4642 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4643 {
4644 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4645 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4646 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4647 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4648 {
4649 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4650 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4651 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4652 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4653 {
4654 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4655 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4656 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4657 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4658 {
4659 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4660 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4661 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4662 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4663 {
4664 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4665 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4666 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4667 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4668 {
4669 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4670 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4671 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4672 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4673 };
4674
4675 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4676 {
4677 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4678 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4679 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4680 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4681 {
4682 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4683 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4684 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4685 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4686 {
4687 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4688 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4689 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4690 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4691 {
4692 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4693 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4694 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4695 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4696 {
4697 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4698 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4699 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4700 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4701 {
4702 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4703 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4704 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4705 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4706 {
4707 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4708 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4709 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4710 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4711 {
4712 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4713 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4714 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4715 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4716 {
4717 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4718 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4719 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4720 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4721 {
4722 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4723 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4724 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4725 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4726 {
4727 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4728 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4729 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4730 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4731 {
4732 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4733 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4734 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4735 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4736 {
4737 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4738 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4739 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4740 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4741 {
4742 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4743 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4744 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4745 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4746 {
4747 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4748 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4749 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4750 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4751 {
4752 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4753 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4754 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4755 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4756 {
4757 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4758 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4759 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4760 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4761 {
4762 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4763 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4764 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4765 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4766 {
4767 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4768 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4769 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4770 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4771 {
4772 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4773 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4774 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4775 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4776 {
4777 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4778 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4779 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4780 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4781 {
4782 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4783 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4784 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4785 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4786 {
4787 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4788 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4789 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4790 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4791 {
4792 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4793 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4794 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4795 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4796 {
4797 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4798 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4799 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4800 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4801 {
4802 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4803 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4804 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4805 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4806 {
4807 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4808 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4809 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4810 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4811 {
4812 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4813 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4814 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4815 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4816 {
4817 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4818 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4819 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4820 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4821 {
4822 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4823 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4824 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4825 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4826 {
4827 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4828 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4829 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4830 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4831 {
4832 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4833 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4834 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4835 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4836 {
4837 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4838 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4839 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4840 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4841 {
4842 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4843 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4844 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4845 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4846 {
4847 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4848 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4849 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4850 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4851 {
4852 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4853 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4854 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4855 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4856 {
4857 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4858 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4859 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4860 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4861 {
4862 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4863 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4864 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4865 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4866 {
4867 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4868 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4869 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4870 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4871 {
4872 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4873 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4874 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4875 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4876 {
4877 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4878 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4879 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4880 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4881 {
4882 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4883 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4884 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4885 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4886 {
4887 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4888 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4889 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4890 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4891 {
4892 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4893 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4894 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4895 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4896 {
4897 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4898 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4899 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4900 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4901 {
4902 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4903 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4904 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4905 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4906 {
4907 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4908 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4909 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4910 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4911 {
4912 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4913 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4914 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4915 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4916 {
4917 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4918 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4919 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4920 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4921 {
4922 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4923 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4924 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4925 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4926 {
4927 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4928 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4929 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4930 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4931 {
4932 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4933 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4934 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4935 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4936 {
4937 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4938 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4939 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4940 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4941 {
4942 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4943 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4944 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4945 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4946 {
4947 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4948 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4949 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4950 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4951 {
4952 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4953 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4954 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4955 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4956 {
4957 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4958 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4959 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4960 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4961 {
4962 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4963 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4964 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4965 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4966 {
4967 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4968 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4969 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4970 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4971 {
4972 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4973 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4974 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4975 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4976 {
4977 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4978 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4979 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4980 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4981 {
4982 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4983 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4984 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4985 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4986 {
4987 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4988 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4989 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4990 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4991 {
4992 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4993 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4994 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4995 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4996 {
4997 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4998 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4999 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5000 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5001 {
5002 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5003 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5004 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5005 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5006 {
5007 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5008 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5009 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5010 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5011 {
5012 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5013 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5014 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5015 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5016 {
5017 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5018 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5019 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5020 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5021 {
5022 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5023 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5024 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5025 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5026 {
5027 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5028 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5029 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5030 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5031 {
5032 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5033 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5034 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5035 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5036 {
5037 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5038 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5039 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5040 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5041 {
5042 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5043 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5044 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5045 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5046 {
5047 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5048 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5049 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5050 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5051 {
5052 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5053 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5054 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5055 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5056 {
5057 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5058 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5059 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5060 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5061 {
5062 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5063 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5064 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5065 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5066 {
5067 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5068 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5069 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5070 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5071 {
5072 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5073 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5074 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5075 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5076 {
5077 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5078 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5079 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5080 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5081 {
5082 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5083 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5084 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5085 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5086 {
5087 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5088 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5089 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5090 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5091 {
5092 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5093 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5094 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5095 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5096 {
5097 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5098 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5099 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5100 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5101 {
5102 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5103 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5104 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5105 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5106 {
5107 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5108 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5109 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5110 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5111 {
5112 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5113 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5114 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5115 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5116 {
5117 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5118 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5119 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5120 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5121 {
5122 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5123 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5124 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5125 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5126 {
5127 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5128 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5129 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5130 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5131 {
5132 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5133 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5134 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5135 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5136 {
5137 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5138 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5139 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5140 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5141 {
5142 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5143 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5144 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5145 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5146 {
5147 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5148 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5149 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5150 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5151 {
5152 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5153 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5154 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5155 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5156 {
5157 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5158 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5159 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5160 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5161 {
5162 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5163 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5164 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5165 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5166 {
5167 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5168 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5169 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5170 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5171 {
5172 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5173 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5174 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5175 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5176 {
5177 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5178 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5179 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5180 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5181 {
5182 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5183 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5184 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5185 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5186 {
5187 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5188 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5189 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5190 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5191 {
5192 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5193 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5194 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5195 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5196 {
5197 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5198 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5199 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5200 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5201 {
5202 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5203 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5204 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5205 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5206 {
5207 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5208 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5209 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5210 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5211 {
5212 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5213 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5214 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5215 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5216 {
5217 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5218 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5219 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5220 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5221 {
5222 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5223 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5224 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5225 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5226 {
5227 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5228 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5229 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5230 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5231 {
5232 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5233 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5234 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5235 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5236 {
5237 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5238 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5239 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5240 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5241 {
5242 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5243 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5244 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5245 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5246 {
5247 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5248 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5249 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5250 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5251 {
5252 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5253 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5254 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5255 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5256 {
5257 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5258 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5259 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5260 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5261 {
5262 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5263 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5264 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5265 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5266 {
5267 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5268 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5269 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5270 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5271 {
5272 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5273 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5274 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5275 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5276 {
5277 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5278 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5279 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5280 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5281 {
5282 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5283 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5284 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5285 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5286 {
5287 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5288 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5289 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5290 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5291 {
5292 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5293 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5294 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5295 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5296 };
5297
5298 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5299 {
5300 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5301 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5302 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5303 0x0215,
5304 0x0216,
5305 },
5306 {
5307 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5308 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5309 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5310 0x0214,
5311 0x0215,
5312 },
5313 {
5314 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5315 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5316 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5317 0x0213,
5318 0x0214,
5319 },
5320 {
5321 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5322 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5323 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5324 0x0212,
5325 0x0213,
5326 },
5327 {
5328 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5329 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5330 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5331 0x0211,
5332 0x0212,
5333 },
5334 {
5335 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5336 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5337 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5338 0x020f,
5339 0x0211,
5340 },
5341 {
5342 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5343 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5344 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5345 0x020e,
5346 0x020f,
5347 },
5348 {
5349 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5350 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5351 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5352 0x020d,
5353 0x020e,
5354 },
5355 {
5356 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5357 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5358 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5359 0x020c,
5360 0x020d,
5361 },
5362 {
5363 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5364 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5365 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5366 0x020b,
5367 0x020c,
5368 },
5369 {
5370 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5371 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5372 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5373 0x020a,
5374 0x020b,
5375 },
5376 {
5377 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5378 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5379 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5380 0x0209,
5381 0x020a,
5382 },
5383 {
5384 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5385 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5386 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5387 0x0208,
5388 0x0209,
5389 },
5390 {
5391 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5392 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5393 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5394 0x0207,
5395 0x0208,
5396 },
5397 {
5398 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5399 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5400 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5401 0x0206,
5402 0x0207,
5403 },
5404 {
5405 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5406 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5407 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5408 0x0205,
5409 0x0206,
5410 },
5411 {
5412 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5413 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5414 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5415 0x0204,
5416 0x0205,
5417 },
5418 {
5419 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5420 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5421 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5422 0x0203,
5423 0x0204,
5424 },
5425 {
5426 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5427 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5428 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5429 0x0202,
5430 0x0203,
5431 },
5432 {
5433 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5434 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5435 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5436 0x0201,
5437 0x0202,
5438 },
5439 {
5440 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5441 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5442 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5443 0x0200,
5444 0x0201,
5445 },
5446 {
5447 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5448 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5449 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5450 0x01ff,
5451 0x0200,
5452 },
5453 {
5454 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5455 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5456 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5457 0x01fe,
5458 0x01ff,
5459 },
5460 {
5461 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5462 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5463 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5464 0x01fc,
5465 0x01fd,
5466 },
5467 {
5468 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5469 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5470 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5471 0x01fb,
5472 0x01fc,
5473 },
5474 {
5475 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5476 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5477 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5478 0x01fa,
5479 0x01fb,
5480 },
5481 {
5482 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5483 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5484 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5485 0x01f9,
5486 0x01fa,
5487 },
5488 {
5489 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5490 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5491 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5492 0x01f8,
5493 0x01f9,
5494 },
5495 {
5496 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5497 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5498 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5499 0x01f7,
5500 0x01f8,
5501 },
5502 {
5503 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5504 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5505 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5506 0x01f6,
5507 0x01f7,
5508 },
5509 {
5510 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5511 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5512 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5513 0x01f5,
5514 0x01f6,
5515 },
5516 {
5517 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5518 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5519 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5520 0x01f4,
5521 0x01f5,
5522 },
5523 {
5524 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5525 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5526 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5527 0x01f3,
5528 0x01f4,
5529 },
5530 {
5531 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5532 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5533 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5534 0x01f2,
5535 0x01f3,
5536 },
5537 {
5538 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5539 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5540 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5541 0x01f1,
5542 0x01f2,
5543 },
5544 {
5545 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5546 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5547 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5548 0x01f0,
5549 0x01f1,
5550 },
5551 {
5552 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5553 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5554 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5555 0x01f0,
5556 0x01f0,
5557 },
5558 {
5559 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5560 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5561 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5562 0x01ef,
5563 0x01f0,
5564 },
5565 {
5566 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5567 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5568 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5569 0x01ee,
5570 0x01ef,
5571 },
5572 {
5573 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5574 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5575 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5576 0x01ed,
5577 0x01ee,
5578 },
5579 {
5580 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5581 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5582 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5583 0x01ec,
5584 0x01ed,
5585 },
5586 {
5587 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5588 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5589 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5590 0x01eb,
5591 0x01ec,
5592 },
5593 {
5594 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5595 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5596 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5597 0x01ea,
5598 0x01eb,
5599 },
5600 {
5601 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5602 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5603 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5604 0x01e9,
5605 0x01ea,
5606 },
5607 {
5608 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5609 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5610 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5611 0x01e8,
5612 0x01e9,
5613 },
5614 {
5615 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5616 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5617 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5618 0x01e7,
5619 0x01e8,
5620 },
5621 {
5622 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5623 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5624 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5625 0x01e6,
5626 0x01e7,
5627 },
5628 {
5629 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5630 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5631 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5632 0x01e5,
5633 0x01e6,
5634 },
5635 {
5636 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5637 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5638 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5639 0x01e5,
5640 0x01e5,
5641 },
5642 {
5643 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5644 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5645 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5646 0x01e4,
5647 0x01e5,
5648 },
5649 {
5650 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5651 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5652 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5653 0x01e3,
5654 0x01e4,
5655 },
5656 {
5657 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5658 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5659 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5660 0x01e2,
5661 0x01e3,
5662 },
5663 {
5664 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5665 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5666 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5667 0x01e1,
5668 0x01e2,
5669 },
5670 {
5671 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5672 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5673 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5674 0x01e0,
5675 0x01e1,
5676 },
5677 {
5678 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5679 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5680 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5681 0x01df,
5682 0x01e0,
5683 },
5684 {
5685 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5686 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5687 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5688 0x01de,
5689 0x01df,
5690 },
5691 {
5692 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5693 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5694 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5695 0x01dd,
5696 0x01de,
5697 },
5698 {
5699 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5700 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5701 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5702 0x01dd,
5703 0x01dd,
5704 },
5705 {
5706 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5707 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5708 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5709 0x01dc,
5710 0x01dd,
5711 },
5712 {
5713 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5714 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5715 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5716 0x01db,
5717 0x01dc,
5718 },
5719 {
5720 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5721 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5722 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5723 0x01da,
5724 0x01db,
5725 },
5726 {
5727 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5728 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5729 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5730 0x01d9,
5731 0x01da,
5732 },
5733 {
5734 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5735 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5736 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5737 0x01d8,
5738 0x01d9,
5739 },
5740 {
5741 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5742 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5743 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5744 0x01d7,
5745 0x01d8,
5746 },
5747 {
5748 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5749 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5750 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5751 0x01d7,
5752 0x01d7,
5753 },
5754 {
5755 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5756 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5757 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5758 0x01d6,
5759 0x01d7,
5760 },
5761 {
5762 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5763 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5764 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5765 0x01d5,
5766 0x01d6,
5767 },
5768 {
5769 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5770 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5771 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5772 0x01d4,
5773 0x01d5,
5774 },
5775 {
5776 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5777 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5778 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5779 0x01d3,
5780 0x01d4,
5781 },
5782 {
5783 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5784 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5785 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5786 0x01d2,
5787 0x01d3,
5788 },
5789 {
5790 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5791 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5792 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5793 0x01d2,
5794 0x01d2,
5795 },
5796 {
5797 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5798 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5799 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5800 0x01d1,
5801 0x01d2,
5802 },
5803 {
5804 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5805 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5806 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5807 0x01d0,
5808 0x01d1,
5809 },
5810 {
5811 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5812 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5813 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5814 0x01cf,
5815 0x01d0,
5816 },
5817 {
5818 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5819 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5820 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5821 0x01ce,
5822 0x01cf,
5823 },
5824 {
5825 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5826 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5827 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5828 0x01ce,
5829 0x01ce,
5830 },
5831 {
5832 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5833 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5834 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5835 0x01cd,
5836 0x01ce,
5837 },
5838 {
5839 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5840 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5841 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5842 0x01cc,
5843 0x01cd,
5844 },
5845 {
5846 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5847 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5848 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5849 0x01cb,
5850 0x01cc,
5851 },
5852 {
5853 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5854 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5855 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5856 0x01ca,
5857 0x01cb,
5858 },
5859 {
5860 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5861 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5862 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5863 0x01ca,
5864 0x01cb,
5865 },
5866 {
5867 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5868 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5869 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5870 0x01c9,
5871 0x01ca,
5872 },
5873 {
5874 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5875 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5876 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5877 0x01c9,
5878 0x01ca,
5879 },
5880 {
5881 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5882 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5883 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5884 0x01c9,
5885 0x01c9,
5886 },
5887 {
5888 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5889 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5890 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5891 0x01c8,
5892 0x01c9,
5893 },
5894 {
5895 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5896 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5897 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5898 0x01c8,
5899 0x01c9,
5900 },
5901 {
5902 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5903 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5904 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5905 0x01c8,
5906 0x01c8,
5907 },
5908 {
5909 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5910 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5911 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5912 0x01c7,
5913 0x01c8,
5914 },
5915 {
5916 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5917 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5918 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5919 0x01c7,
5920 0x01c8,
5921 },
5922 {
5923 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5924 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5925 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5926 0x01c6,
5927 0x01c7,
5928 },
5929 {
5930 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5931 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5932 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5933 0x01c6,
5934 0x01c7,
5935 },
5936 {
5937 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5938 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5939 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5940 0x01c6,
5941 0x01c6,
5942 },
5943 {
5944 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5945 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5946 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5947 0x01c5,
5948 0x01c6,
5949 },
5950 {
5951 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5952 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5953 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5954 0x01c5,
5955 0x01c6,
5956 },
5957 {
5958 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5959 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5960 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5961 0x01c4,
5962 0x01c5,
5963 },
5964 {
5965 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5966 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5967 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5968 0x01c4,
5969 0x01c5,
5970 },
5971 {
5972 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5973 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5974 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5975 0x01c4,
5976 0x01c4,
5977 },
5978 {
5979 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5980 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5981 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5982 0x01c3,
5983 0x01c4,
5984 },
5985 {
5986 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5987 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5988 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5989 0x01c3,
5990 0x01c4,
5991 },
5992 {
5993 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5994 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5995 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5996 0x01c2,
5997 0x01c3,
5998 },
5999 {
6000 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6001 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6002 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6003 0x01c2,
6004 0x01c3,
6005 },
6006 {
6007 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6008 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6009 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6010 0x01c2,
6011 0x01c2,
6012 },
6013 {
6014 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6015 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6016 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6017 0x01c1,
6018 0x01c2,
6019 },
6020 {
6021 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6022 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6023 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6024 0x01c0,
6025 0x01c1,
6026 },
6027 {
6028 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6029 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6030 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6031 0x01bf,
6032 0x01c0,
6033 },
6034 {
6035 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6036 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6037 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6038 0x01bf,
6039 0x01bf,
6040 },
6041 {
6042 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6043 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6044 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6045 0x01be,
6046 0x01bf,
6047 },
6048 {
6049 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6050 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6051 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6052 0x01bd,
6053 0x01be,
6054 },
6055 {
6056 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6057 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6058 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6059 0x01bc,
6060 0x01bd,
6061 },
6062 {
6063 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6064 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6065 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6066 0x043f,
6067 0x0443,
6068 },
6069 {
6070 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6071 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6072 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6073 0x043d,
6074 0x0441,
6075 },
6076 {
6077 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6078 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6079 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6080 0x043a,
6081 0x043f,
6082 },
6083 {
6084 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6085 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6086 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6087 0x0438,
6088 0x043d,
6089 },
6090 {
6091 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6092 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6093 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6094 0x0436,
6095 0x043a,
6096 },
6097 {
6098 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6099 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6100 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6101 0x0434,
6102 0x0438,
6103 },
6104 {
6105 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6106 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6107 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6108 0x0431,
6109 0x0436,
6110 },
6111 {
6112 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6113 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6114 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6115 0x042f,
6116 0x0434,
6117 },
6118 {
6119 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6120 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6121 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6122 0x042d,
6123 0x0431,
6124 },
6125 {
6126 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6127 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6128 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6129 0x042b,
6130 0x042f,
6131 },
6132 {
6133 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6134 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6135 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6136 0x0429,
6137 0x042d,
6138 },
6139 {
6140 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6141 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6142 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6143 0x0427,
6144 0x042b,
6145 },
6146 {
6147 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6148 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6149 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6150 0x0424,
6151 0x0429,
6152 },
6153 {
6154 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6155 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6156 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6157 0x041f,
6158 0x0424}
6159 };
6160
6161 static const struct chan_info_nphy_radio2057_rev5
6162 chan_info_nphyrev8_2057_rev5[] = {
6163 {
6164 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6165 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6166 0x043a, 0x043f, 0x0443},
6167 {
6168 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6169 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6170 0x0438, 0x043d, 0x0441},
6171 {
6172 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6173 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6174 0x0436, 0x043a, 0x043f},
6175 {
6176 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6177 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6178 0x0434, 0x0438, 0x043d},
6179 {
6180 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6181 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6182 0x0431, 0x0436, 0x043a},
6183 {
6184 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6185 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6186 0x042f, 0x0434, 0x0438},
6187 {
6188 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6189 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6190 0x042d, 0x0431, 0x0436},
6191 {
6192 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6193 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6194 0x042b, 0x042f, 0x0434},
6195 {
6196 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6197 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6198 0x0429, 0x042d, 0x0431},
6199 {
6200 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6201 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6202 0x0427, 0x042b, 0x042f},
6203 {
6204 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6205 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6206 0x0424, 0x0429, 0x042d},
6207 {
6208 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6209 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6210 0x0422, 0x0427, 0x042b},
6211 {
6212 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6213 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6214 0x0420, 0x0424, 0x0429},
6215 {
6216 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6217 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6218 0x041b, 0x041f, 0x0424}
6219 };
6220
6221 static const struct chan_info_nphy_radio2057_rev5
6222 chan_info_nphyrev9_2057_rev5v1[] = {
6223 {
6224 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6225 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6226 0x043a, 0x043f, 0x0443},
6227 {
6228 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6229 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6230 0x0438, 0x043d, 0x0441},
6231 {
6232 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6233 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6234 0x0436, 0x043a, 0x043f},
6235 {
6236 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6237 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6238 0x0434, 0x0438, 0x043d},
6239 {
6240 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6241 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6242 0x0431, 0x0436, 0x043a},
6243 {
6244 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6245 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6246 0x042f, 0x0434, 0x0438},
6247 {
6248 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6249 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6250 0x042d, 0x0431, 0x0436},
6251 {
6252 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6253 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6254 0x042b, 0x042f, 0x0434},
6255 {
6256 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6257 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6258 0x0429, 0x042d, 0x0431},
6259 {
6260 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6261 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6262 0x0427, 0x042b, 0x042f},
6263 {
6264 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6265 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6266 0x0424, 0x0429, 0x042d},
6267 {
6268 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6269 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6270 0x0422, 0x0427, 0x042b},
6271 {
6272 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6273 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6274 0x0420, 0x0424, 0x0429},
6275 {
6276 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6277 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6278 0x041b, 0x041f, 0x0424}
6279 };
6280
6281 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6282 {
6283 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6284 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6285 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6286 0x0215,
6287 0x0216},
6288 {
6289 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6290 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6291 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6292 0x0214,
6293 0x0215},
6294 {
6295 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6296 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6297 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6298 0x0213,
6299 0x0214},
6300 {
6301 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6302 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6303 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6304 0x0212,
6305 0x0213},
6306 {
6307 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6308 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6309 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6310 0x0211,
6311 0x0212},
6312 {
6313 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6314 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6315 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6316 0x020f,
6317 0x0211},
6318 {
6319 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6320 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6321 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6322 0x020e,
6323 0x020f},
6324 {
6325 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6326 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6327 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6328 0x020d,
6329 0x020e},
6330 {
6331 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6332 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6333 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6334 0x020c,
6335 0x020d},
6336 {
6337 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6338 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6339 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6340 0x020b,
6341 0x020c},
6342 {
6343 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6344 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6345 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6346 0x020a,
6347 0x020b},
6348 {
6349 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6350 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6351 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6352 0x0209,
6353 0x020a},
6354 {
6355 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6356 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6357 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6358 0x0208,
6359 0x0209},
6360 {
6361 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6362 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6363 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6364 0x0207,
6365 0x0208},
6366 {
6367 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6368 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6369 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6370 0x0206,
6371 0x0207},
6372 {
6373 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6374 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6375 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6376 0x0205,
6377 0x0206},
6378 {
6379 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6380 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6381 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6382 0x0204,
6383 0x0205},
6384 {
6385 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6386 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6387 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6388 0x0203,
6389 0x0204},
6390 {
6391 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6392 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6393 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6394 0x0202,
6395 0x0203},
6396 {
6397 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6398 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6399 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6400 0x0201,
6401 0x0202},
6402 {
6403 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6404 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6405 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6406 0x0200,
6407 0x0201},
6408 {
6409 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6410 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6411 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6412 0x01ff,
6413 0x0200},
6414 {
6415 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6416 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6417 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6418 0x01fe,
6419 0x01ff},
6420 {
6421 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6422 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6423 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6424 0x01fc,
6425 0x01fd},
6426 {
6427 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6428 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6429 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6430 0x01fb,
6431 0x01fc},
6432 {
6433 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6434 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6435 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6436 0x01fa,
6437 0x01fb},
6438 {
6439 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6440 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6441 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6442 0x01f9,
6443 0x01fa},
6444 {
6445 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6446 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6447 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6448 0x01f8,
6449 0x01f9},
6450 {
6451 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6452 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6453 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6454 0x01f7,
6455 0x01f8},
6456 {
6457 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6458 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6459 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6460 0x01f6,
6461 0x01f7},
6462 {
6463 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6464 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6465 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6466 0x01f5,
6467 0x01f6},
6468 {
6469 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6470 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6471 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6472 0x01f4,
6473 0x01f5},
6474 {
6475 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6476 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6477 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6478 0x01f3,
6479 0x01f4},
6480 {
6481 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6482 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6483 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6484 0x01f2,
6485 0x01f3},
6486 {
6487 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6488 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6489 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6490 0x01f1,
6491 0x01f2},
6492 {
6493 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6494 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6495 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6496 0x01f0,
6497 0x01f1},
6498 {
6499 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6500 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6501 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6502 0x01f0,
6503 0x01f0},
6504 {
6505 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6506 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6507 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6508 0x01ef,
6509 0x01f0},
6510 {
6511 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6512 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6513 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6514 0x01ee,
6515 0x01ef},
6516 {
6517 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6518 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6519 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6520 0x01ed,
6521 0x01ee},
6522 {
6523 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6524 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6525 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6526 0x01ec,
6527 0x01ed},
6528 {
6529 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6530 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6531 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6532 0x01eb,
6533 0x01ec},
6534 {
6535 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6536 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6537 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6538 0x01ea,
6539 0x01eb},
6540 {
6541 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6542 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6543 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6544 0x01e9,
6545 0x01ea},
6546 {
6547 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6548 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6549 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6550 0x01e8,
6551 0x01e9},
6552 {
6553 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6554 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6555 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6556 0x01e7,
6557 0x01e8},
6558 {
6559 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6560 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6561 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6562 0x01e6,
6563 0x01e7},
6564 {
6565 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6566 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6567 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6568 0x01e5,
6569 0x01e6},
6570 {
6571 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6572 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6573 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6574 0x01e5,
6575 0x01e5},
6576 {
6577 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6578 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6579 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6580 0x01e4,
6581 0x01e5},
6582 {
6583 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6584 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6585 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6586 0x01e3,
6587 0x01e4},
6588 {
6589 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6590 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6591 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6592 0x01e2,
6593 0x01e3},
6594 {
6595 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6596 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6597 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6598 0x01e1,
6599 0x01e2},
6600 {
6601 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6602 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6603 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6604 0x01e0,
6605 0x01e1},
6606 {
6607 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6608 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6609 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6610 0x01df,
6611 0x01e0},
6612 {
6613 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6614 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6615 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6616 0x01de,
6617 0x01df},
6618 {
6619 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6620 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6621 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6622 0x01dd,
6623 0x01de},
6624 {
6625 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6626 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6627 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6628 0x01dd,
6629 0x01dd},
6630 {
6631 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6632 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6633 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6634 0x01dc,
6635 0x01dd},
6636 {
6637 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6638 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6639 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6640 0x01db,
6641 0x01dc},
6642 {
6643 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6644 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6645 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6646 0x01da,
6647 0x01db},
6648 {
6649 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6650 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6651 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6652 0x01d9,
6653 0x01da},
6654 {
6655 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6656 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6657 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6658 0x01d8,
6659 0x01d9},
6660 {
6661 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6662 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6663 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6664 0x01d7,
6665 0x01d8},
6666 {
6667 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6668 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6669 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6670 0x01d7,
6671 0x01d7},
6672 {
6673 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6674 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6675 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6676 0x01d6,
6677 0x01d7},
6678 {
6679 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6680 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6681 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6682 0x01d5,
6683 0x01d6},
6684 {
6685 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6686 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6687 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6688 0x01d4,
6689 0x01d5},
6690 {
6691 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6692 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6693 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6694 0x01d3,
6695 0x01d4},
6696 {
6697 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6698 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6699 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6700 0x01d2,
6701 0x01d3},
6702 {
6703 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6704 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6705 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6706 0x01d2,
6707 0x01d2},
6708 {
6709 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6710 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6711 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6712 0x01d1,
6713 0x01d2},
6714 {
6715 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6716 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6717 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6718 0x01d0,
6719 0x01d1},
6720 {
6721 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6722 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6723 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6724 0x01cf,
6725 0x01d0},
6726 {
6727 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6728 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6729 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6730 0x01ce,
6731 0x01cf},
6732 {
6733 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6734 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6735 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6736 0x01ce,
6737 0x01ce},
6738 {
6739 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6740 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6741 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6742 0x01cd,
6743 0x01ce},
6744 {
6745 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6746 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6747 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6748 0x01cc,
6749 0x01cd},
6750 {
6751 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6752 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6753 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6754 0x01cb,
6755 0x01cc},
6756 {
6757 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6758 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6759 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6760 0x01ca,
6761 0x01cb},
6762 {
6763 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6764 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6765 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6766 0x01ca,
6767 0x01cb},
6768 {
6769 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6770 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6771 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6772 0x01c9,
6773 0x01ca},
6774 {
6775 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6776 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6777 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6778 0x01c9,
6779 0x01ca},
6780 {
6781 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6782 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6783 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6784 0x01c9,
6785 0x01c9},
6786 {
6787 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6788 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6789 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6790 0x01c8,
6791 0x01c9},
6792 {
6793 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6794 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6795 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6796 0x01c8,
6797 0x01c9},
6798 {
6799 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6800 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6801 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6802 0x01c8,
6803 0x01c8},
6804 {
6805 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6806 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6807 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6808 0x01c7,
6809 0x01c8},
6810 {
6811 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6812 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6813 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6814 0x01c7,
6815 0x01c8},
6816 {
6817 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6818 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6819 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6820 0x01c6,
6821 0x01c7},
6822 {
6823 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6824 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6825 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6826 0x01c6,
6827 0x01c7},
6828 {
6829 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6830 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6831 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6832 0x01c6,
6833 0x01c6},
6834 {
6835 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6836 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6837 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6838 0x01c5,
6839 0x01c6},
6840 {
6841 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6842 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6843 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6844 0x01c5,
6845 0x01c6},
6846 {
6847 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6848 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6849 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6850 0x01c4,
6851 0x01c5},
6852 {
6853 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6854 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6855 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6856 0x01c4,
6857 0x01c5},
6858 {
6859 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6860 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6861 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6862 0x01c4,
6863 0x01c4},
6864 {
6865 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6866 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6867 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6868 0x01c3,
6869 0x01c4},
6870 {
6871 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6872 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6873 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6874 0x01c3,
6875 0x01c4},
6876 {
6877 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6878 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6879 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6880 0x01c2,
6881 0x01c3},
6882 {
6883 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6884 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6885 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6886 0x01c2,
6887 0x01c3},
6888 {
6889 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6890 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6891 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6892 0x01c2,
6893 0x01c2},
6894 {
6895 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6896 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6897 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6898 0x01c1,
6899 0x01c2},
6900 {
6901 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6902 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6903 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6904 0x01c0,
6905 0x01c1},
6906 {
6907 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6908 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6909 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6910 0x01bf,
6911 0x01c0},
6912 {
6913 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6914 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6915 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6916 0x01bf,
6917 0x01bf},
6918 {
6919 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6920 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6921 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6922 0x01be,
6923 0x01bf},
6924 {
6925 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6926 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6927 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6928 0x01bd,
6929 0x01be},
6930 {
6931 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6932 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6933 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6934 0x01bc,
6935 0x01bd},
6936 {
6937 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6938 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6939 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6940 0x043f,
6941 0x0443},
6942 {
6943 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6944 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6945 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6946 0x043d,
6947 0x0441},
6948 {
6949 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6950 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6951 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6952 0x043a,
6953 0x043f},
6954 {
6955 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6956 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6957 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6958 0x0438,
6959 0x043d},
6960 {
6961 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6962 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6963 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6964 0x0436,
6965 0x043a},
6966 {
6967 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6968 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6969 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6970 0x0434,
6971 0x0438},
6972 {
6973 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6974 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6975 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6976 0x0431,
6977 0x0436},
6978 {
6979 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6980 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6981 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6982 0x042f,
6983 0x0434},
6984 {
6985 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6986 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6987 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6988 0x042d,
6989 0x0431},
6990 {
6991 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6992 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6993 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6994 0x042b,
6995 0x042f},
6996 {
6997 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6998 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6999 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7000 0x0429,
7001 0x042d},
7002 {
7003 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7004 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7005 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7006 0x0427,
7007 0x042b},
7008 {
7009 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7010 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7011 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7012 0x0424,
7013 0x0429},
7014 {
7015 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7016 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7017 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7018 0x041f,
7019 0x0424}
7020 };
7021
7022 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7023 {
7024 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7025 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7026 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7027 0x0214,
7028 0x0215},
7029 {
7030 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7031 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7032 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7033 0x0213,
7034 0x0214},
7035 {
7036 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7037 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7038 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7039 0x0212,
7040 0x0213},
7041 {
7042 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7043 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7044 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7045 0x0211,
7046 0x0212},
7047 {
7048 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7049 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7050 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7051 0x020f,
7052 0x0211},
7053 {
7054 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7055 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7056 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7057 0x020e,
7058 0x020f},
7059 {
7060 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7061 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7062 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7063 0x020d,
7064 0x020e},
7065 {
7066 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7067 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7068 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7069 0x020c,
7070 0x020d},
7071 {
7072 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7073 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7074 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7075 0x020b,
7076 0x020c},
7077 {
7078 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7079 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7080 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7081 0x020a,
7082 0x020b},
7083 {
7084 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7085 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7086 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7087 0x0209,
7088 0x020a},
7089 {
7090 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7091 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7092 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7093 0x0208,
7094 0x0209},
7095 {
7096 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7097 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7098 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7099 0x0207,
7100 0x0208},
7101 {
7102 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7103 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7104 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7105 0x0206,
7106 0x0207},
7107 {
7108 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7109 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7110 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7111 0x0205,
7112 0x0206},
7113 {
7114 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7115 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7116 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7117 0x0204,
7118 0x0205},
7119 {
7120 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7121 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7122 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7123 0x0203,
7124 0x0204},
7125 {
7126 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7127 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7128 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7129 0x0202,
7130 0x0203},
7131 {
7132 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7133 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7134 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7135 0x0201,
7136 0x0202},
7137 {
7138 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7139 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7140 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7141 0x0200,
7142 0x0201},
7143 {
7144 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7145 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7146 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7147 0x01ff,
7148 0x0200},
7149 {
7150 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7151 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7152 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7153 0x01fe,
7154 0x01ff},
7155 {
7156 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7157 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7158 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7159 0x01fc,
7160 0x01fd},
7161 {
7162 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7163 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7164 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7165 0x01fb,
7166 0x01fc},
7167 {
7168 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7169 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7170 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7171 0x01fa,
7172 0x01fb},
7173 {
7174 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7175 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7176 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7177 0x01f9,
7178 0x01fa},
7179 {
7180 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7181 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7182 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7183 0x01f8,
7184 0x01f9},
7185 {
7186 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7187 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7188 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7189 0x01f7,
7190 0x01f8},
7191 {
7192 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7193 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7194 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7195 0x01f6,
7196 0x01f7},
7197 {
7198 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7199 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7200 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7201 0x01f5,
7202 0x01f6},
7203 {
7204 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7205 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7206 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7207 0x01f4,
7208 0x01f5},
7209 {
7210 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7211 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7212 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7213 0x01f3,
7214 0x01f4},
7215 {
7216 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7217 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7218 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7219 0x01f2,
7220 0x01f3},
7221 {
7222 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7223 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7224 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7225 0x01f1,
7226 0x01f2},
7227 {
7228 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7229 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7230 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7231 0x01f0,
7232 0x01f1},
7233 {
7234 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7235 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7236 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7237 0x01f0,
7238 0x01f0},
7239 {
7240 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7241 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7242 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7243 0x01ef,
7244 0x01f0},
7245 {
7246 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7247 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7248 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7249 0x01ee,
7250 0x01ef},
7251 {
7252 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7253 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7254 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7255 0x01ed,
7256 0x01ee},
7257 {
7258 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7259 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7260 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7261 0x01ec,
7262 0x01ed},
7263 {
7264 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7265 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7266 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7267 0x01eb,
7268 0x01ec},
7269 {
7270 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7271 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7272 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7273 0x01ea,
7274 0x01eb},
7275 {
7276 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7277 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7278 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7279 0x01e9,
7280 0x01ea},
7281 {
7282 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7283 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7284 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7285 0x01e8,
7286 0x01e9},
7287 {
7288 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7289 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7290 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7291 0x01e7,
7292 0x01e8},
7293 {
7294 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7295 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7296 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7297 0x01e6,
7298 0x01e7},
7299 {
7300 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7301 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7302 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7303 0x01e5,
7304 0x01e6},
7305 {
7306 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7307 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7308 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7309 0x01e5,
7310 0x01e5},
7311 {
7312 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7313 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7314 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7315 0x01e4,
7316 0x01e5},
7317 {
7318 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7319 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7320 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7321 0x01e3,
7322 0x01e4},
7323 {
7324 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7325 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7326 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7327 0x01e2,
7328 0x01e3},
7329 {
7330 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7331 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7332 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7333 0x01e1,
7334 0x01e2},
7335 {
7336 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7337 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7338 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7339 0x01e0,
7340 0x01e1},
7341 {
7342 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7343 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7344 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7345 0x01df,
7346 0x01e0},
7347 {
7348 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7349 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7350 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7351 0x01de,
7352 0x01df},
7353 {
7354 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7355 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7356 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7357 0x01dd,
7358 0x01de},
7359 {
7360 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7361 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7362 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7363 0x01dd,
7364 0x01dd},
7365 {
7366 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7367 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7368 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7369 0x01dc,
7370 0x01dd},
7371 {
7372 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7373 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7374 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7375 0x01db,
7376 0x01dc},
7377 {
7378 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7379 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7380 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7381 0x01da,
7382 0x01db},
7383 {
7384 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7385 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7386 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7387 0x01d9,
7388 0x01da},
7389 {
7390 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7391 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7392 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7393 0x01d8,
7394 0x01d9},
7395 {
7396 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7397 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7398 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7399 0x01d7,
7400 0x01d8},
7401 {
7402 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7403 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7404 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7405 0x01d7,
7406 0x01d7},
7407 {
7408 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7409 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7410 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7411 0x01d6,
7412 0x01d7},
7413 {
7414 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7415 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7416 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7417 0x01d5,
7418 0x01d6},
7419 {
7420 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7421 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7422 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7423 0x01d4,
7424 0x01d5},
7425 {
7426 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7427 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7428 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7429 0x01d3,
7430 0x01d4},
7431 {
7432 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7433 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7434 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7435 0x01d2,
7436 0x01d3},
7437 {
7438 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7439 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7440 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7441 0x01d2,
7442 0x01d2},
7443 {
7444 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7445 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7446 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7447 0x01d1,
7448 0x01d2},
7449 {
7450 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7451 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7452 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7453 0x01d0,
7454 0x01d1},
7455 {
7456 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7457 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7458 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7459 0x01cf,
7460 0x01d0},
7461 {
7462 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7463 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7464 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7465 0x01ce,
7466 0x01cf},
7467 {
7468 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7469 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7470 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7471 0x01ce,
7472 0x01ce},
7473 {
7474 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7475 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7476 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7477 0x01cd,
7478 0x01ce},
7479 {
7480 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7481 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7482 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7483 0x01cc,
7484 0x01cd},
7485 {
7486 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7487 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7488 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7489 0x01cb,
7490 0x01cc},
7491 {
7492 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7493 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7494 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7495 0x01ca,
7496 0x01cb},
7497 {
7498 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7499 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7500 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7501 0x01ca,
7502 0x01cb},
7503 {
7504 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7505 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7506 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7507 0x01c9,
7508 0x01ca},
7509 {
7510 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7511 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7512 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7513 0x01c9,
7514 0x01ca},
7515 {
7516 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7517 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7518 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7519 0x01c9,
7520 0x01c9},
7521 {
7522 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7523 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7524 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7525 0x01c8,
7526 0x01c9},
7527 {
7528 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7529 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7530 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7531 0x01c8,
7532 0x01c9},
7533 {
7534 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7535 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7536 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7537 0x01c8,
7538 0x01c8},
7539 {
7540 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7541 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7542 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7543 0x01c7,
7544 0x01c8},
7545 {
7546 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7547 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7548 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7549 0x01c7,
7550 0x01c8},
7551 {
7552 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7553 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7554 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7555 0x01c6,
7556 0x01c7},
7557 {
7558 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7559 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7560 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7561 0x01c6,
7562 0x01c7},
7563 {
7564 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7565 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7566 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7567 0x01c6,
7568 0x01c6},
7569 {
7570 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7571 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7572 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7573 0x01c5,
7574 0x01c6},
7575 {
7576 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7577 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7578 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7579 0x01c5,
7580 0x01c6},
7581 {
7582 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7583 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7584 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7585 0x01c4,
7586 0x01c5},
7587 {
7588 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7589 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7590 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7591 0x01c4,
7592 0x01c5},
7593 {
7594 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7595 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7596 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7597 0x01c4,
7598 0x01c4},
7599 {
7600 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7601 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7602 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7603 0x01c3,
7604 0x01c4},
7605 {
7606 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7607 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7608 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7609 0x01c3,
7610 0x01c4},
7611 {
7612 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7613 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7614 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7615 0x01c2,
7616 0x01c3},
7617 {
7618 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7619 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7620 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7621 0x01c2,
7622 0x01c3},
7623 {
7624 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7625 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7626 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7627 0x01c2,
7628 0x01c2},
7629 {
7630 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7631 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7632 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7633 0x01c1,
7634 0x01c2},
7635 {
7636 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7637 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7638 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7639 0x01c0,
7640 0x01c1},
7641 {
7642 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7643 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7644 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7645 0x01bf,
7646 0x01c0},
7647 {
7648 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7649 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7650 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7651 0x01bf,
7652 0x01bf},
7653 {
7654 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7655 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7656 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7657 0x01be,
7658 0x01bf},
7659 {
7660 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7661 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7662 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7663 0x01bd,
7664 0x01be},
7665 {
7666 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7667 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7668 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7669 0x01bc,
7670 0x01bd},
7671 {
7672 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7673 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7674 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7675 0x043f,
7676 0x0443},
7677 {
7678 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7679 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7680 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7681 0x043d,
7682 0x0441},
7683 {
7684 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7685 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7686 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7687 0x043a,
7688 0x043f},
7689 {
7690 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7691 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7692 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7693 0x0438,
7694 0x043d},
7695 {
7696 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7697 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7698 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7699 0x0436,
7700 0x043a},
7701 {
7702 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7703 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7704 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7705 0x0434,
7706 0x0438},
7707 {
7708 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7709 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7710 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7711 0x0431,
7712 0x0436},
7713 {
7714 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7715 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7716 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7717 0x042f,
7718 0x0434},
7719 {
7720 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7721 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7722 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7723 0x042d,
7724 0x0431},
7725 {
7726 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7727 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7728 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7729 0x042b,
7730 0x042f},
7731 {
7732 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7733 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7734 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7735 0x0429,
7736 0x042d},
7737 {
7738 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7739 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7740 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7741 0x0427,
7742 0x042b},
7743 {
7744 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7745 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7746 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7747 0x0424,
7748 0x0429},
7749 {
7750 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7751 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7752 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7753 0x041f,
7754 0x0424}
7755 };
7756
7757 static struct radio_regs regs_2055[] = {
7758 {0x02, 0x80, 0x80, 0, 0},
7759 {0x03, 0, 0, 0, 0},
7760 {0x04, 0x27, 0x27, 0, 0},
7761 {0x05, 0, 0, 0, 0},
7762 {0x06, 0x27, 0x27, 0, 0},
7763 {0x07, 0x7f, 0x7f, 1, 1},
7764 {0x08, 0x7, 0x7, 1, 1},
7765 {0x09, 0x7f, 0x7f, 1, 1},
7766 {0x0A, 0x7, 0x7, 1, 1},
7767 {0x0B, 0x15, 0x15, 0, 0},
7768 {0x0C, 0x15, 0x15, 0, 0},
7769 {0x0D, 0x4f, 0x4f, 1, 1},
7770 {0x0E, 0x5, 0x5, 1, 1},
7771 {0x0F, 0x4f, 0x4f, 1, 1},
7772 {0x10, 0x5, 0x5, 1, 1},
7773 {0x11, 0xd0, 0xd0, 0, 0},
7774 {0x12, 0x2, 0x2, 0, 0},
7775 {0x13, 0, 0, 0, 0},
7776 {0x14, 0x40, 0x40, 0, 0},
7777 {0x15, 0, 0, 0, 0},
7778 {0x16, 0, 0, 0, 0},
7779 {0x17, 0, 0, 0, 0},
7780 {0x18, 0, 0, 0, 0},
7781 {0x19, 0, 0, 0, 0},
7782 {0x1A, 0, 0, 0, 0},
7783 {0x1B, 0, 0, 0, 0},
7784 {0x1C, 0, 0, 0, 0},
7785 {0x1D, 0xc0, 0xc0, 0, 0},
7786 {0x1E, 0xff, 0xff, 0, 0},
7787 {0x1F, 0xc0, 0xc0, 0, 0},
7788 {0x20, 0xff, 0xff, 0, 0},
7789 {0x21, 0xc0, 0xc0, 0, 0},
7790 {0x22, 0, 0, 0, 0},
7791 {0x23, 0x2c, 0x2c, 0, 0},
7792 {0x24, 0, 0, 0, 0},
7793 {0x25, 0, 0, 0, 0},
7794 {0x26, 0, 0, 0, 0},
7795 {0x27, 0, 0, 0, 0},
7796 {0x28, 0, 0, 0, 0},
7797 {0x29, 0, 0, 0, 0},
7798 {0x2A, 0, 0, 0, 0},
7799 {0x2B, 0, 0, 0, 0},
7800 {0x2C, 0, 0, 0, 0},
7801 {0x2D, 0xa4, 0xa4, 0, 0},
7802 {0x2E, 0x38, 0x38, 0, 0},
7803 {0x2F, 0, 0, 0, 0},
7804 {0x30, 0x4, 0x4, 1, 1},
7805 {0x31, 0, 0, 0, 0},
7806 {0x32, 0xa, 0xa, 0, 0},
7807 {0x33, 0x87, 0x87, 0, 0},
7808 {0x34, 0x9, 0x9, 0, 0},
7809 {0x35, 0x70, 0x70, 0, 0},
7810 {0x36, 0x11, 0x11, 0, 0},
7811 {0x37, 0x18, 0x18, 1, 1},
7812 {0x38, 0x6, 0x6, 0, 0},
7813 {0x39, 0x4, 0x4, 1, 1},
7814 {0x3A, 0x6, 0x6, 0, 0},
7815 {0x3B, 0x9e, 0x9e, 0, 0},
7816 {0x3C, 0x9, 0x9, 0, 0},
7817 {0x3D, 0xc8, 0xc8, 1, 1},
7818 {0x3E, 0x88, 0x88, 0, 0},
7819 {0x3F, 0, 0, 0, 0},
7820 {0x40, 0, 0, 0, 0},
7821 {0x41, 0, 0, 0, 0},
7822 {0x42, 0x1, 0x1, 0, 0},
7823 {0x43, 0x2, 0x2, 0, 0},
7824 {0x44, 0x96, 0x96, 0, 0},
7825 {0x45, 0x3e, 0x3e, 0, 0},
7826 {0x46, 0x3e, 0x3e, 0, 0},
7827 {0x47, 0x13, 0x13, 0, 0},
7828 {0x48, 0x2, 0x2, 0, 0},
7829 {0x49, 0x15, 0x15, 0, 0},
7830 {0x4A, 0x7, 0x7, 0, 0},
7831 {0x4B, 0, 0, 0, 0},
7832 {0x4C, 0, 0, 0, 0},
7833 {0x4D, 0, 0, 0, 0},
7834 {0x4E, 0, 0, 0, 0},
7835 {0x4F, 0, 0, 0, 0},
7836 {0x50, 0x8, 0x8, 0, 0},
7837 {0x51, 0x8, 0x8, 0, 0},
7838 {0x52, 0x6, 0x6, 0, 0},
7839 {0x53, 0x84, 0x84, 1, 1},
7840 {0x54, 0xc3, 0xc3, 0, 0},
7841 {0x55, 0x8f, 0x8f, 0, 0},
7842 {0x56, 0xff, 0xff, 0, 0},
7843 {0x57, 0xff, 0xff, 0, 0},
7844 {0x58, 0x88, 0x88, 0, 0},
7845 {0x59, 0x88, 0x88, 0, 0},
7846 {0x5A, 0, 0, 0, 0},
7847 {0x5B, 0xcc, 0xcc, 0, 0},
7848 {0x5C, 0x6, 0x6, 0, 0},
7849 {0x5D, 0x80, 0x80, 0, 0},
7850 {0x5E, 0x80, 0x80, 0, 0},
7851 {0x5F, 0xf8, 0xf8, 0, 0},
7852 {0x60, 0x88, 0x88, 0, 0},
7853 {0x61, 0x88, 0x88, 0, 0},
7854 {0x62, 0x88, 0x8, 1, 1},
7855 {0x63, 0x88, 0x88, 0, 0},
7856 {0x64, 0, 0, 0, 0},
7857 {0x65, 0x1, 0x1, 1, 1},
7858 {0x66, 0x8a, 0x8a, 0, 0},
7859 {0x67, 0x8, 0x8, 0, 0},
7860 {0x68, 0x83, 0x83, 0, 0},
7861 {0x69, 0x6, 0x6, 0, 0},
7862 {0x6A, 0xa0, 0xa0, 0, 0},
7863 {0x6B, 0xa, 0xa, 0, 0},
7864 {0x6C, 0x87, 0x87, 1, 1},
7865 {0x6D, 0x2a, 0x2a, 0, 0},
7866 {0x6E, 0x2a, 0x2a, 0, 0},
7867 {0x6F, 0x2a, 0x2a, 0, 0},
7868 {0x70, 0x2a, 0x2a, 0, 0},
7869 {0x71, 0x18, 0x18, 0, 0},
7870 {0x72, 0x6a, 0x6a, 1, 1},
7871 {0x73, 0xab, 0xab, 1, 1},
7872 {0x74, 0x13, 0x13, 1, 1},
7873 {0x75, 0xc1, 0xc1, 1, 1},
7874 {0x76, 0xaa, 0xaa, 1, 1},
7875 {0x77, 0x87, 0x87, 1, 1},
7876 {0x78, 0, 0, 0, 0},
7877 {0x79, 0x6, 0x6, 0, 0},
7878 {0x7A, 0x7, 0x7, 0, 0},
7879 {0x7B, 0x7, 0x7, 0, 0},
7880 {0x7C, 0x15, 0x15, 0, 0},
7881 {0x7D, 0x55, 0x55, 0, 0},
7882 {0x7E, 0x97, 0x97, 1, 1},
7883 {0x7F, 0x8, 0x8, 0, 0},
7884 {0x80, 0x14, 0x14, 1, 1},
7885 {0x81, 0x33, 0x33, 0, 0},
7886 {0x82, 0x88, 0x88, 0, 0},
7887 {0x83, 0x6, 0x6, 0, 0},
7888 {0x84, 0x3, 0x3, 1, 1},
7889 {0x85, 0xa, 0xa, 0, 0},
7890 {0x86, 0x3, 0x3, 1, 1},
7891 {0x87, 0x2a, 0x2a, 0, 0},
7892 {0x88, 0xa4, 0xa4, 0, 0},
7893 {0x89, 0x18, 0x18, 0, 0},
7894 {0x8A, 0x28, 0x28, 0, 0},
7895 {0x8B, 0, 0, 0, 0},
7896 {0x8C, 0x4a, 0x4a, 0, 0},
7897 {0x8D, 0, 0, 0, 0},
7898 {0x8E, 0xf8, 0xf8, 0, 0},
7899 {0x8F, 0x88, 0x88, 0, 0},
7900 {0x90, 0x88, 0x88, 0, 0},
7901 {0x91, 0x88, 0x8, 1, 1},
7902 {0x92, 0x88, 0x88, 0, 0},
7903 {0x93, 0, 0, 0, 0},
7904 {0x94, 0x1, 0x1, 1, 1},
7905 {0x95, 0x8a, 0x8a, 0, 0},
7906 {0x96, 0x8, 0x8, 0, 0},
7907 {0x97, 0x83, 0x83, 0, 0},
7908 {0x98, 0x6, 0x6, 0, 0},
7909 {0x99, 0xa0, 0xa0, 0, 0},
7910 {0x9A, 0xa, 0xa, 0, 0},
7911 {0x9B, 0x87, 0x87, 1, 1},
7912 {0x9C, 0x2a, 0x2a, 0, 0},
7913 {0x9D, 0x2a, 0x2a, 0, 0},
7914 {0x9E, 0x2a, 0x2a, 0, 0},
7915 {0x9F, 0x2a, 0x2a, 0, 0},
7916 {0xA0, 0x18, 0x18, 0, 0},
7917 {0xA1, 0x6a, 0x6a, 1, 1},
7918 {0xA2, 0xab, 0xab, 1, 1},
7919 {0xA3, 0x13, 0x13, 1, 1},
7920 {0xA4, 0xc1, 0xc1, 1, 1},
7921 {0xA5, 0xaa, 0xaa, 1, 1},
7922 {0xA6, 0x87, 0x87, 1, 1},
7923 {0xA7, 0, 0, 0, 0},
7924 {0xA8, 0x6, 0x6, 0, 0},
7925 {0xA9, 0x7, 0x7, 0, 0},
7926 {0xAA, 0x7, 0x7, 0, 0},
7927 {0xAB, 0x15, 0x15, 0, 0},
7928 {0xAC, 0x55, 0x55, 0, 0},
7929 {0xAD, 0x97, 0x97, 1, 1},
7930 {0xAE, 0x8, 0x8, 0, 0},
7931 {0xAF, 0x14, 0x14, 1, 1},
7932 {0xB0, 0x33, 0x33, 0, 0},
7933 {0xB1, 0x88, 0x88, 0, 0},
7934 {0xB2, 0x6, 0x6, 0, 0},
7935 {0xB3, 0x3, 0x3, 1, 1},
7936 {0xB4, 0xa, 0xa, 0, 0},
7937 {0xB5, 0x3, 0x3, 1, 1},
7938 {0xB6, 0x2a, 0x2a, 0, 0},
7939 {0xB7, 0xa4, 0xa4, 0, 0},
7940 {0xB8, 0x18, 0x18, 0, 0},
7941 {0xB9, 0x28, 0x28, 0, 0},
7942 {0xBA, 0, 0, 0, 0},
7943 {0xBB, 0x4a, 0x4a, 0, 0},
7944 {0xBC, 0, 0, 0, 0},
7945 {0xBD, 0x71, 0x71, 0, 0},
7946 {0xBE, 0x72, 0x72, 0, 0},
7947 {0xBF, 0x73, 0x73, 0, 0},
7948 {0xC0, 0x74, 0x74, 0, 0},
7949 {0xC1, 0x75, 0x75, 0, 0},
7950 {0xC2, 0x76, 0x76, 0, 0},
7951 {0xC3, 0x77, 0x77, 0, 0},
7952 {0xC4, 0x78, 0x78, 0, 0},
7953 {0xC5, 0x79, 0x79, 0, 0},
7954 {0xC6, 0x7a, 0x7a, 0, 0},
7955 {0xC7, 0, 0, 0, 0},
7956 {0xC8, 0, 0, 0, 0},
7957 {0xC9, 0, 0, 0, 0},
7958 {0xCA, 0, 0, 0, 0},
7959 {0xCB, 0, 0, 0, 0},
7960 {0xCC, 0, 0, 0, 0},
7961 {0xCD, 0, 0, 0, 0},
7962 {0xCE, 0x6, 0x6, 0, 0},
7963 {0xCF, 0, 0, 0, 0},
7964 {0xD0, 0, 0, 0, 0},
7965 {0xD1, 0x18, 0x18, 0, 0},
7966 {0xD2, 0x88, 0x88, 0, 0},
7967 {0xD3, 0, 0, 0, 0},
7968 {0xD4, 0, 0, 0, 0},
7969 {0xD5, 0, 0, 0, 0},
7970 {0xD6, 0, 0, 0, 0},
7971 {0xD7, 0, 0, 0, 0},
7972 {0xD8, 0, 0, 0, 0},
7973 {0xD9, 0, 0, 0, 0},
7974 {0xDA, 0x6, 0x6, 0, 0},
7975 {0xDB, 0, 0, 0, 0},
7976 {0xDC, 0, 0, 0, 0},
7977 {0xDD, 0x18, 0x18, 0, 0},
7978 {0xDE, 0x88, 0x88, 0, 0},
7979 {0xDF, 0, 0, 0, 0},
7980 {0xE0, 0, 0, 0, 0},
7981 {0xE1, 0, 0, 0, 0},
7982 {0xE2, 0, 0, 0, 0},
7983 {0xFFFF, 0, 0, 0, 0},
7984 };
7985
7986 static struct radio_regs regs_SYN_2056[] = {
7987 {0x02, 0, 0, 0, 0},
7988 {0x03, 0, 0, 0, 0},
7989 {0x04, 0, 0, 0, 0},
7990 {0x05, 0, 0, 0, 0},
7991 {0x06, 0, 0, 0, 0},
7992 {0x07, 0, 0, 0, 0},
7993 {0x08, 0, 0, 0, 0},
7994 {0x09, 0x1, 0x1, 0, 0},
7995 {0x0A, 0, 0, 0, 0},
7996 {0x0B, 0, 0, 0, 0},
7997 {0x0C, 0, 0, 0, 0},
7998 {0x0D, 0, 0, 0, 0},
7999 {0x0E, 0, 0, 0, 0},
8000 {0x0F, 0, 0, 0, 0},
8001 {0x10, 0, 0, 0, 0},
8002 {0x11, 0, 0, 0, 0},
8003 {0x12, 0, 0, 0, 0},
8004 {0x13, 0, 0, 0, 0},
8005 {0x14, 0, 0, 0, 0},
8006 {0x15, 0, 0, 0, 0},
8007 {0x16, 0, 0, 0, 0},
8008 {0x17, 0, 0, 0, 0},
8009 {0x18, 0, 0, 0, 0},
8010 {0x19, 0, 0, 0, 0},
8011 {0x1A, 0, 0, 0, 0},
8012 {0x1B, 0, 0, 0, 0},
8013 {0x1C, 0, 0, 0, 0},
8014 {0x1D, 0, 0, 0, 0},
8015 {0x1E, 0, 0, 0, 0},
8016 {0x1F, 0, 0, 0, 0},
8017 {0x20, 0, 0, 0, 0},
8018 {0x21, 0, 0, 0, 0},
8019 {0x22, 0x60, 0x60, 0, 0},
8020 {0x23, 0x6, 0x6, 0, 0},
8021 {0x24, 0xc, 0xc, 0, 0},
8022 {0x25, 0, 0, 0, 0},
8023 {0x26, 0, 0, 0, 0},
8024 {0x27, 0, 0, 0, 0},
8025 {0x28, 0x1, 0x1, 0, 0},
8026 {0x29, 0, 0, 0, 0},
8027 {0x2A, 0, 0, 0, 0},
8028 {0x2B, 0, 0, 0, 0},
8029 {0x2C, 0, 0, 0, 0},
8030 {0x2D, 0, 0, 0, 0},
8031 {0x2E, 0xd, 0xd, 0, 0},
8032 {0x2F, 0x1f, 0x1f, 0, 0},
8033 {0x30, 0x15, 0x15, 0, 0},
8034 {0x31, 0xf, 0xf, 0, 0},
8035 {0x32, 0, 0, 0, 0},
8036 {0x33, 0, 0, 0, 0},
8037 {0x34, 0, 0, 0, 0},
8038 {0x35, 0, 0, 0, 0},
8039 {0x36, 0, 0, 0, 0},
8040 {0x37, 0, 0, 0, 0},
8041 {0x38, 0, 0, 0, 0},
8042 {0x39, 0, 0, 0, 0},
8043 {0x3A, 0, 0, 0, 0},
8044 {0x3B, 0, 0, 0, 0},
8045 {0x3C, 0x13, 0x13, 0, 0},
8046 {0x3D, 0xf, 0xf, 0, 0},
8047 {0x3E, 0x18, 0x18, 0, 0},
8048 {0x3F, 0, 0, 0, 0},
8049 {0x40, 0, 0, 0, 0},
8050 {0x41, 0x20, 0x20, 0, 0},
8051 {0x42, 0x20, 0x20, 0, 0},
8052 {0x43, 0, 0, 0, 0},
8053 {0x44, 0x77, 0x77, 0, 0},
8054 {0x45, 0x7, 0x7, 0, 0},
8055 {0x46, 0x1, 0x1, 0, 0},
8056 {0x47, 0x4, 0x4, 0, 0},
8057 {0x48, 0xf, 0xf, 0, 0},
8058 {0x49, 0x30, 0x30, 0, 0},
8059 {0x4A, 0x32, 0x32, 0, 0},
8060 {0x4B, 0xd, 0xd, 0, 0},
8061 {0x4C, 0xd, 0xd, 0, 0},
8062 {0x4D, 0x4, 0x4, 0, 0},
8063 {0x4E, 0x6, 0x6, 0, 0},
8064 {0x4F, 0x1, 0x1, 0, 0},
8065 {0x50, 0x1c, 0x1c, 0, 0},
8066 {0x51, 0x2, 0x2, 0, 0},
8067 {0x52, 0x2, 0x2, 0, 0},
8068 {0x53, 0xf7, 0xf7, 1, 1},
8069 {0x54, 0xb4, 0xb4, 0, 0},
8070 {0x55, 0xd2, 0xd2, 0, 0},
8071 {0x56, 0, 0, 0, 0},
8072 {0x57, 0, 0, 0, 0},
8073 {0x58, 0x4, 0x4, 0, 0},
8074 {0x59, 0x96, 0x96, 0, 0},
8075 {0x5A, 0x3e, 0x3e, 0, 0},
8076 {0x5B, 0x3e, 0x3e, 0, 0},
8077 {0x5C, 0x13, 0x13, 0, 0},
8078 {0x5D, 0x2, 0x2, 0, 0},
8079 {0x5E, 0, 0, 0, 0},
8080 {0x5F, 0x7, 0x7, 0, 0},
8081 {0x60, 0x7, 0x7, 1, 1},
8082 {0x61, 0x8, 0x8, 0, 0},
8083 {0x62, 0x3, 0x3, 0, 0},
8084 {0x63, 0, 0, 0, 0},
8085 {0x64, 0, 0, 0, 0},
8086 {0x65, 0, 0, 0, 0},
8087 {0x66, 0, 0, 0, 0},
8088 {0x67, 0, 0, 0, 0},
8089 {0x68, 0x40, 0x40, 0, 0},
8090 {0x69, 0, 0, 0, 0},
8091 {0x6A, 0, 0, 0, 0},
8092 {0x6B, 0, 0, 0, 0},
8093 {0x6C, 0, 0, 0, 0},
8094 {0x6D, 0x1, 0x1, 0, 0},
8095 {0x6E, 0, 0, 0, 0},
8096 {0x6F, 0, 0, 0, 0},
8097 {0x70, 0x60, 0x60, 0, 0},
8098 {0x71, 0x66, 0x66, 0, 0},
8099 {0x72, 0xc, 0xc, 0, 0},
8100 {0x73, 0x66, 0x66, 0, 0},
8101 {0x74, 0x8f, 0x8f, 1, 1},
8102 {0x75, 0, 0, 0, 0},
8103 {0x76, 0xcc, 0xcc, 0, 0},
8104 {0x77, 0x1, 0x1, 0, 0},
8105 {0x78, 0x66, 0x66, 0, 0},
8106 {0x79, 0x66, 0x66, 0, 0},
8107 {0x7A, 0, 0, 0, 0},
8108 {0x7B, 0, 0, 0, 0},
8109 {0x7C, 0, 0, 0, 0},
8110 {0x7D, 0, 0, 0, 0},
8111 {0x7E, 0, 0, 0, 0},
8112 {0x7F, 0, 0, 0, 0},
8113 {0x80, 0, 0, 0, 0},
8114 {0x81, 0, 0, 0, 0},
8115 {0x82, 0, 0, 0, 0},
8116 {0x83, 0, 0, 0, 0},
8117 {0x84, 0, 0, 0, 0},
8118 {0x85, 0xff, 0xff, 0, 0},
8119 {0x86, 0, 0, 0, 0},
8120 {0x87, 0, 0, 0, 0},
8121 {0x88, 0, 0, 0, 0},
8122 {0x89, 0, 0, 0, 0},
8123 {0x8A, 0, 0, 0, 0},
8124 {0x8B, 0, 0, 0, 0},
8125 {0x8C, 0, 0, 0, 0},
8126 {0x8D, 0, 0, 0, 0},
8127 {0x8E, 0, 0, 0, 0},
8128 {0x8F, 0, 0, 0, 0},
8129 {0x90, 0, 0, 0, 0},
8130 {0x91, 0, 0, 0, 0},
8131 {0x92, 0, 0, 0, 0},
8132 {0x93, 0, 0, 0, 0},
8133 {0x94, 0, 0, 0, 0},
8134 {0x95, 0, 0, 0, 0},
8135 {0x96, 0, 0, 0, 0},
8136 {0x97, 0, 0, 0, 0},
8137 {0x98, 0, 0, 0, 0},
8138 {0x99, 0, 0, 0, 0},
8139 {0x9A, 0, 0, 0, 0},
8140 {0x9B, 0, 0, 0, 0},
8141 {0x9C, 0, 0, 0, 0},
8142 {0x9D, 0, 0, 0, 0},
8143 {0x9E, 0, 0, 0, 0},
8144 {0x9F, 0x6, 0x6, 0, 0},
8145 {0xA0, 0x66, 0x66, 0, 0},
8146 {0xA1, 0x66, 0x66, 0, 0},
8147 {0xA2, 0x66, 0x66, 0, 0},
8148 {0xA3, 0x66, 0x66, 0, 0},
8149 {0xA4, 0x66, 0x66, 0, 0},
8150 {0xA5, 0x66, 0x66, 0, 0},
8151 {0xA6, 0x66, 0x66, 0, 0},
8152 {0xA7, 0x66, 0x66, 0, 0},
8153 {0xA8, 0x66, 0x66, 0, 0},
8154 {0xA9, 0x66, 0x66, 0, 0},
8155 {0xAA, 0x66, 0x66, 0, 0},
8156 {0xAB, 0x66, 0x66, 0, 0},
8157 {0xAC, 0x66, 0x66, 0, 0},
8158 {0xAD, 0x66, 0x66, 0, 0},
8159 {0xAE, 0x66, 0x66, 0, 0},
8160 {0xAF, 0x66, 0x66, 0, 0},
8161 {0xB0, 0x66, 0x66, 0, 0},
8162 {0xB1, 0x66, 0x66, 0, 0},
8163 {0xB2, 0x66, 0x66, 0, 0},
8164 {0xB3, 0xa, 0xa, 0, 0},
8165 {0xB4, 0, 0, 0, 0},
8166 {0xB5, 0, 0, 0, 0},
8167 {0xB6, 0, 0, 0, 0},
8168 {0xFFFF, 0, 0, 0, 0}
8169 };
8170
8171 static struct radio_regs regs_TX_2056[] = {
8172 {0x02, 0, 0, 0, 0},
8173 {0x03, 0, 0, 0, 0},
8174 {0x04, 0, 0, 0, 0},
8175 {0x05, 0, 0, 0, 0},
8176 {0x06, 0, 0, 0, 0},
8177 {0x07, 0, 0, 0, 0},
8178 {0x08, 0, 0, 0, 0},
8179 {0x09, 0, 0, 0, 0},
8180 {0x0A, 0, 0, 0, 0},
8181 {0x0B, 0, 0, 0, 0},
8182 {0x0C, 0, 0, 0, 0},
8183 {0x0D, 0, 0, 0, 0},
8184 {0x0E, 0, 0, 0, 0},
8185 {0x0F, 0, 0, 0, 0},
8186 {0x10, 0, 0, 0, 0},
8187 {0x11, 0, 0, 0, 0},
8188 {0x12, 0, 0, 0, 0},
8189 {0x13, 0, 0, 0, 0},
8190 {0x14, 0, 0, 0, 0},
8191 {0x15, 0, 0, 0, 0},
8192 {0x16, 0, 0, 0, 0},
8193 {0x17, 0, 0, 0, 0},
8194 {0x18, 0, 0, 0, 0},
8195 {0x19, 0, 0, 0, 0},
8196 {0x1A, 0, 0, 0, 0},
8197 {0x1B, 0, 0, 0, 0},
8198 {0x1C, 0, 0, 0, 0},
8199 {0x1D, 0, 0, 0, 0},
8200 {0x1E, 0, 0, 0, 0},
8201 {0x1F, 0, 0, 0, 0},
8202 {0x20, 0, 0, 0, 0},
8203 {0x21, 0x88, 0x88, 0, 0},
8204 {0x22, 0x88, 0x88, 0, 0},
8205 {0x23, 0x88, 0x88, 0, 0},
8206 {0x24, 0x88, 0x88, 0, 0},
8207 {0x25, 0xc, 0xc, 0, 0},
8208 {0x26, 0, 0, 0, 0},
8209 {0x27, 0x3, 0x3, 0, 0},
8210 {0x28, 0, 0, 0, 0},
8211 {0x29, 0x3, 0x3, 0, 0},
8212 {0x2A, 0x37, 0x37, 0, 0},
8213 {0x2B, 0x3, 0x3, 0, 0},
8214 {0x2C, 0, 0, 0, 0},
8215 {0x2D, 0, 0, 0, 0},
8216 {0x2E, 0x1, 0x1, 0, 0},
8217 {0x2F, 0x1, 0x1, 0, 0},
8218 {0x30, 0, 0, 0, 0},
8219 {0x31, 0, 0, 0, 0},
8220 {0x32, 0, 0, 0, 0},
8221 {0x33, 0x11, 0x11, 0, 0},
8222 {0x34, 0x11, 0x11, 0, 0},
8223 {0x35, 0, 0, 0, 0},
8224 {0x36, 0, 0, 0, 0},
8225 {0x37, 0x3, 0x3, 0, 0},
8226 {0x38, 0xf, 0xf, 0, 0},
8227 {0x39, 0, 0, 0, 0},
8228 {0x3A, 0x2d, 0x2d, 0, 0},
8229 {0x3B, 0, 0, 0, 0},
8230 {0x3C, 0x6e, 0x6e, 0, 0},
8231 {0x3D, 0xf0, 0xf0, 1, 1},
8232 {0x3E, 0, 0, 0, 0},
8233 {0x3F, 0, 0, 0, 0},
8234 {0x40, 0, 0, 0, 0},
8235 {0x41, 0x3, 0x3, 0, 0},
8236 {0x42, 0x3, 0x3, 0, 0},
8237 {0x43, 0, 0, 0, 0},
8238 {0x44, 0x1e, 0x1e, 0, 0},
8239 {0x45, 0, 0, 0, 0},
8240 {0x46, 0x6e, 0x6e, 0, 0},
8241 {0x47, 0xf0, 0xf0, 1, 1},
8242 {0x48, 0, 0, 0, 0},
8243 {0x49, 0x2, 0x2, 0, 0},
8244 {0x4A, 0xff, 0xff, 1, 1},
8245 {0x4B, 0xc, 0xc, 0, 0},
8246 {0x4C, 0, 0, 0, 0},
8247 {0x4D, 0x38, 0x38, 0, 0},
8248 {0x4E, 0x70, 0x70, 1, 1},
8249 {0x4F, 0x2, 0x2, 0, 0},
8250 {0x50, 0x88, 0x88, 0, 0},
8251 {0x51, 0xc, 0xc, 0, 0},
8252 {0x52, 0, 0, 0, 0},
8253 {0x53, 0x8, 0x8, 0, 0},
8254 {0x54, 0x70, 0x70, 1, 1},
8255 {0x55, 0x2, 0x2, 0, 0},
8256 {0x56, 0xff, 0xff, 1, 1},
8257 {0x57, 0, 0, 0, 0},
8258 {0x58, 0x83, 0x83, 0, 0},
8259 {0x59, 0x77, 0x77, 1, 1},
8260 {0x5A, 0, 0, 0, 0},
8261 {0x5B, 0x2, 0x2, 0, 0},
8262 {0x5C, 0x88, 0x88, 0, 0},
8263 {0x5D, 0, 0, 0, 0},
8264 {0x5E, 0x8, 0x8, 0, 0},
8265 {0x5F, 0x77, 0x77, 1, 1},
8266 {0x60, 0x1, 0x1, 0, 0},
8267 {0x61, 0, 0, 0, 0},
8268 {0x62, 0x7, 0x7, 0, 0},
8269 {0x63, 0, 0, 0, 0},
8270 {0x64, 0x7, 0x7, 0, 0},
8271 {0x65, 0, 0, 0, 0},
8272 {0x66, 0, 0, 0, 0},
8273 {0x67, 0x74, 0x74, 1, 1},
8274 {0x68, 0, 0, 0, 0},
8275 {0x69, 0xa, 0xa, 0, 0},
8276 {0x6A, 0, 0, 0, 0},
8277 {0x6B, 0, 0, 0, 0},
8278 {0x6C, 0, 0, 0, 0},
8279 {0x6D, 0, 0, 0, 0},
8280 {0x6E, 0, 0, 0, 0},
8281 {0x6F, 0, 0, 0, 0},
8282 {0x70, 0, 0, 0, 0},
8283 {0x71, 0x2, 0x2, 0, 0},
8284 {0x72, 0, 0, 0, 0},
8285 {0x73, 0, 0, 0, 0},
8286 {0x74, 0xe, 0xe, 0, 0},
8287 {0x75, 0xe, 0xe, 0, 0},
8288 {0x76, 0xe, 0xe, 0, 0},
8289 {0x77, 0x13, 0x13, 0, 0},
8290 {0x78, 0x13, 0x13, 0, 0},
8291 {0x79, 0x1b, 0x1b, 0, 0},
8292 {0x7A, 0x1b, 0x1b, 0, 0},
8293 {0x7B, 0x55, 0x55, 0, 0},
8294 {0x7C, 0x5b, 0x5b, 0, 0},
8295 {0x7D, 0, 0, 0, 0},
8296 {0x7E, 0, 0, 0, 0},
8297 {0x7F, 0, 0, 0, 0},
8298 {0x80, 0, 0, 0, 0},
8299 {0x81, 0, 0, 0, 0},
8300 {0x82, 0, 0, 0, 0},
8301 {0x83, 0, 0, 0, 0},
8302 {0x84, 0, 0, 0, 0},
8303 {0x85, 0, 0, 0, 0},
8304 {0x86, 0, 0, 0, 0},
8305 {0x87, 0, 0, 0, 0},
8306 {0x88, 0, 0, 0, 0},
8307 {0x89, 0, 0, 0, 0},
8308 {0x8A, 0, 0, 0, 0},
8309 {0x8B, 0, 0, 0, 0},
8310 {0x8C, 0, 0, 0, 0},
8311 {0x8D, 0, 0, 0, 0},
8312 {0x8E, 0, 0, 0, 0},
8313 {0x8F, 0, 0, 0, 0},
8314 {0x90, 0, 0, 0, 0},
8315 {0x91, 0, 0, 0, 0},
8316 {0x92, 0, 0, 0, 0},
8317 {0xFFFF, 0, 0, 0, 0}
8318 };
8319
8320 static struct radio_regs regs_RX_2056[] = {
8321 {0x02, 0, 0, 0, 0},
8322 {0x03, 0, 0, 0, 0},
8323 {0x04, 0, 0, 0, 0},
8324 {0x05, 0, 0, 0, 0},
8325 {0x06, 0, 0, 0, 0},
8326 {0x07, 0, 0, 0, 0},
8327 {0x08, 0, 0, 0, 0},
8328 {0x09, 0, 0, 0, 0},
8329 {0x0A, 0, 0, 0, 0},
8330 {0x0B, 0, 0, 0, 0},
8331 {0x0C, 0, 0, 0, 0},
8332 {0x0D, 0, 0, 0, 0},
8333 {0x0E, 0, 0, 0, 0},
8334 {0x0F, 0, 0, 0, 0},
8335 {0x10, 0, 0, 0, 0},
8336 {0x11, 0, 0, 0, 0},
8337 {0x12, 0, 0, 0, 0},
8338 {0x13, 0, 0, 0, 0},
8339 {0x14, 0, 0, 0, 0},
8340 {0x15, 0, 0, 0, 0},
8341 {0x16, 0, 0, 0, 0},
8342 {0x17, 0, 0, 0, 0},
8343 {0x18, 0, 0, 0, 0},
8344 {0x19, 0, 0, 0, 0},
8345 {0x1A, 0, 0, 0, 0},
8346 {0x1B, 0, 0, 0, 0},
8347 {0x1C, 0, 0, 0, 0},
8348 {0x1D, 0, 0, 0, 0},
8349 {0x1E, 0, 0, 0, 0},
8350 {0x1F, 0, 0, 0, 0},
8351 {0x20, 0x3, 0x3, 0, 0},
8352 {0x21, 0, 0, 0, 0},
8353 {0x22, 0, 0, 0, 0},
8354 {0x23, 0x90, 0x90, 0, 0},
8355 {0x24, 0x55, 0x55, 0, 0},
8356 {0x25, 0x15, 0x15, 0, 0},
8357 {0x26, 0x5, 0x5, 0, 0},
8358 {0x27, 0x15, 0x15, 0, 0},
8359 {0x28, 0x5, 0x5, 0, 0},
8360 {0x29, 0x20, 0x20, 0, 0},
8361 {0x2A, 0x11, 0x11, 0, 0},
8362 {0x2B, 0x90, 0x90, 0, 0},
8363 {0x2C, 0, 0, 0, 0},
8364 {0x2D, 0x88, 0x88, 0, 0},
8365 {0x2E, 0x32, 0x32, 0, 0},
8366 {0x2F, 0x77, 0x77, 0, 0},
8367 {0x30, 0x17, 0x17, 1, 1},
8368 {0x31, 0xff, 0xff, 1, 1},
8369 {0x32, 0x20, 0x20, 0, 0},
8370 {0x33, 0, 0, 0, 0},
8371 {0x34, 0x88, 0x88, 0, 0},
8372 {0x35, 0x32, 0x32, 0, 0},
8373 {0x36, 0x77, 0x77, 0, 0},
8374 {0x37, 0x17, 0x17, 1, 1},
8375 {0x38, 0xf0, 0xf0, 1, 1},
8376 {0x39, 0x20, 0x20, 0, 0},
8377 {0x3A, 0x8, 0x8, 0, 0},
8378 {0x3B, 0x99, 0x99, 0, 0},
8379 {0x3C, 0, 0, 0, 0},
8380 {0x3D, 0x44, 0x44, 1, 1},
8381 {0x3E, 0, 0, 0, 0},
8382 {0x3F, 0x44, 0x44, 0, 0},
8383 {0x40, 0xf, 0xf, 1, 1},
8384 {0x41, 0x6, 0x6, 0, 0},
8385 {0x42, 0x4, 0x4, 0, 0},
8386 {0x43, 0x50, 0x50, 1, 1},
8387 {0x44, 0x8, 0x8, 0, 0},
8388 {0x45, 0x99, 0x99, 0, 0},
8389 {0x46, 0, 0, 0, 0},
8390 {0x47, 0x11, 0x11, 0, 0},
8391 {0x48, 0, 0, 0, 0},
8392 {0x49, 0x44, 0x44, 0, 0},
8393 {0x4A, 0x7, 0x7, 0, 0},
8394 {0x4B, 0x6, 0x6, 0, 0},
8395 {0x4C, 0x4, 0x4, 0, 0},
8396 {0x4D, 0, 0, 0, 0},
8397 {0x4E, 0, 0, 0, 0},
8398 {0x4F, 0x66, 0x66, 0, 0},
8399 {0x50, 0x66, 0x66, 0, 0},
8400 {0x51, 0x57, 0x57, 0, 0},
8401 {0x52, 0x57, 0x57, 0, 0},
8402 {0x53, 0x44, 0x44, 0, 0},
8403 {0x54, 0, 0, 0, 0},
8404 {0x55, 0, 0, 0, 0},
8405 {0x56, 0x8, 0x8, 0, 0},
8406 {0x57, 0x8, 0x8, 0, 0},
8407 {0x58, 0x7, 0x7, 0, 0},
8408 {0x59, 0x22, 0x22, 0, 0},
8409 {0x5A, 0x22, 0x22, 0, 0},
8410 {0x5B, 0x2, 0x2, 0, 0},
8411 {0x5C, 0x23, 0x23, 0, 0},
8412 {0x5D, 0x7, 0x7, 0, 0},
8413 {0x5E, 0x55, 0x55, 0, 0},
8414 {0x5F, 0x23, 0x23, 0, 0},
8415 {0x60, 0x41, 0x41, 0, 0},
8416 {0x61, 0x1, 0x1, 0, 0},
8417 {0x62, 0xa, 0xa, 0, 0},
8418 {0x63, 0, 0, 0, 0},
8419 {0x64, 0, 0, 0, 0},
8420 {0x65, 0, 0, 0, 0},
8421 {0x66, 0, 0, 0, 0},
8422 {0x67, 0, 0, 0, 0},
8423 {0x68, 0, 0, 0, 0},
8424 {0x69, 0, 0, 0, 0},
8425 {0x6A, 0, 0, 0, 0},
8426 {0x6B, 0xc, 0xc, 0, 0},
8427 {0x6C, 0, 0, 0, 0},
8428 {0x6D, 0, 0, 0, 0},
8429 {0x6E, 0, 0, 0, 0},
8430 {0x6F, 0, 0, 0, 0},
8431 {0x70, 0, 0, 0, 0},
8432 {0x71, 0, 0, 0, 0},
8433 {0x72, 0x22, 0x22, 0, 0},
8434 {0x73, 0x22, 0x22, 0, 0},
8435 {0x74, 0x2, 0x2, 0, 0},
8436 {0x75, 0xa, 0xa, 0, 0},
8437 {0x76, 0x1, 0x1, 0, 0},
8438 {0x77, 0x22, 0x22, 0, 0},
8439 {0x78, 0x30, 0x30, 0, 0},
8440 {0x79, 0, 0, 0, 0},
8441 {0x7A, 0, 0, 0, 0},
8442 {0x7B, 0, 0, 0, 0},
8443 {0x7C, 0, 0, 0, 0},
8444 {0x7D, 0, 0, 0, 0},
8445 {0x7E, 0, 0, 0, 0},
8446 {0x7F, 0, 0, 0, 0},
8447 {0x80, 0, 0, 0, 0},
8448 {0x81, 0, 0, 0, 0},
8449 {0x82, 0, 0, 0, 0},
8450 {0x83, 0, 0, 0, 0},
8451 {0x84, 0, 0, 0, 0},
8452 {0x85, 0, 0, 0, 0},
8453 {0x86, 0, 0, 0, 0},
8454 {0x87, 0, 0, 0, 0},
8455 {0x88, 0, 0, 0, 0},
8456 {0x89, 0, 0, 0, 0},
8457 {0x8A, 0, 0, 0, 0},
8458 {0x8B, 0, 0, 0, 0},
8459 {0x8C, 0, 0, 0, 0},
8460 {0x8D, 0, 0, 0, 0},
8461 {0x8E, 0, 0, 0, 0},
8462 {0x8F, 0, 0, 0, 0},
8463 {0x90, 0, 0, 0, 0},
8464 {0x91, 0, 0, 0, 0},
8465 {0x92, 0, 0, 0, 0},
8466 {0x93, 0, 0, 0, 0},
8467 {0x94, 0, 0, 0, 0},
8468 {0xFFFF, 0, 0, 0, 0}
8469 };
8470
8471 static struct radio_regs regs_SYN_2056_A1[] = {
8472 {0x02, 0, 0, 0, 0},
8473 {0x03, 0, 0, 0, 0},
8474 {0x04, 0, 0, 0, 0},
8475 {0x05, 0, 0, 0, 0},
8476 {0x06, 0, 0, 0, 0},
8477 {0x07, 0, 0, 0, 0},
8478 {0x08, 0, 0, 0, 0},
8479 {0x09, 0x1, 0x1, 0, 0},
8480 {0x0A, 0, 0, 0, 0},
8481 {0x0B, 0, 0, 0, 0},
8482 {0x0C, 0, 0, 0, 0},
8483 {0x0D, 0, 0, 0, 0},
8484 {0x0E, 0, 0, 0, 0},
8485 {0x0F, 0, 0, 0, 0},
8486 {0x10, 0, 0, 0, 0},
8487 {0x11, 0, 0, 0, 0},
8488 {0x12, 0, 0, 0, 0},
8489 {0x13, 0, 0, 0, 0},
8490 {0x14, 0, 0, 0, 0},
8491 {0x15, 0, 0, 0, 0},
8492 {0x16, 0, 0, 0, 0},
8493 {0x17, 0, 0, 0, 0},
8494 {0x18, 0, 0, 0, 0},
8495 {0x19, 0, 0, 0, 0},
8496 {0x1A, 0, 0, 0, 0},
8497 {0x1B, 0, 0, 0, 0},
8498 {0x1C, 0, 0, 0, 0},
8499 {0x1D, 0, 0, 0, 0},
8500 {0x1E, 0, 0, 0, 0},
8501 {0x1F, 0, 0, 0, 0},
8502 {0x20, 0, 0, 0, 0},
8503 {0x21, 0, 0, 0, 0},
8504 {0x22, 0x60, 0x60, 0, 0},
8505 {0x23, 0x6, 0x6, 0, 0},
8506 {0x24, 0xc, 0xc, 0, 0},
8507 {0x25, 0, 0, 0, 0},
8508 {0x26, 0, 0, 0, 0},
8509 {0x27, 0, 0, 0, 0},
8510 {0x28, 0x1, 0x1, 0, 0},
8511 {0x29, 0, 0, 0, 0},
8512 {0x2A, 0, 0, 0, 0},
8513 {0x2B, 0, 0, 0, 0},
8514 {0x2C, 0, 0, 0, 0},
8515 {0x2D, 0, 0, 0, 0},
8516 {0x2E, 0xd, 0xd, 0, 0},
8517 {0x2F, 0x1f, 0x1f, 0, 0},
8518 {0x30, 0x15, 0x15, 0, 0},
8519 {0x31, 0xf, 0xf, 0, 0},
8520 {0x32, 0, 0, 0, 0},
8521 {0x33, 0, 0, 0, 0},
8522 {0x34, 0, 0, 0, 0},
8523 {0x35, 0, 0, 0, 0},
8524 {0x36, 0, 0, 0, 0},
8525 {0x37, 0, 0, 0, 0},
8526 {0x38, 0, 0, 0, 0},
8527 {0x39, 0, 0, 0, 0},
8528 {0x3A, 0, 0, 0, 0},
8529 {0x3B, 0, 0, 0, 0},
8530 {0x3C, 0x13, 0x13, 0, 0},
8531 {0x3D, 0xf, 0xf, 0, 0},
8532 {0x3E, 0x18, 0x18, 0, 0},
8533 {0x3F, 0, 0, 0, 0},
8534 {0x40, 0, 0, 0, 0},
8535 {0x41, 0x20, 0x20, 0, 0},
8536 {0x42, 0x20, 0x20, 0, 0},
8537 {0x43, 0, 0, 0, 0},
8538 {0x44, 0x77, 0x77, 0, 0},
8539 {0x45, 0x7, 0x7, 0, 0},
8540 {0x46, 0x1, 0x1, 0, 0},
8541 {0x47, 0x4, 0x4, 0, 0},
8542 {0x48, 0xf, 0xf, 0, 0},
8543 {0x49, 0x30, 0x30, 0, 0},
8544 {0x4A, 0x32, 0x32, 0, 0},
8545 {0x4B, 0xd, 0xd, 0, 0},
8546 {0x4C, 0xd, 0xd, 0, 0},
8547 {0x4D, 0x4, 0x4, 0, 0},
8548 {0x4E, 0x6, 0x6, 0, 0},
8549 {0x4F, 0x1, 0x1, 0, 0},
8550 {0x50, 0x1c, 0x1c, 0, 0},
8551 {0x51, 0x2, 0x2, 0, 0},
8552 {0x52, 0x2, 0x2, 0, 0},
8553 {0x53, 0xf7, 0xf7, 1, 1},
8554 {0x54, 0xb4, 0xb4, 0, 0},
8555 {0x55, 0xd2, 0xd2, 0, 0},
8556 {0x56, 0, 0, 0, 0},
8557 {0x57, 0, 0, 0, 0},
8558 {0x58, 0x4, 0x4, 0, 0},
8559 {0x59, 0x96, 0x96, 0, 0},
8560 {0x5A, 0x3e, 0x3e, 0, 0},
8561 {0x5B, 0x3e, 0x3e, 0, 0},
8562 {0x5C, 0x13, 0x13, 0, 0},
8563 {0x5D, 0x2, 0x2, 0, 0},
8564 {0x5E, 0, 0, 0, 0},
8565 {0x5F, 0x7, 0x7, 0, 0},
8566 {0x60, 0x7, 0x7, 1, 1},
8567 {0x61, 0x8, 0x8, 0, 0},
8568 {0x62, 0x3, 0x3, 0, 0},
8569 {0x63, 0, 0, 0, 0},
8570 {0x64, 0, 0, 0, 0},
8571 {0x65, 0, 0, 0, 0},
8572 {0x66, 0, 0, 0, 0},
8573 {0x67, 0, 0, 0, 0},
8574 {0x68, 0x40, 0x40, 0, 0},
8575 {0x69, 0, 0, 0, 0},
8576 {0x6A, 0, 0, 0, 0},
8577 {0x6B, 0, 0, 0, 0},
8578 {0x6C, 0, 0, 0, 0},
8579 {0x6D, 0x1, 0x1, 0, 0},
8580 {0x6E, 0, 0, 0, 0},
8581 {0x6F, 0, 0, 0, 0},
8582 {0x70, 0x60, 0x60, 0, 0},
8583 {0x71, 0x66, 0x66, 0, 0},
8584 {0x72, 0xc, 0xc, 0, 0},
8585 {0x73, 0x66, 0x66, 0, 0},
8586 {0x74, 0x8f, 0x8f, 1, 1},
8587 {0x75, 0, 0, 0, 0},
8588 {0x76, 0xcc, 0xcc, 0, 0},
8589 {0x77, 0x1, 0x1, 0, 0},
8590 {0x78, 0x66, 0x66, 0, 0},
8591 {0x79, 0x66, 0x66, 0, 0},
8592 {0x7A, 0, 0, 0, 0},
8593 {0x7B, 0, 0, 0, 0},
8594 {0x7C, 0, 0, 0, 0},
8595 {0x7D, 0, 0, 0, 0},
8596 {0x7E, 0, 0, 0, 0},
8597 {0x7F, 0, 0, 0, 0},
8598 {0x80, 0, 0, 0, 0},
8599 {0x81, 0, 0, 0, 0},
8600 {0x82, 0, 0, 0, 0},
8601 {0x83, 0, 0, 0, 0},
8602 {0x84, 0, 0, 0, 0},
8603 {0x85, 0xff, 0xff, 0, 0},
8604 {0x86, 0, 0, 0, 0},
8605 {0x87, 0, 0, 0, 0},
8606 {0x88, 0, 0, 0, 0},
8607 {0x89, 0, 0, 0, 0},
8608 {0x8A, 0, 0, 0, 0},
8609 {0x8B, 0, 0, 0, 0},
8610 {0x8C, 0, 0, 0, 0},
8611 {0x8D, 0, 0, 0, 0},
8612 {0x8E, 0, 0, 0, 0},
8613 {0x8F, 0, 0, 0, 0},
8614 {0x90, 0, 0, 0, 0},
8615 {0x91, 0, 0, 0, 0},
8616 {0x92, 0, 0, 0, 0},
8617 {0x93, 0, 0, 0, 0},
8618 {0x94, 0, 0, 0, 0},
8619 {0x95, 0, 0, 0, 0},
8620 {0x96, 0, 0, 0, 0},
8621 {0x97, 0, 0, 0, 0},
8622 {0x98, 0, 0, 0, 0},
8623 {0x99, 0, 0, 0, 0},
8624 {0x9A, 0, 0, 0, 0},
8625 {0x9B, 0, 0, 0, 0},
8626 {0x9C, 0, 0, 0, 0},
8627 {0x9D, 0, 0, 0, 0},
8628 {0x9E, 0, 0, 0, 0},
8629 {0x9F, 0x6, 0x6, 0, 0},
8630 {0xA0, 0x66, 0x66, 0, 0},
8631 {0xA1, 0x66, 0x66, 0, 0},
8632 {0xA2, 0x66, 0x66, 0, 0},
8633 {0xA3, 0x66, 0x66, 0, 0},
8634 {0xA4, 0x66, 0x66, 0, 0},
8635 {0xA5, 0x66, 0x66, 0, 0},
8636 {0xA6, 0x66, 0x66, 0, 0},
8637 {0xA7, 0x66, 0x66, 0, 0},
8638 {0xA8, 0x66, 0x66, 0, 0},
8639 {0xA9, 0x66, 0x66, 0, 0},
8640 {0xAA, 0x66, 0x66, 0, 0},
8641 {0xAB, 0x66, 0x66, 0, 0},
8642 {0xAC, 0x66, 0x66, 0, 0},
8643 {0xAD, 0x66, 0x66, 0, 0},
8644 {0xAE, 0x66, 0x66, 0, 0},
8645 {0xAF, 0x66, 0x66, 0, 0},
8646 {0xB0, 0x66, 0x66, 0, 0},
8647 {0xB1, 0x66, 0x66, 0, 0},
8648 {0xB2, 0x66, 0x66, 0, 0},
8649 {0xB3, 0xa, 0xa, 0, 0},
8650 {0xB4, 0, 0, 0, 0},
8651 {0xB5, 0, 0, 0, 0},
8652 {0xB6, 0, 0, 0, 0},
8653 {0xFFFF, 0, 0, 0, 0}
8654 };
8655
8656 static struct radio_regs regs_TX_2056_A1[] = {
8657 {0x02, 0, 0, 0, 0},
8658 {0x03, 0, 0, 0, 0},
8659 {0x04, 0, 0, 0, 0},
8660 {0x05, 0, 0, 0, 0},
8661 {0x06, 0, 0, 0, 0},
8662 {0x07, 0, 0, 0, 0},
8663 {0x08, 0, 0, 0, 0},
8664 {0x09, 0, 0, 0, 0},
8665 {0x0A, 0, 0, 0, 0},
8666 {0x0B, 0, 0, 0, 0},
8667 {0x0C, 0, 0, 0, 0},
8668 {0x0D, 0, 0, 0, 0},
8669 {0x0E, 0, 0, 0, 0},
8670 {0x0F, 0, 0, 0, 0},
8671 {0x10, 0, 0, 0, 0},
8672 {0x11, 0, 0, 0, 0},
8673 {0x12, 0, 0, 0, 0},
8674 {0x13, 0, 0, 0, 0},
8675 {0x14, 0, 0, 0, 0},
8676 {0x15, 0, 0, 0, 0},
8677 {0x16, 0, 0, 0, 0},
8678 {0x17, 0, 0, 0, 0},
8679 {0x18, 0, 0, 0, 0},
8680 {0x19, 0, 0, 0, 0},
8681 {0x1A, 0, 0, 0, 0},
8682 {0x1B, 0, 0, 0, 0},
8683 {0x1C, 0, 0, 0, 0},
8684 {0x1D, 0, 0, 0, 0},
8685 {0x1E, 0, 0, 0, 0},
8686 {0x1F, 0, 0, 0, 0},
8687 {0x20, 0, 0, 0, 0},
8688 {0x21, 0x88, 0x88, 0, 0},
8689 {0x22, 0x88, 0x88, 0, 0},
8690 {0x23, 0x88, 0x88, 0, 0},
8691 {0x24, 0x88, 0x88, 0, 0},
8692 {0x25, 0xc, 0xc, 0, 0},
8693 {0x26, 0, 0, 0, 0},
8694 {0x27, 0x3, 0x3, 0, 0},
8695 {0x28, 0, 0, 0, 0},
8696 {0x29, 0x3, 0x3, 0, 0},
8697 {0x2A, 0x37, 0x37, 0, 0},
8698 {0x2B, 0x3, 0x3, 0, 0},
8699 {0x2C, 0, 0, 0, 0},
8700 {0x2D, 0, 0, 0, 0},
8701 {0x2E, 0x1, 0x1, 0, 0},
8702 {0x2F, 0x1, 0x1, 0, 0},
8703 {0x30, 0, 0, 0, 0},
8704 {0x31, 0, 0, 0, 0},
8705 {0x32, 0, 0, 0, 0},
8706 {0x33, 0x11, 0x11, 0, 0},
8707 {0x34, 0x11, 0x11, 0, 0},
8708 {0x35, 0, 0, 0, 0},
8709 {0x36, 0, 0, 0, 0},
8710 {0x37, 0x3, 0x3, 0, 0},
8711 {0x38, 0xf, 0xf, 0, 0},
8712 {0x39, 0, 0, 0, 0},
8713 {0x3A, 0x2d, 0x2d, 0, 0},
8714 {0x3B, 0, 0, 0, 0},
8715 {0x3C, 0x6e, 0x6e, 0, 0},
8716 {0x3D, 0xf0, 0xf0, 1, 1},
8717 {0x3E, 0, 0, 0, 0},
8718 {0x3F, 0, 0, 0, 0},
8719 {0x40, 0, 0, 0, 0},
8720 {0x41, 0x3, 0x3, 0, 0},
8721 {0x42, 0x3, 0x3, 0, 0},
8722 {0x43, 0, 0, 0, 0},
8723 {0x44, 0x1e, 0x1e, 0, 0},
8724 {0x45, 0, 0, 0, 0},
8725 {0x46, 0x6e, 0x6e, 0, 0},
8726 {0x47, 0xf0, 0xf0, 1, 1},
8727 {0x48, 0, 0, 0, 0},
8728 {0x49, 0x2, 0x2, 0, 0},
8729 {0x4A, 0xff, 0xff, 1, 1},
8730 {0x4B, 0xc, 0xc, 0, 0},
8731 {0x4C, 0, 0, 0, 0},
8732 {0x4D, 0x38, 0x38, 0, 0},
8733 {0x4E, 0x70, 0x70, 1, 1},
8734 {0x4F, 0x2, 0x2, 0, 0},
8735 {0x50, 0x88, 0x88, 0, 0},
8736 {0x51, 0xc, 0xc, 0, 0},
8737 {0x52, 0, 0, 0, 0},
8738 {0x53, 0x8, 0x8, 0, 0},
8739 {0x54, 0x70, 0x70, 1, 1},
8740 {0x55, 0x2, 0x2, 0, 0},
8741 {0x56, 0xff, 0xff, 1, 1},
8742 {0x57, 0, 0, 0, 0},
8743 {0x58, 0x83, 0x83, 0, 0},
8744 {0x59, 0x77, 0x77, 1, 1},
8745 {0x5A, 0, 0, 0, 0},
8746 {0x5B, 0x2, 0x2, 0, 0},
8747 {0x5C, 0x88, 0x88, 0, 0},
8748 {0x5D, 0, 0, 0, 0},
8749 {0x5E, 0x8, 0x8, 0, 0},
8750 {0x5F, 0x77, 0x77, 1, 1},
8751 {0x60, 0x1, 0x1, 0, 0},
8752 {0x61, 0, 0, 0, 0},
8753 {0x62, 0x7, 0x7, 0, 0},
8754 {0x63, 0, 0, 0, 0},
8755 {0x64, 0x7, 0x7, 0, 0},
8756 {0x65, 0, 0, 0, 0},
8757 {0x66, 0, 0, 0, 0},
8758 {0x67, 0x72, 0x72, 1, 1},
8759 {0x68, 0, 0, 0, 0},
8760 {0x69, 0xa, 0xa, 0, 0},
8761 {0x6A, 0, 0, 0, 0},
8762 {0x6B, 0, 0, 0, 0},
8763 {0x6C, 0, 0, 0, 0},
8764 {0x6D, 0, 0, 0, 0},
8765 {0x6E, 0, 0, 0, 0},
8766 {0x6F, 0, 0, 0, 0},
8767 {0x70, 0, 0, 0, 0},
8768 {0x71, 0x2, 0x2, 0, 0},
8769 {0x72, 0, 0, 0, 0},
8770 {0x73, 0, 0, 0, 0},
8771 {0x74, 0xe, 0xe, 0, 0},
8772 {0x75, 0xe, 0xe, 0, 0},
8773 {0x76, 0xe, 0xe, 0, 0},
8774 {0x77, 0x13, 0x13, 0, 0},
8775 {0x78, 0x13, 0x13, 0, 0},
8776 {0x79, 0x1b, 0x1b, 0, 0},
8777 {0x7A, 0x1b, 0x1b, 0, 0},
8778 {0x7B, 0x55, 0x55, 0, 0},
8779 {0x7C, 0x5b, 0x5b, 0, 0},
8780 {0x7D, 0, 0, 0, 0},
8781 {0x7E, 0, 0, 0, 0},
8782 {0x7F, 0, 0, 0, 0},
8783 {0x80, 0, 0, 0, 0},
8784 {0x81, 0, 0, 0, 0},
8785 {0x82, 0, 0, 0, 0},
8786 {0x83, 0, 0, 0, 0},
8787 {0x84, 0, 0, 0, 0},
8788 {0x85, 0, 0, 0, 0},
8789 {0x86, 0, 0, 0, 0},
8790 {0x87, 0, 0, 0, 0},
8791 {0x88, 0, 0, 0, 0},
8792 {0x89, 0, 0, 0, 0},
8793 {0x8A, 0, 0, 0, 0},
8794 {0x8B, 0, 0, 0, 0},
8795 {0x8C, 0, 0, 0, 0},
8796 {0x8D, 0, 0, 0, 0},
8797 {0x8E, 0, 0, 0, 0},
8798 {0x8F, 0, 0, 0, 0},
8799 {0x90, 0, 0, 0, 0},
8800 {0x91, 0, 0, 0, 0},
8801 {0x92, 0, 0, 0, 0},
8802 {0xFFFF, 0, 0, 0, 0}
8803 };
8804
8805 static struct radio_regs regs_RX_2056_A1[] = {
8806 {0x02, 0, 0, 0, 0},
8807 {0x03, 0, 0, 0, 0},
8808 {0x04, 0, 0, 0, 0},
8809 {0x05, 0, 0, 0, 0},
8810 {0x06, 0, 0, 0, 0},
8811 {0x07, 0, 0, 0, 0},
8812 {0x08, 0, 0, 0, 0},
8813 {0x09, 0, 0, 0, 0},
8814 {0x0A, 0, 0, 0, 0},
8815 {0x0B, 0, 0, 0, 0},
8816 {0x0C, 0, 0, 0, 0},
8817 {0x0D, 0, 0, 0, 0},
8818 {0x0E, 0, 0, 0, 0},
8819 {0x0F, 0, 0, 0, 0},
8820 {0x10, 0, 0, 0, 0},
8821 {0x11, 0, 0, 0, 0},
8822 {0x12, 0, 0, 0, 0},
8823 {0x13, 0, 0, 0, 0},
8824 {0x14, 0, 0, 0, 0},
8825 {0x15, 0, 0, 0, 0},
8826 {0x16, 0, 0, 0, 0},
8827 {0x17, 0, 0, 0, 0},
8828 {0x18, 0, 0, 0, 0},
8829 {0x19, 0, 0, 0, 0},
8830 {0x1A, 0, 0, 0, 0},
8831 {0x1B, 0, 0, 0, 0},
8832 {0x1C, 0, 0, 0, 0},
8833 {0x1D, 0, 0, 0, 0},
8834 {0x1E, 0, 0, 0, 0},
8835 {0x1F, 0, 0, 0, 0},
8836 {0x20, 0x3, 0x3, 0, 0},
8837 {0x21, 0, 0, 0, 0},
8838 {0x22, 0, 0, 0, 0},
8839 {0x23, 0x90, 0x90, 0, 0},
8840 {0x24, 0x55, 0x55, 0, 0},
8841 {0x25, 0x15, 0x15, 0, 0},
8842 {0x26, 0x5, 0x5, 0, 0},
8843 {0x27, 0x15, 0x15, 0, 0},
8844 {0x28, 0x5, 0x5, 0, 0},
8845 {0x29, 0x20, 0x20, 0, 0},
8846 {0x2A, 0x11, 0x11, 0, 0},
8847 {0x2B, 0x90, 0x90, 0, 0},
8848 {0x2C, 0, 0, 0, 0},
8849 {0x2D, 0x88, 0x88, 0, 0},
8850 {0x2E, 0x32, 0x32, 0, 0},
8851 {0x2F, 0x77, 0x77, 0, 0},
8852 {0x30, 0x17, 0x17, 1, 1},
8853 {0x31, 0xff, 0xff, 1, 1},
8854 {0x32, 0x20, 0x20, 0, 0},
8855 {0x33, 0, 0, 0, 0},
8856 {0x34, 0x88, 0x88, 0, 0},
8857 {0x35, 0x32, 0x32, 0, 0},
8858 {0x36, 0x77, 0x77, 0, 0},
8859 {0x37, 0x17, 0x17, 1, 1},
8860 {0x38, 0xf0, 0xf0, 1, 1},
8861 {0x39, 0x20, 0x20, 0, 0},
8862 {0x3A, 0x8, 0x8, 0, 0},
8863 {0x3B, 0x55, 0x55, 1, 1},
8864 {0x3C, 0, 0, 0, 0},
8865 {0x3D, 0x44, 0x44, 1, 1},
8866 {0x3E, 0, 0, 0, 0},
8867 {0x3F, 0x44, 0x44, 0, 0},
8868 {0x40, 0xf, 0xf, 1, 1},
8869 {0x41, 0x6, 0x6, 0, 0},
8870 {0x42, 0x4, 0x4, 0, 0},
8871 {0x43, 0x50, 0x50, 1, 1},
8872 {0x44, 0x8, 0x8, 0, 0},
8873 {0x45, 0x55, 0x55, 1, 1},
8874 {0x46, 0, 0, 0, 0},
8875 {0x47, 0x11, 0x11, 0, 0},
8876 {0x48, 0, 0, 0, 0},
8877 {0x49, 0x44, 0x44, 0, 0},
8878 {0x4A, 0x7, 0x7, 0, 0},
8879 {0x4B, 0x6, 0x6, 0, 0},
8880 {0x4C, 0x4, 0x4, 0, 0},
8881 {0x4D, 0, 0, 0, 0},
8882 {0x4E, 0, 0, 0, 0},
8883 {0x4F, 0x26, 0x26, 1, 1},
8884 {0x50, 0x26, 0x26, 1, 1},
8885 {0x51, 0xf, 0xf, 1, 1},
8886 {0x52, 0xf, 0xf, 1, 1},
8887 {0x53, 0x44, 0x44, 0, 0},
8888 {0x54, 0, 0, 0, 0},
8889 {0x55, 0, 0, 0, 0},
8890 {0x56, 0x8, 0x8, 0, 0},
8891 {0x57, 0x8, 0x8, 0, 0},
8892 {0x58, 0x7, 0x7, 0, 0},
8893 {0x59, 0x22, 0x22, 0, 0},
8894 {0x5A, 0x22, 0x22, 0, 0},
8895 {0x5B, 0x2, 0x2, 0, 0},
8896 {0x5C, 0x2f, 0x2f, 1, 1},
8897 {0x5D, 0x7, 0x7, 0, 0},
8898 {0x5E, 0x55, 0x55, 0, 0},
8899 {0x5F, 0x23, 0x23, 0, 0},
8900 {0x60, 0x41, 0x41, 0, 0},
8901 {0x61, 0x1, 0x1, 0, 0},
8902 {0x62, 0xa, 0xa, 0, 0},
8903 {0x63, 0, 0, 0, 0},
8904 {0x64, 0, 0, 0, 0},
8905 {0x65, 0, 0, 0, 0},
8906 {0x66, 0, 0, 0, 0},
8907 {0x67, 0, 0, 0, 0},
8908 {0x68, 0, 0, 0, 0},
8909 {0x69, 0, 0, 0, 0},
8910 {0x6A, 0, 0, 0, 0},
8911 {0x6B, 0xc, 0xc, 0, 0},
8912 {0x6C, 0, 0, 0, 0},
8913 {0x6D, 0, 0, 0, 0},
8914 {0x6E, 0, 0, 0, 0},
8915 {0x6F, 0, 0, 0, 0},
8916 {0x70, 0, 0, 0, 0},
8917 {0x71, 0, 0, 0, 0},
8918 {0x72, 0x22, 0x22, 0, 0},
8919 {0x73, 0x22, 0x22, 0, 0},
8920 {0x74, 0, 0, 1, 1},
8921 {0x75, 0xa, 0xa, 0, 0},
8922 {0x76, 0x1, 0x1, 0, 0},
8923 {0x77, 0x22, 0x22, 0, 0},
8924 {0x78, 0x30, 0x30, 0, 0},
8925 {0x79, 0, 0, 0, 0},
8926 {0x7A, 0, 0, 0, 0},
8927 {0x7B, 0, 0, 0, 0},
8928 {0x7C, 0, 0, 0, 0},
8929 {0x7D, 0, 0, 0, 0},
8930 {0x7E, 0, 0, 0, 0},
8931 {0x7F, 0, 0, 0, 0},
8932 {0x80, 0, 0, 0, 0},
8933 {0x81, 0, 0, 0, 0},
8934 {0x82, 0, 0, 0, 0},
8935 {0x83, 0, 0, 0, 0},
8936 {0x84, 0, 0, 0, 0},
8937 {0x85, 0, 0, 0, 0},
8938 {0x86, 0, 0, 0, 0},
8939 {0x87, 0, 0, 0, 0},
8940 {0x88, 0, 0, 0, 0},
8941 {0x89, 0, 0, 0, 0},
8942 {0x8A, 0, 0, 0, 0},
8943 {0x8B, 0, 0, 0, 0},
8944 {0x8C, 0, 0, 0, 0},
8945 {0x8D, 0, 0, 0, 0},
8946 {0x8E, 0, 0, 0, 0},
8947 {0x8F, 0, 0, 0, 0},
8948 {0x90, 0, 0, 0, 0},
8949 {0x91, 0, 0, 0, 0},
8950 {0x92, 0, 0, 0, 0},
8951 {0x93, 0, 0, 0, 0},
8952 {0x94, 0, 0, 0, 0},
8953 {0xFFFF, 0, 0, 0, 0}
8954 };
8955
8956 static struct radio_regs regs_SYN_2056_rev5[] = {
8957 {0x02, 0, 0, 0, 0},
8958 {0x03, 0, 0, 0, 0},
8959 {0x04, 0, 0, 0, 0},
8960 {0x05, 0, 0, 0, 0},
8961 {0x06, 0, 0, 0, 0},
8962 {0x07, 0, 0, 0, 0},
8963 {0x08, 0, 0, 0, 0},
8964 {0x09, 0x1, 0x1, 0, 0},
8965 {0x0A, 0, 0, 0, 0},
8966 {0x0B, 0, 0, 0, 0},
8967 {0x0C, 0, 0, 0, 0},
8968 {0x0D, 0, 0, 0, 0},
8969 {0x0E, 0, 0, 0, 0},
8970 {0x0F, 0, 0, 0, 0},
8971 {0x10, 0, 0, 0, 0},
8972 {0x11, 0, 0, 0, 0},
8973 {0x12, 0, 0, 0, 0},
8974 {0x13, 0, 0, 0, 0},
8975 {0x14, 0, 0, 0, 0},
8976 {0x15, 0, 0, 0, 0},
8977 {0x16, 0, 0, 0, 0},
8978 {0x17, 0, 0, 0, 0},
8979 {0x18, 0, 0, 0, 0},
8980 {0x19, 0, 0, 0, 0},
8981 {0x1A, 0, 0, 0, 0},
8982 {0x1B, 0, 0, 0, 0},
8983 {0x1C, 0, 0, 0, 0},
8984 {0x1D, 0, 0, 0, 0},
8985 {0x1E, 0, 0, 0, 0},
8986 {0x1F, 0, 0, 0, 0},
8987 {0x20, 0, 0, 0, 0},
8988 {0x21, 0, 0, 0, 0},
8989 {0x22, 0x60, 0x60, 0, 0},
8990 {0x23, 0x6, 0x6, 0, 0},
8991 {0x24, 0xc, 0xc, 0, 0},
8992 {0x25, 0, 0, 0, 0},
8993 {0x26, 0, 0, 0, 0},
8994 {0x27, 0, 0, 0, 0},
8995 {0x28, 0x1, 0x1, 0, 0},
8996 {0x29, 0, 0, 0, 0},
8997 {0x2A, 0, 0, 0, 0},
8998 {0x2B, 0, 0, 0, 0},
8999 {0x2C, 0, 0, 0, 0},
9000 {0x2D, 0, 0, 0, 0},
9001 {0x2E, 0, 0, 0, 0},
9002 {0x2F, 0x1f, 0x1f, 0, 0},
9003 {0x30, 0x15, 0x15, 0, 0},
9004 {0x31, 0xf, 0xf, 0, 0},
9005 {0x32, 0, 0, 0, 0},
9006 {0x33, 0, 0, 0, 0},
9007 {0x34, 0, 0, 0, 0},
9008 {0x35, 0, 0, 0, 0},
9009 {0x36, 0, 0, 0, 0},
9010 {0x37, 0, 0, 0, 0},
9011 {0x38, 0, 0, 0, 0},
9012 {0x39, 0, 0, 0, 0},
9013 {0x3A, 0, 0, 0, 0},
9014 {0x3B, 0, 0, 0, 0},
9015 {0x3C, 0x13, 0x13, 0, 0},
9016 {0x3D, 0xf, 0xf, 0, 0},
9017 {0x3E, 0x18, 0x18, 0, 0},
9018 {0x3F, 0, 0, 0, 0},
9019 {0x40, 0, 0, 0, 0},
9020 {0x41, 0x20, 0x20, 0, 0},
9021 {0x42, 0x20, 0x20, 0, 0},
9022 {0x43, 0, 0, 0, 0},
9023 {0x44, 0x77, 0x77, 0, 0},
9024 {0x45, 0x7, 0x7, 0, 0},
9025 {0x46, 0x1, 0x1, 0, 0},
9026 {0x47, 0x4, 0x4, 0, 0},
9027 {0x48, 0xf, 0xf, 0, 0},
9028 {0x49, 0x30, 0x30, 0, 0},
9029 {0x4A, 0x32, 0x32, 0, 0},
9030 {0x4B, 0xd, 0xd, 0, 0},
9031 {0x4C, 0xd, 0xd, 0, 0},
9032 {0x4D, 0x4, 0x4, 0, 0},
9033 {0x4E, 0x6, 0x6, 0, 0},
9034 {0x4F, 0x1, 0x1, 0, 0},
9035 {0x50, 0x1c, 0x1c, 0, 0},
9036 {0x51, 0x2, 0x2, 0, 0},
9037 {0x52, 0x2, 0x2, 0, 0},
9038 {0x53, 0xf7, 0xf7, 1, 1},
9039 {0x54, 0xb4, 0xb4, 0, 0},
9040 {0x55, 0xd2, 0xd2, 0, 0},
9041 {0x56, 0, 0, 0, 0},
9042 {0x57, 0, 0, 0, 0},
9043 {0x58, 0x4, 0x4, 0, 0},
9044 {0x59, 0x96, 0x96, 0, 0},
9045 {0x5A, 0x3e, 0x3e, 0, 0},
9046 {0x5B, 0x3e, 0x3e, 0, 0},
9047 {0x5C, 0x13, 0x13, 0, 0},
9048 {0x5D, 0x2, 0x2, 0, 0},
9049 {0x5E, 0, 0, 0, 0},
9050 {0x5F, 0x7, 0x7, 0, 0},
9051 {0x60, 0x7, 0x7, 1, 1},
9052 {0x61, 0x8, 0x8, 0, 0},
9053 {0x62, 0x3, 0x3, 0, 0},
9054 {0x63, 0, 0, 0, 0},
9055 {0x64, 0, 0, 0, 0},
9056 {0x65, 0, 0, 0, 0},
9057 {0x66, 0, 0, 0, 0},
9058 {0x67, 0, 0, 0, 0},
9059 {0x68, 0x40, 0x40, 0, 0},
9060 {0x69, 0, 0, 0, 0},
9061 {0x6A, 0, 0, 0, 0},
9062 {0x6B, 0, 0, 0, 0},
9063 {0x6C, 0, 0, 0, 0},
9064 {0x6D, 0x1, 0x1, 0, 0},
9065 {0x6E, 0, 0, 0, 0},
9066 {0x6F, 0, 0, 0, 0},
9067 {0x70, 0x60, 0x60, 0, 0},
9068 {0x71, 0x66, 0x66, 0, 0},
9069 {0x72, 0xc, 0xc, 0, 0},
9070 {0x73, 0x66, 0x66, 0, 0},
9071 {0x74, 0x8f, 0x8f, 1, 1},
9072 {0x75, 0, 0, 0, 0},
9073 {0x76, 0xcc, 0xcc, 0, 0},
9074 {0x77, 0x1, 0x1, 0, 0},
9075 {0x78, 0x66, 0x66, 0, 0},
9076 {0x79, 0x66, 0x66, 0, 0},
9077 {0x7A, 0, 0, 0, 0},
9078 {0x7B, 0, 0, 0, 0},
9079 {0x7C, 0, 0, 0, 0},
9080 {0x7D, 0, 0, 0, 0},
9081 {0x7E, 0, 0, 0, 0},
9082 {0x7F, 0, 0, 0, 0},
9083 {0x80, 0, 0, 0, 0},
9084 {0x81, 0, 0, 0, 0},
9085 {0x82, 0, 0, 0, 0},
9086 {0x83, 0, 0, 0, 0},
9087 {0x84, 0, 0, 0, 0},
9088 {0x85, 0xff, 0xff, 0, 0},
9089 {0x86, 0, 0, 0, 0},
9090 {0x87, 0, 0, 0, 0},
9091 {0x88, 0, 0, 0, 0},
9092 {0x89, 0, 0, 0, 0},
9093 {0x8A, 0, 0, 0, 0},
9094 {0x8B, 0, 0, 0, 0},
9095 {0x8C, 0, 0, 0, 0},
9096 {0x8D, 0, 0, 0, 0},
9097 {0x8E, 0, 0, 0, 0},
9098 {0x8F, 0, 0, 0, 0},
9099 {0x90, 0, 0, 0, 0},
9100 {0x91, 0, 0, 0, 0},
9101 {0x92, 0, 0, 0, 0},
9102 {0x93, 0, 0, 0, 0},
9103 {0x94, 0, 0, 0, 0},
9104 {0x95, 0, 0, 0, 0},
9105 {0x96, 0, 0, 0, 0},
9106 {0x97, 0, 0, 0, 0},
9107 {0x98, 0, 0, 0, 0},
9108 {0x99, 0, 0, 0, 0},
9109 {0x9A, 0, 0, 0, 0},
9110 {0x9B, 0, 0, 0, 0},
9111 {0x9C, 0, 0, 0, 0},
9112 {0x9D, 0, 0, 0, 0},
9113 {0x9E, 0, 0, 0, 0},
9114 {0x9F, 0x6, 0x6, 0, 0},
9115 {0xA0, 0x66, 0x66, 0, 0},
9116 {0xA1, 0x66, 0x66, 0, 0},
9117 {0xA2, 0x66, 0x66, 0, 0},
9118 {0xA3, 0x66, 0x66, 0, 0},
9119 {0xA4, 0x66, 0x66, 0, 0},
9120 {0xA5, 0x66, 0x66, 0, 0},
9121 {0xA6, 0x66, 0x66, 0, 0},
9122 {0xA7, 0x66, 0x66, 0, 0},
9123 {0xA8, 0x66, 0x66, 0, 0},
9124 {0xA9, 0x66, 0x66, 0, 0},
9125 {0xAA, 0x66, 0x66, 0, 0},
9126 {0xAB, 0x66, 0x66, 0, 0},
9127 {0xAC, 0x66, 0x66, 0, 0},
9128 {0xAD, 0x66, 0x66, 0, 0},
9129 {0xAE, 0x66, 0x66, 0, 0},
9130 {0xAF, 0x66, 0x66, 0, 0},
9131 {0xB0, 0x66, 0x66, 0, 0},
9132 {0xB1, 0x66, 0x66, 0, 0},
9133 {0xB2, 0x66, 0x66, 0, 0},
9134 {0xB3, 0xa, 0xa, 0, 0},
9135 {0xB4, 0, 0, 0, 0},
9136 {0xB5, 0, 0, 0, 0},
9137 {0xB6, 0, 0, 0, 0},
9138 {0xFFFF, 0, 0, 0, 0}
9139 };
9140
9141 static struct radio_regs regs_TX_2056_rev5[] = {
9142 {0x02, 0, 0, 0, 0},
9143 {0x03, 0, 0, 0, 0},
9144 {0x04, 0, 0, 0, 0},
9145 {0x05, 0, 0, 0, 0},
9146 {0x06, 0, 0, 0, 0},
9147 {0x07, 0, 0, 0, 0},
9148 {0x08, 0, 0, 0, 0},
9149 {0x09, 0, 0, 0, 0},
9150 {0x0A, 0, 0, 0, 0},
9151 {0x0B, 0, 0, 0, 0},
9152 {0x0C, 0, 0, 0, 0},
9153 {0x0D, 0, 0, 0, 0},
9154 {0x0E, 0, 0, 0, 0},
9155 {0x0F, 0, 0, 0, 0},
9156 {0x10, 0, 0, 0, 0},
9157 {0x11, 0, 0, 0, 0},
9158 {0x12, 0, 0, 0, 0},
9159 {0x13, 0, 0, 0, 0},
9160 {0x14, 0, 0, 0, 0},
9161 {0x15, 0, 0, 0, 0},
9162 {0x16, 0, 0, 0, 0},
9163 {0x17, 0, 0, 0, 0},
9164 {0x18, 0, 0, 0, 0},
9165 {0x19, 0, 0, 0, 0},
9166 {0x1A, 0, 0, 0, 0},
9167 {0x1B, 0, 0, 0, 0},
9168 {0x1C, 0, 0, 0, 0},
9169 {0x1D, 0, 0, 0, 0},
9170 {0x1E, 0, 0, 0, 0},
9171 {0x1F, 0, 0, 0, 0},
9172 {0x20, 0, 0, 0, 0},
9173 {0x21, 0x88, 0x88, 0, 0},
9174 {0x22, 0x88, 0x88, 0, 0},
9175 {0x23, 0x88, 0x88, 0, 0},
9176 {0x24, 0x88, 0x88, 0, 0},
9177 {0x25, 0xc, 0xc, 0, 0},
9178 {0x26, 0, 0, 0, 0},
9179 {0x27, 0x3, 0x3, 0, 0},
9180 {0x28, 0, 0, 0, 0},
9181 {0x29, 0x3, 0x3, 0, 0},
9182 {0x2A, 0x37, 0x37, 0, 0},
9183 {0x2B, 0x3, 0x3, 0, 0},
9184 {0x2C, 0, 0, 0, 0},
9185 {0x2D, 0, 0, 0, 0},
9186 {0x2E, 0x1, 0x1, 0, 0},
9187 {0x2F, 0x1, 0x1, 0, 0},
9188 {0x30, 0, 0, 0, 0},
9189 {0x31, 0, 0, 0, 0},
9190 {0x32, 0, 0, 0, 0},
9191 {0x33, 0x11, 0x11, 0, 0},
9192 {0x34, 0x11, 0x11, 0, 0},
9193 {0x35, 0, 0, 0, 0},
9194 {0x36, 0, 0, 0, 0},
9195 {0x37, 0x3, 0x3, 0, 0},
9196 {0x38, 0xf, 0xf, 0, 0},
9197 {0x39, 0, 0, 0, 0},
9198 {0x3A, 0x2d, 0x2d, 0, 0},
9199 {0x3B, 0, 0, 0, 0},
9200 {0x3C, 0x6e, 0x6e, 0, 0},
9201 {0x3D, 0xf0, 0xf0, 1, 1},
9202 {0x3E, 0, 0, 0, 0},
9203 {0x3F, 0, 0, 0, 0},
9204 {0x40, 0, 0, 0, 0},
9205 {0x41, 0x3, 0x3, 0, 0},
9206 {0x42, 0x3, 0x3, 0, 0},
9207 {0x43, 0, 0, 0, 0},
9208 {0x44, 0x1e, 0x1e, 0, 0},
9209 {0x45, 0, 0, 0, 0},
9210 {0x46, 0x6e, 0x6e, 0, 0},
9211 {0x47, 0xf0, 0xf0, 1, 1},
9212 {0x48, 0, 0, 0, 0},
9213 {0x49, 0x2, 0x2, 0, 0},
9214 {0x4A, 0xff, 0xff, 1, 1},
9215 {0x4B, 0xc, 0xc, 0, 0},
9216 {0x4C, 0, 0, 0, 0},
9217 {0x4D, 0x38, 0x38, 0, 0},
9218 {0x4E, 0x70, 0x70, 1, 1},
9219 {0x4F, 0x2, 0x2, 0, 0},
9220 {0x50, 0x88, 0x88, 0, 0},
9221 {0x51, 0xc, 0xc, 0, 0},
9222 {0x52, 0, 0, 0, 0},
9223 {0x53, 0x8, 0x8, 0, 0},
9224 {0x54, 0x70, 0x70, 1, 1},
9225 {0x55, 0x2, 0x2, 0, 0},
9226 {0x56, 0xff, 0xff, 1, 1},
9227 {0x57, 0, 0, 0, 0},
9228 {0x58, 0x83, 0x83, 0, 0},
9229 {0x59, 0x77, 0x77, 1, 1},
9230 {0x5A, 0, 0, 0, 0},
9231 {0x5B, 0x2, 0x2, 0, 0},
9232 {0x5C, 0x88, 0x88, 0, 0},
9233 {0x5D, 0, 0, 0, 0},
9234 {0x5E, 0x8, 0x8, 0, 0},
9235 {0x5F, 0x77, 0x77, 1, 1},
9236 {0x60, 0x1, 0x1, 0, 0},
9237 {0x61, 0, 0, 0, 0},
9238 {0x62, 0x7, 0x7, 0, 0},
9239 {0x63, 0, 0, 0, 0},
9240 {0x64, 0x7, 0x7, 0, 0},
9241 {0x65, 0, 0, 0, 0},
9242 {0x66, 0, 0, 0, 0},
9243 {0x67, 0, 0, 1, 1},
9244 {0x68, 0, 0, 0, 0},
9245 {0x69, 0xa, 0xa, 0, 0},
9246 {0x6A, 0, 0, 0, 0},
9247 {0x6B, 0, 0, 0, 0},
9248 {0x6C, 0, 0, 0, 0},
9249 {0x6D, 0, 0, 0, 0},
9250 {0x6E, 0, 0, 0, 0},
9251 {0x6F, 0, 0, 0, 0},
9252 {0x70, 0, 0, 0, 0},
9253 {0x71, 0x2, 0x2, 0, 0},
9254 {0x72, 0, 0, 0, 0},
9255 {0x73, 0, 0, 0, 0},
9256 {0x74, 0xe, 0xe, 0, 0},
9257 {0x75, 0xe, 0xe, 0, 0},
9258 {0x76, 0xe, 0xe, 0, 0},
9259 {0x77, 0x13, 0x13, 0, 0},
9260 {0x78, 0x13, 0x13, 0, 0},
9261 {0x79, 0x1b, 0x1b, 0, 0},
9262 {0x7A, 0x1b, 0x1b, 0, 0},
9263 {0x7B, 0x55, 0x55, 0, 0},
9264 {0x7C, 0x5b, 0x5b, 0, 0},
9265 {0x7D, 0, 0, 0, 0},
9266 {0x7E, 0, 0, 0, 0},
9267 {0x7F, 0, 0, 0, 0},
9268 {0x80, 0, 0, 0, 0},
9269 {0x81, 0, 0, 0, 0},
9270 {0x82, 0, 0, 0, 0},
9271 {0x83, 0, 0, 0, 0},
9272 {0x84, 0, 0, 0, 0},
9273 {0x85, 0, 0, 0, 0},
9274 {0x86, 0, 0, 0, 0},
9275 {0x87, 0, 0, 0, 0},
9276 {0x88, 0, 0, 0, 0},
9277 {0x89, 0, 0, 0, 0},
9278 {0x8A, 0, 0, 0, 0},
9279 {0x8B, 0, 0, 0, 0},
9280 {0x8C, 0, 0, 0, 0},
9281 {0x8D, 0, 0, 0, 0},
9282 {0x8E, 0, 0, 0, 0},
9283 {0x8F, 0, 0, 0, 0},
9284 {0x90, 0, 0, 0, 0},
9285 {0x91, 0, 0, 0, 0},
9286 {0x92, 0, 0, 0, 0},
9287 {0x93, 0x70, 0x70, 0, 0},
9288 {0x94, 0x70, 0x70, 0, 0},
9289 {0x95, 0x71, 0x71, 1, 1},
9290 {0x96, 0x71, 0x71, 1, 1},
9291 {0x97, 0x72, 0x72, 1, 1},
9292 {0x98, 0x73, 0x73, 1, 1},
9293 {0x99, 0x74, 0x74, 1, 1},
9294 {0x9A, 0x75, 0x75, 1, 1},
9295 {0xFFFF, 0, 0, 0, 0}
9296 };
9297
9298 static struct radio_regs regs_RX_2056_rev5[] = {
9299 {0x02, 0, 0, 0, 0},
9300 {0x03, 0, 0, 0, 0},
9301 {0x04, 0, 0, 0, 0},
9302 {0x05, 0, 0, 0, 0},
9303 {0x06, 0, 0, 0, 0},
9304 {0x07, 0, 0, 0, 0},
9305 {0x08, 0, 0, 0, 0},
9306 {0x09, 0, 0, 0, 0},
9307 {0x0A, 0, 0, 0, 0},
9308 {0x0B, 0, 0, 0, 0},
9309 {0x0C, 0, 0, 0, 0},
9310 {0x0D, 0, 0, 0, 0},
9311 {0x0E, 0, 0, 0, 0},
9312 {0x0F, 0, 0, 0, 0},
9313 {0x10, 0, 0, 0, 0},
9314 {0x11, 0, 0, 0, 0},
9315 {0x12, 0, 0, 0, 0},
9316 {0x13, 0, 0, 0, 0},
9317 {0x14, 0, 0, 0, 0},
9318 {0x15, 0, 0, 0, 0},
9319 {0x16, 0, 0, 0, 0},
9320 {0x17, 0, 0, 0, 0},
9321 {0x18, 0, 0, 0, 0},
9322 {0x19, 0, 0, 0, 0},
9323 {0x1A, 0, 0, 0, 0},
9324 {0x1B, 0, 0, 0, 0},
9325 {0x1C, 0, 0, 0, 0},
9326 {0x1D, 0, 0, 0, 0},
9327 {0x1E, 0, 0, 0, 0},
9328 {0x1F, 0, 0, 0, 0},
9329 {0x20, 0x3, 0x3, 0, 0},
9330 {0x21, 0, 0, 0, 0},
9331 {0x22, 0, 0, 0, 0},
9332 {0x23, 0x90, 0x90, 0, 0},
9333 {0x24, 0x55, 0x55, 0, 0},
9334 {0x25, 0x15, 0x15, 0, 0},
9335 {0x26, 0x5, 0x5, 0, 0},
9336 {0x27, 0x15, 0x15, 0, 0},
9337 {0x28, 0x5, 0x5, 0, 0},
9338 {0x29, 0x20, 0x20, 0, 0},
9339 {0x2A, 0x11, 0x11, 0, 0},
9340 {0x2B, 0x90, 0x90, 0, 0},
9341 {0x2C, 0, 0, 0, 0},
9342 {0x2D, 0x88, 0x88, 0, 0},
9343 {0x2E, 0x32, 0x32, 0, 0},
9344 {0x2F, 0x77, 0x77, 0, 0},
9345 {0x30, 0x17, 0x17, 1, 1},
9346 {0x31, 0xff, 0xff, 1, 1},
9347 {0x32, 0x20, 0x20, 0, 0},
9348 {0x33, 0, 0, 0, 0},
9349 {0x34, 0x88, 0x88, 0, 0},
9350 {0x35, 0x32, 0x32, 0, 0},
9351 {0x36, 0x77, 0x77, 0, 0},
9352 {0x37, 0x17, 0x17, 1, 1},
9353 {0x38, 0xf0, 0xf0, 1, 1},
9354 {0x39, 0x20, 0x20, 0, 0},
9355 {0x3A, 0x8, 0x8, 0, 0},
9356 {0x3B, 0x55, 0x55, 1, 1},
9357 {0x3C, 0, 0, 0, 0},
9358 {0x3D, 0x88, 0x88, 1, 1},
9359 {0x3E, 0, 0, 0, 0},
9360 {0x3F, 0, 0, 1, 1},
9361 {0x40, 0x7, 0x7, 1, 1},
9362 {0x41, 0x6, 0x6, 0, 0},
9363 {0x42, 0x4, 0x4, 0, 0},
9364 {0x43, 0, 0, 0, 0},
9365 {0x44, 0x8, 0x8, 0, 0},
9366 {0x45, 0x55, 0x55, 1, 1},
9367 {0x46, 0, 0, 0, 0},
9368 {0x47, 0x11, 0x11, 0, 0},
9369 {0x48, 0, 0, 0, 0},
9370 {0x49, 0, 0, 1, 1},
9371 {0x4A, 0x7, 0x7, 0, 0},
9372 {0x4B, 0x6, 0x6, 0, 0},
9373 {0x4C, 0x4, 0x4, 0, 0},
9374 {0x4D, 0, 0, 0, 0},
9375 {0x4E, 0, 0, 0, 0},
9376 {0x4F, 0x26, 0x26, 1, 1},
9377 {0x50, 0x26, 0x26, 1, 1},
9378 {0x51, 0xf, 0xf, 1, 1},
9379 {0x52, 0xf, 0xf, 1, 1},
9380 {0x53, 0x44, 0x44, 0, 0},
9381 {0x54, 0, 0, 0, 0},
9382 {0x55, 0, 0, 0, 0},
9383 {0x56, 0x8, 0x8, 0, 0},
9384 {0x57, 0x8, 0x8, 0, 0},
9385 {0x58, 0x7, 0x7, 0, 0},
9386 {0x59, 0x22, 0x22, 0, 0},
9387 {0x5A, 0x22, 0x22, 0, 0},
9388 {0x5B, 0x2, 0x2, 0, 0},
9389 {0x5C, 0x4, 0x4, 1, 1},
9390 {0x5D, 0x7, 0x7, 0, 0},
9391 {0x5E, 0x55, 0x55, 0, 0},
9392 {0x5F, 0x23, 0x23, 0, 0},
9393 {0x60, 0x41, 0x41, 0, 0},
9394 {0x61, 0x1, 0x1, 0, 0},
9395 {0x62, 0xa, 0xa, 0, 0},
9396 {0x63, 0, 0, 0, 0},
9397 {0x64, 0, 0, 0, 0},
9398 {0x65, 0, 0, 0, 0},
9399 {0x66, 0, 0, 0, 0},
9400 {0x67, 0, 0, 0, 0},
9401 {0x68, 0, 0, 0, 0},
9402 {0x69, 0, 0, 0, 0},
9403 {0x6A, 0, 0, 0, 0},
9404 {0x6B, 0xc, 0xc, 0, 0},
9405 {0x6C, 0, 0, 0, 0},
9406 {0x6D, 0, 0, 0, 0},
9407 {0x6E, 0, 0, 0, 0},
9408 {0x6F, 0, 0, 0, 0},
9409 {0x70, 0, 0, 0, 0},
9410 {0x71, 0, 0, 0, 0},
9411 {0x72, 0x22, 0x22, 0, 0},
9412 {0x73, 0x22, 0x22, 0, 0},
9413 {0x74, 0, 0, 1, 1},
9414 {0x75, 0xa, 0xa, 0, 0},
9415 {0x76, 0x1, 0x1, 0, 0},
9416 {0x77, 0x22, 0x22, 0, 0},
9417 {0x78, 0x30, 0x30, 0, 0},
9418 {0x79, 0, 0, 0, 0},
9419 {0x7A, 0, 0, 0, 0},
9420 {0x7B, 0, 0, 0, 0},
9421 {0x7C, 0, 0, 0, 0},
9422 {0x7D, 0, 0, 0, 0},
9423 {0x7E, 0, 0, 0, 0},
9424 {0x7F, 0, 0, 0, 0},
9425 {0x80, 0, 0, 0, 0},
9426 {0x81, 0, 0, 0, 0},
9427 {0x82, 0, 0, 0, 0},
9428 {0x83, 0, 0, 0, 0},
9429 {0x84, 0, 0, 0, 0},
9430 {0x85, 0, 0, 0, 0},
9431 {0x86, 0, 0, 0, 0},
9432 {0x87, 0, 0, 0, 0},
9433 {0x88, 0, 0, 0, 0},
9434 {0x89, 0, 0, 0, 0},
9435 {0x8A, 0, 0, 0, 0},
9436 {0x8B, 0, 0, 0, 0},
9437 {0x8C, 0, 0, 0, 0},
9438 {0x8D, 0, 0, 0, 0},
9439 {0x8E, 0, 0, 0, 0},
9440 {0x8F, 0, 0, 0, 0},
9441 {0x90, 0, 0, 0, 0},
9442 {0x91, 0, 0, 0, 0},
9443 {0x92, 0, 0, 0, 0},
9444 {0x93, 0, 0, 0, 0},
9445 {0x94, 0, 0, 0, 0},
9446 {0xFFFF, 0, 0, 0, 0}
9447 };
9448
9449 static struct radio_regs regs_SYN_2056_rev6[] = {
9450 {0x02, 0, 0, 0, 0},
9451 {0x03, 0, 0, 0, 0},
9452 {0x04, 0, 0, 0, 0},
9453 {0x05, 0, 0, 0, 0},
9454 {0x06, 0, 0, 0, 0},
9455 {0x07, 0, 0, 0, 0},
9456 {0x08, 0, 0, 0, 0},
9457 {0x09, 0x1, 0x1, 0, 0},
9458 {0x0A, 0, 0, 0, 0},
9459 {0x0B, 0, 0, 0, 0},
9460 {0x0C, 0, 0, 0, 0},
9461 {0x0D, 0, 0, 0, 0},
9462 {0x0E, 0, 0, 0, 0},
9463 {0x0F, 0, 0, 0, 0},
9464 {0x10, 0, 0, 0, 0},
9465 {0x11, 0, 0, 0, 0},
9466 {0x12, 0, 0, 0, 0},
9467 {0x13, 0, 0, 0, 0},
9468 {0x14, 0, 0, 0, 0},
9469 {0x15, 0, 0, 0, 0},
9470 {0x16, 0, 0, 0, 0},
9471 {0x17, 0, 0, 0, 0},
9472 {0x18, 0, 0, 0, 0},
9473 {0x19, 0, 0, 0, 0},
9474 {0x1A, 0, 0, 0, 0},
9475 {0x1B, 0, 0, 0, 0},
9476 {0x1C, 0, 0, 0, 0},
9477 {0x1D, 0, 0, 0, 0},
9478 {0x1E, 0, 0, 0, 0},
9479 {0x1F, 0, 0, 0, 0},
9480 {0x20, 0, 0, 0, 0},
9481 {0x21, 0, 0, 0, 0},
9482 {0x22, 0x60, 0x60, 0, 0},
9483 {0x23, 0x6, 0x6, 0, 0},
9484 {0x24, 0xc, 0xc, 0, 0},
9485 {0x25, 0, 0, 0, 0},
9486 {0x26, 0, 0, 0, 0},
9487 {0x27, 0, 0, 0, 0},
9488 {0x28, 0x1, 0x1, 0, 0},
9489 {0x29, 0, 0, 0, 0},
9490 {0x2A, 0, 0, 0, 0},
9491 {0x2B, 0, 0, 0, 0},
9492 {0x2C, 0, 0, 0, 0},
9493 {0x2D, 0, 0, 0, 0},
9494 {0x2E, 0, 0, 0, 0},
9495 {0x2F, 0x1f, 0x1f, 0, 0},
9496 {0x30, 0x15, 0x15, 0, 0},
9497 {0x31, 0xf, 0xf, 0, 0},
9498 {0x32, 0, 0, 0, 0},
9499 {0x33, 0, 0, 0, 0},
9500 {0x34, 0, 0, 0, 0},
9501 {0x35, 0, 0, 0, 0},
9502 {0x36, 0, 0, 0, 0},
9503 {0x37, 0, 0, 0, 0},
9504 {0x38, 0, 0, 0, 0},
9505 {0x39, 0, 0, 0, 0},
9506 {0x3A, 0, 0, 0, 0},
9507 {0x3B, 0, 0, 0, 0},
9508 {0x3C, 0x13, 0x13, 0, 0},
9509 {0x3D, 0xf, 0xf, 0, 0},
9510 {0x3E, 0x18, 0x18, 0, 0},
9511 {0x3F, 0, 0, 0, 0},
9512 {0x40, 0, 0, 0, 0},
9513 {0x41, 0x20, 0x20, 0, 0},
9514 {0x42, 0x20, 0x20, 0, 0},
9515 {0x43, 0, 0, 0, 0},
9516 {0x44, 0x77, 0x77, 0, 0},
9517 {0x45, 0x7, 0x7, 0, 0},
9518 {0x46, 0x1, 0x1, 0, 0},
9519 {0x47, 0x4, 0x4, 0, 0},
9520 {0x48, 0xf, 0xf, 0, 0},
9521 {0x49, 0x30, 0x30, 0, 0},
9522 {0x4A, 0x32, 0x32, 0, 0},
9523 {0x4B, 0xd, 0xd, 0, 0},
9524 {0x4C, 0xd, 0xd, 0, 0},
9525 {0x4D, 0x4, 0x4, 0, 0},
9526 {0x4E, 0x6, 0x6, 0, 0},
9527 {0x4F, 0x1, 0x1, 0, 0},
9528 {0x50, 0x1c, 0x1c, 0, 0},
9529 {0x51, 0x2, 0x2, 0, 0},
9530 {0x52, 0x2, 0x2, 0, 0},
9531 {0x53, 0xf7, 0xf7, 1, 1},
9532 {0x54, 0xb4, 0xb4, 0, 0},
9533 {0x55, 0xd2, 0xd2, 0, 0},
9534 {0x56, 0, 0, 0, 0},
9535 {0x57, 0, 0, 0, 0},
9536 {0x58, 0x4, 0x4, 0, 0},
9537 {0x59, 0x96, 0x96, 0, 0},
9538 {0x5A, 0x3e, 0x3e, 0, 0},
9539 {0x5B, 0x3e, 0x3e, 0, 0},
9540 {0x5C, 0x13, 0x13, 0, 0},
9541 {0x5D, 0x2, 0x2, 0, 0},
9542 {0x5E, 0, 0, 0, 0},
9543 {0x5F, 0x7, 0x7, 0, 0},
9544 {0x60, 0x7, 0x7, 1, 1},
9545 {0x61, 0x8, 0x8, 0, 0},
9546 {0x62, 0x3, 0x3, 0, 0},
9547 {0x63, 0, 0, 0, 0},
9548 {0x64, 0, 0, 0, 0},
9549 {0x65, 0, 0, 0, 0},
9550 {0x66, 0, 0, 0, 0},
9551 {0x67, 0, 0, 0, 0},
9552 {0x68, 0x40, 0x40, 0, 0},
9553 {0x69, 0, 0, 0, 0},
9554 {0x6A, 0, 0, 0, 0},
9555 {0x6B, 0, 0, 0, 0},
9556 {0x6C, 0, 0, 0, 0},
9557 {0x6D, 0x1, 0x1, 0, 0},
9558 {0x6E, 0, 0, 0, 0},
9559 {0x6F, 0, 0, 0, 0},
9560 {0x70, 0x60, 0x60, 0, 0},
9561 {0x71, 0x66, 0x66, 0, 0},
9562 {0x72, 0xc, 0xc, 0, 0},
9563 {0x73, 0x66, 0x66, 0, 0},
9564 {0x74, 0x8f, 0x8f, 1, 1},
9565 {0x75, 0, 0, 0, 0},
9566 {0x76, 0xcc, 0xcc, 0, 0},
9567 {0x77, 0x1, 0x1, 0, 0},
9568 {0x78, 0x66, 0x66, 0, 0},
9569 {0x79, 0x66, 0x66, 0, 0},
9570 {0x7A, 0, 0, 0, 0},
9571 {0x7B, 0, 0, 0, 0},
9572 {0x7C, 0, 0, 0, 0},
9573 {0x7D, 0, 0, 0, 0},
9574 {0x7E, 0, 0, 0, 0},
9575 {0x7F, 0, 0, 0, 0},
9576 {0x80, 0, 0, 0, 0},
9577 {0x81, 0, 0, 0, 0},
9578 {0x82, 0, 0, 0, 0},
9579 {0x83, 0, 0, 0, 0},
9580 {0x84, 0, 0, 0, 0},
9581 {0x85, 0xff, 0xff, 0, 0},
9582 {0x86, 0, 0, 0, 0},
9583 {0x87, 0, 0, 0, 0},
9584 {0x88, 0, 0, 0, 0},
9585 {0x89, 0, 0, 0, 0},
9586 {0x8A, 0, 0, 0, 0},
9587 {0x8B, 0, 0, 0, 0},
9588 {0x8C, 0, 0, 0, 0},
9589 {0x8D, 0, 0, 0, 0},
9590 {0x8E, 0, 0, 0, 0},
9591 {0x8F, 0, 0, 0, 0},
9592 {0x90, 0, 0, 0, 0},
9593 {0x91, 0, 0, 0, 0},
9594 {0x92, 0, 0, 0, 0},
9595 {0x93, 0, 0, 0, 0},
9596 {0x94, 0, 0, 0, 0},
9597 {0x95, 0, 0, 0, 0},
9598 {0x96, 0, 0, 0, 0},
9599 {0x97, 0, 0, 0, 0},
9600 {0x98, 0, 0, 0, 0},
9601 {0x99, 0, 0, 0, 0},
9602 {0x9A, 0, 0, 0, 0},
9603 {0x9B, 0, 0, 0, 0},
9604 {0x9C, 0, 0, 0, 0},
9605 {0x9D, 0, 0, 0, 0},
9606 {0x9E, 0, 0, 0, 0},
9607 {0x9F, 0x6, 0x6, 0, 0},
9608 {0xA0, 0x66, 0x66, 0, 0},
9609 {0xA1, 0x66, 0x66, 0, 0},
9610 {0xA2, 0x66, 0x66, 0, 0},
9611 {0xA3, 0x66, 0x66, 0, 0},
9612 {0xA4, 0x66, 0x66, 0, 0},
9613 {0xA5, 0x66, 0x66, 0, 0},
9614 {0xA6, 0x66, 0x66, 0, 0},
9615 {0xA7, 0x66, 0x66, 0, 0},
9616 {0xA8, 0x66, 0x66, 0, 0},
9617 {0xA9, 0x66, 0x66, 0, 0},
9618 {0xAA, 0x66, 0x66, 0, 0},
9619 {0xAB, 0x66, 0x66, 0, 0},
9620 {0xAC, 0x66, 0x66, 0, 0},
9621 {0xAD, 0x66, 0x66, 0, 0},
9622 {0xAE, 0x66, 0x66, 0, 0},
9623 {0xAF, 0x66, 0x66, 0, 0},
9624 {0xB0, 0x66, 0x66, 0, 0},
9625 {0xB1, 0x66, 0x66, 0, 0},
9626 {0xB2, 0x66, 0x66, 0, 0},
9627 {0xB3, 0xa, 0xa, 0, 0},
9628 {0xB4, 0, 0, 0, 0},
9629 {0xB5, 0, 0, 0, 0},
9630 {0xB6, 0, 0, 0, 0},
9631 {0xFFFF, 0, 0, 0, 0}
9632 };
9633
9634 static struct radio_regs regs_TX_2056_rev6[] = {
9635 {0x02, 0, 0, 0, 0},
9636 {0x03, 0, 0, 0, 0},
9637 {0x04, 0, 0, 0, 0},
9638 {0x05, 0, 0, 0, 0},
9639 {0x06, 0, 0, 0, 0},
9640 {0x07, 0, 0, 0, 0},
9641 {0x08, 0, 0, 0, 0},
9642 {0x09, 0, 0, 0, 0},
9643 {0x0A, 0, 0, 0, 0},
9644 {0x0B, 0, 0, 0, 0},
9645 {0x0C, 0, 0, 0, 0},
9646 {0x0D, 0, 0, 0, 0},
9647 {0x0E, 0, 0, 0, 0},
9648 {0x0F, 0, 0, 0, 0},
9649 {0x10, 0, 0, 0, 0},
9650 {0x11, 0, 0, 0, 0},
9651 {0x12, 0, 0, 0, 0},
9652 {0x13, 0, 0, 0, 0},
9653 {0x14, 0, 0, 0, 0},
9654 {0x15, 0, 0, 0, 0},
9655 {0x16, 0, 0, 0, 0},
9656 {0x17, 0, 0, 0, 0},
9657 {0x18, 0, 0, 0, 0},
9658 {0x19, 0, 0, 0, 0},
9659 {0x1A, 0, 0, 0, 0},
9660 {0x1B, 0, 0, 0, 0},
9661 {0x1C, 0, 0, 0, 0},
9662 {0x1D, 0, 0, 0, 0},
9663 {0x1E, 0, 0, 0, 0},
9664 {0x1F, 0, 0, 0, 0},
9665 {0x20, 0, 0, 0, 0},
9666 {0x21, 0x88, 0x88, 0, 0},
9667 {0x22, 0x88, 0x88, 0, 0},
9668 {0x23, 0x88, 0x88, 0, 0},
9669 {0x24, 0x88, 0x88, 0, 0},
9670 {0x25, 0xc, 0xc, 0, 0},
9671 {0x26, 0, 0, 0, 0},
9672 {0x27, 0x3, 0x3, 0, 0},
9673 {0x28, 0, 0, 0, 0},
9674 {0x29, 0x3, 0x3, 0, 0},
9675 {0x2A, 0x37, 0x37, 0, 0},
9676 {0x2B, 0x3, 0x3, 0, 0},
9677 {0x2C, 0, 0, 0, 0},
9678 {0x2D, 0, 0, 0, 0},
9679 {0x2E, 0x1, 0x1, 0, 0},
9680 {0x2F, 0x1, 0x1, 0, 0},
9681 {0x30, 0, 0, 0, 0},
9682 {0x31, 0, 0, 0, 0},
9683 {0x32, 0, 0, 0, 0},
9684 {0x33, 0x11, 0x11, 0, 0},
9685 {0x34, 0xee, 0xee, 1, 1},
9686 {0x35, 0, 0, 0, 0},
9687 {0x36, 0, 0, 0, 0},
9688 {0x37, 0x3, 0x3, 0, 0},
9689 {0x38, 0x50, 0x50, 1, 1},
9690 {0x39, 0, 0, 0, 0},
9691 {0x3A, 0x50, 0x50, 1, 1},
9692 {0x3B, 0, 0, 0, 0},
9693 {0x3C, 0x6e, 0x6e, 0, 0},
9694 {0x3D, 0xf0, 0xf0, 1, 1},
9695 {0x3E, 0, 0, 0, 0},
9696 {0x3F, 0, 0, 0, 0},
9697 {0x40, 0, 0, 0, 0},
9698 {0x41, 0x3, 0x3, 0, 0},
9699 {0x42, 0x3, 0x3, 0, 0},
9700 {0x43, 0, 0, 0, 0},
9701 {0x44, 0x1e, 0x1e, 0, 0},
9702 {0x45, 0, 0, 0, 0},
9703 {0x46, 0x6e, 0x6e, 0, 0},
9704 {0x47, 0xf0, 0xf0, 1, 1},
9705 {0x48, 0, 0, 0, 0},
9706 {0x49, 0x2, 0x2, 0, 0},
9707 {0x4A, 0xff, 0xff, 1, 1},
9708 {0x4B, 0xc, 0xc, 0, 0},
9709 {0x4C, 0, 0, 0, 0},
9710 {0x4D, 0x38, 0x38, 0, 0},
9711 {0x4E, 0x70, 0x70, 1, 1},
9712 {0x4F, 0x2, 0x2, 0, 0},
9713 {0x50, 0x88, 0x88, 0, 0},
9714 {0x51, 0xc, 0xc, 0, 0},
9715 {0x52, 0, 0, 0, 0},
9716 {0x53, 0x8, 0x8, 0, 0},
9717 {0x54, 0x70, 0x70, 1, 1},
9718 {0x55, 0x2, 0x2, 0, 0},
9719 {0x56, 0xff, 0xff, 1, 1},
9720 {0x57, 0, 0, 0, 0},
9721 {0x58, 0x83, 0x83, 0, 0},
9722 {0x59, 0x77, 0x77, 1, 1},
9723 {0x5A, 0, 0, 0, 0},
9724 {0x5B, 0x2, 0x2, 0, 0},
9725 {0x5C, 0x88, 0x88, 0, 0},
9726 {0x5D, 0, 0, 0, 0},
9727 {0x5E, 0x8, 0x8, 0, 0},
9728 {0x5F, 0x77, 0x77, 1, 1},
9729 {0x60, 0x1, 0x1, 0, 0},
9730 {0x61, 0, 0, 0, 0},
9731 {0x62, 0x7, 0x7, 0, 0},
9732 {0x63, 0, 0, 0, 0},
9733 {0x64, 0x7, 0x7, 0, 0},
9734 {0x65, 0, 0, 0, 0},
9735 {0x66, 0, 0, 0, 0},
9736 {0x67, 0, 0, 1, 1},
9737 {0x68, 0, 0, 0, 0},
9738 {0x69, 0xa, 0xa, 0, 0},
9739 {0x6A, 0, 0, 0, 0},
9740 {0x6B, 0, 0, 0, 0},
9741 {0x6C, 0, 0, 0, 0},
9742 {0x6D, 0, 0, 0, 0},
9743 {0x6E, 0, 0, 0, 0},
9744 {0x6F, 0, 0, 0, 0},
9745 {0x70, 0, 0, 0, 0},
9746 {0x71, 0x2, 0x2, 0, 0},
9747 {0x72, 0, 0, 0, 0},
9748 {0x73, 0, 0, 0, 0},
9749 {0x74, 0xe, 0xe, 0, 0},
9750 {0x75, 0xe, 0xe, 0, 0},
9751 {0x76, 0xe, 0xe, 0, 0},
9752 {0x77, 0x13, 0x13, 0, 0},
9753 {0x78, 0x13, 0x13, 0, 0},
9754 {0x79, 0x1b, 0x1b, 0, 0},
9755 {0x7A, 0x1b, 0x1b, 0, 0},
9756 {0x7B, 0x55, 0x55, 0, 0},
9757 {0x7C, 0x5b, 0x5b, 0, 0},
9758 {0x7D, 0x30, 0x30, 1, 1},
9759 {0x7E, 0, 0, 0, 0},
9760 {0x7F, 0, 0, 0, 0},
9761 {0x80, 0, 0, 0, 0},
9762 {0x81, 0, 0, 0, 0},
9763 {0x82, 0, 0, 0, 0},
9764 {0x83, 0, 0, 0, 0},
9765 {0x84, 0, 0, 0, 0},
9766 {0x85, 0, 0, 0, 0},
9767 {0x86, 0, 0, 0, 0},
9768 {0x87, 0, 0, 0, 0},
9769 {0x88, 0, 0, 0, 0},
9770 {0x89, 0, 0, 0, 0},
9771 {0x8A, 0, 0, 0, 0},
9772 {0x8B, 0, 0, 0, 0},
9773 {0x8C, 0, 0, 0, 0},
9774 {0x8D, 0, 0, 0, 0},
9775 {0x8E, 0, 0, 0, 0},
9776 {0x8F, 0, 0, 0, 0},
9777 {0x90, 0, 0, 0, 0},
9778 {0x91, 0, 0, 0, 0},
9779 {0x92, 0, 0, 0, 0},
9780 {0x93, 0x70, 0x70, 0, 0},
9781 {0x94, 0x70, 0x70, 0, 0},
9782 {0x95, 0x70, 0x70, 0, 0},
9783 {0x96, 0x70, 0x70, 0, 0},
9784 {0x97, 0x70, 0x70, 0, 0},
9785 {0x98, 0x70, 0x70, 0, 0},
9786 {0x99, 0x70, 0x70, 0, 0},
9787 {0x9A, 0x70, 0x70, 0, 0},
9788 {0xFFFF, 0, 0, 0, 0}
9789 };
9790
9791 static struct radio_regs regs_RX_2056_rev6[] = {
9792 {0x02, 0, 0, 0, 0},
9793 {0x03, 0, 0, 0, 0},
9794 {0x04, 0, 0, 0, 0},
9795 {0x05, 0, 0, 0, 0},
9796 {0x06, 0, 0, 0, 0},
9797 {0x07, 0, 0, 0, 0},
9798 {0x08, 0, 0, 0, 0},
9799 {0x09, 0, 0, 0, 0},
9800 {0x0A, 0, 0, 0, 0},
9801 {0x0B, 0, 0, 0, 0},
9802 {0x0C, 0, 0, 0, 0},
9803 {0x0D, 0, 0, 0, 0},
9804 {0x0E, 0, 0, 0, 0},
9805 {0x0F, 0, 0, 0, 0},
9806 {0x10, 0, 0, 0, 0},
9807 {0x11, 0, 0, 0, 0},
9808 {0x12, 0, 0, 0, 0},
9809 {0x13, 0, 0, 0, 0},
9810 {0x14, 0, 0, 0, 0},
9811 {0x15, 0, 0, 0, 0},
9812 {0x16, 0, 0, 0, 0},
9813 {0x17, 0, 0, 0, 0},
9814 {0x18, 0, 0, 0, 0},
9815 {0x19, 0, 0, 0, 0},
9816 {0x1A, 0, 0, 0, 0},
9817 {0x1B, 0, 0, 0, 0},
9818 {0x1C, 0, 0, 0, 0},
9819 {0x1D, 0, 0, 0, 0},
9820 {0x1E, 0, 0, 0, 0},
9821 {0x1F, 0, 0, 0, 0},
9822 {0x20, 0x3, 0x3, 0, 0},
9823 {0x21, 0, 0, 0, 0},
9824 {0x22, 0, 0, 0, 0},
9825 {0x23, 0x90, 0x90, 0, 0},
9826 {0x24, 0x55, 0x55, 0, 0},
9827 {0x25, 0x15, 0x15, 0, 0},
9828 {0x26, 0x5, 0x5, 0, 0},
9829 {0x27, 0x15, 0x15, 0, 0},
9830 {0x28, 0x5, 0x5, 0, 0},
9831 {0x29, 0x20, 0x20, 0, 0},
9832 {0x2A, 0x11, 0x11, 0, 0},
9833 {0x2B, 0x90, 0x90, 0, 0},
9834 {0x2C, 0, 0, 0, 0},
9835 {0x2D, 0x88, 0x88, 0, 0},
9836 {0x2E, 0x32, 0x32, 0, 0},
9837 {0x2F, 0x77, 0x77, 0, 0},
9838 {0x30, 0x17, 0x17, 1, 1},
9839 {0x31, 0xff, 0xff, 1, 1},
9840 {0x32, 0x20, 0x20, 0, 0},
9841 {0x33, 0, 0, 0, 0},
9842 {0x34, 0x88, 0x88, 0, 0},
9843 {0x35, 0x32, 0x32, 0, 0},
9844 {0x36, 0x77, 0x77, 0, 0},
9845 {0x37, 0x17, 0x17, 1, 1},
9846 {0x38, 0xf0, 0xf0, 1, 1},
9847 {0x39, 0x20, 0x20, 0, 0},
9848 {0x3A, 0x8, 0x8, 0, 0},
9849 {0x3B, 0x55, 0x55, 1, 1},
9850 {0x3C, 0, 0, 0, 0},
9851 {0x3D, 0x88, 0x88, 1, 1},
9852 {0x3E, 0, 0, 0, 0},
9853 {0x3F, 0x44, 0x44, 0, 0},
9854 {0x40, 0x7, 0x7, 1, 1},
9855 {0x41, 0x6, 0x6, 0, 0},
9856 {0x42, 0x4, 0x4, 0, 0},
9857 {0x43, 0, 0, 0, 0},
9858 {0x44, 0x8, 0x8, 0, 0},
9859 {0x45, 0x55, 0x55, 1, 1},
9860 {0x46, 0, 0, 0, 0},
9861 {0x47, 0x11, 0x11, 0, 0},
9862 {0x48, 0, 0, 0, 0},
9863 {0x49, 0x44, 0x44, 0, 0},
9864 {0x4A, 0x7, 0x7, 0, 0},
9865 {0x4B, 0x6, 0x6, 0, 0},
9866 {0x4C, 0x4, 0x4, 0, 0},
9867 {0x4D, 0, 0, 0, 0},
9868 {0x4E, 0, 0, 0, 0},
9869 {0x4F, 0x26, 0x26, 1, 1},
9870 {0x50, 0x26, 0x26, 1, 1},
9871 {0x51, 0xf, 0xf, 1, 1},
9872 {0x52, 0xf, 0xf, 1, 1},
9873 {0x53, 0x44, 0x44, 0, 0},
9874 {0x54, 0, 0, 0, 0},
9875 {0x55, 0, 0, 0, 0},
9876 {0x56, 0x8, 0x8, 0, 0},
9877 {0x57, 0x8, 0x8, 0, 0},
9878 {0x58, 0x7, 0x7, 0, 0},
9879 {0x59, 0x22, 0x22, 0, 0},
9880 {0x5A, 0x22, 0x22, 0, 0},
9881 {0x5B, 0x2, 0x2, 0, 0},
9882 {0x5C, 0x4, 0x4, 1, 1},
9883 {0x5D, 0x7, 0x7, 0, 0},
9884 {0x5E, 0x55, 0x55, 0, 0},
9885 {0x5F, 0x23, 0x23, 0, 0},
9886 {0x60, 0x41, 0x41, 0, 0},
9887 {0x61, 0x1, 0x1, 0, 0},
9888 {0x62, 0xa, 0xa, 0, 0},
9889 {0x63, 0, 0, 0, 0},
9890 {0x64, 0, 0, 0, 0},
9891 {0x65, 0, 0, 0, 0},
9892 {0x66, 0, 0, 0, 0},
9893 {0x67, 0, 0, 0, 0},
9894 {0x68, 0, 0, 0, 0},
9895 {0x69, 0, 0, 0, 0},
9896 {0x6A, 0, 0, 0, 0},
9897 {0x6B, 0xc, 0xc, 0, 0},
9898 {0x6C, 0, 0, 0, 0},
9899 {0x6D, 0, 0, 0, 0},
9900 {0x6E, 0, 0, 0, 0},
9901 {0x6F, 0, 0, 0, 0},
9902 {0x70, 0, 0, 0, 0},
9903 {0x71, 0, 0, 0, 0},
9904 {0x72, 0x22, 0x22, 0, 0},
9905 {0x73, 0x22, 0x22, 0, 0},
9906 {0x74, 0, 0, 1, 1},
9907 {0x75, 0xa, 0xa, 0, 0},
9908 {0x76, 0x1, 0x1, 0, 0},
9909 {0x77, 0x22, 0x22, 0, 0},
9910 {0x78, 0x30, 0x30, 0, 0},
9911 {0x79, 0, 0, 0, 0},
9912 {0x7A, 0, 0, 0, 0},
9913 {0x7B, 0, 0, 0, 0},
9914 {0x7C, 0, 0, 0, 0},
9915 {0x7D, 0x5, 0x5, 1, 1},
9916 {0x7E, 0, 0, 0, 0},
9917 {0x7F, 0, 0, 0, 0},
9918 {0x80, 0, 0, 0, 0},
9919 {0x81, 0, 0, 0, 0},
9920 {0x82, 0, 0, 0, 0},
9921 {0x83, 0, 0, 0, 0},
9922 {0x84, 0, 0, 0, 0},
9923 {0x85, 0, 0, 0, 0},
9924 {0x86, 0, 0, 0, 0},
9925 {0x87, 0, 0, 0, 0},
9926 {0x88, 0, 0, 0, 0},
9927 {0x89, 0, 0, 0, 0},
9928 {0x8A, 0, 0, 0, 0},
9929 {0x8B, 0, 0, 0, 0},
9930 {0x8C, 0, 0, 0, 0},
9931 {0x8D, 0, 0, 0, 0},
9932 {0x8E, 0, 0, 0, 0},
9933 {0x8F, 0, 0, 0, 0},
9934 {0x90, 0, 0, 0, 0},
9935 {0x91, 0, 0, 0, 0},
9936 {0x92, 0, 0, 0, 0},
9937 {0x93, 0, 0, 0, 0},
9938 {0x94, 0, 0, 0, 0},
9939 {0xFFFF, 0, 0, 0, 0}
9940 };
9941
9942 static struct radio_regs regs_SYN_2056_rev7[] = {
9943 {0x02, 0, 0, 0, 0},
9944 {0x03, 0, 0, 0, 0},
9945 {0x04, 0, 0, 0, 0},
9946 {0x05, 0, 0, 0, 0},
9947 {0x06, 0, 0, 0, 0},
9948 {0x07, 0, 0, 0, 0},
9949 {0x08, 0, 0, 0, 0},
9950 {0x09, 0x1, 0x1, 0, 0},
9951 {0x0A, 0, 0, 0, 0},
9952 {0x0B, 0, 0, 0, 0},
9953 {0x0C, 0, 0, 0, 0},
9954 {0x0D, 0, 0, 0, 0},
9955 {0x0E, 0, 0, 0, 0},
9956 {0x0F, 0, 0, 0, 0},
9957 {0x10, 0, 0, 0, 0},
9958 {0x11, 0, 0, 0, 0},
9959 {0x12, 0, 0, 0, 0},
9960 {0x13, 0, 0, 0, 0},
9961 {0x14, 0, 0, 0, 0},
9962 {0x15, 0, 0, 0, 0},
9963 {0x16, 0, 0, 0, 0},
9964 {0x17, 0, 0, 0, 0},
9965 {0x18, 0, 0, 0, 0},
9966 {0x19, 0, 0, 0, 0},
9967 {0x1A, 0, 0, 0, 0},
9968 {0x1B, 0, 0, 0, 0},
9969 {0x1C, 0, 0, 0, 0},
9970 {0x1D, 0, 0, 0, 0},
9971 {0x1E, 0, 0, 0, 0},
9972 {0x1F, 0, 0, 0, 0},
9973 {0x20, 0, 0, 0, 0},
9974 {0x21, 0, 0, 0, 0},
9975 {0x22, 0x60, 0x60, 0, 0},
9976 {0x23, 0x6, 0x6, 0, 0},
9977 {0x24, 0xc, 0xc, 0, 0},
9978 {0x25, 0, 0, 0, 0},
9979 {0x26, 0, 0, 0, 0},
9980 {0x27, 0, 0, 0, 0},
9981 {0x28, 0x1, 0x1, 0, 0},
9982 {0x29, 0, 0, 0, 0},
9983 {0x2A, 0, 0, 0, 0},
9984 {0x2B, 0, 0, 0, 0},
9985 {0x2C, 0, 0, 0, 0},
9986 {0x2D, 0, 0, 0, 0},
9987 {0x2E, 0, 0, 0, 0},
9988 {0x2F, 0x1f, 0x1f, 0, 0},
9989 {0x30, 0x15, 0x15, 0, 0},
9990 {0x31, 0xf, 0xf, 0, 0},
9991 {0x32, 0, 0, 0, 0},
9992 {0x33, 0, 0, 0, 0},
9993 {0x34, 0, 0, 0, 0},
9994 {0x35, 0, 0, 0, 0},
9995 {0x36, 0, 0, 0, 0},
9996 {0x37, 0, 0, 0, 0},
9997 {0x38, 0, 0, 0, 0},
9998 {0x39, 0, 0, 0, 0},
9999 {0x3A, 0, 0, 0, 0},
10000 {0x3B, 0, 0, 0, 0},
10001 {0x3C, 0x13, 0x13, 0, 0},
10002 {0x3D, 0xf, 0xf, 0, 0},
10003 {0x3E, 0x18, 0x18, 0, 0},
10004 {0x3F, 0, 0, 0, 0},
10005 {0x40, 0, 0, 0, 0},
10006 {0x41, 0x20, 0x20, 0, 0},
10007 {0x42, 0x20, 0x20, 0, 0},
10008 {0x43, 0, 0, 0, 0},
10009 {0x44, 0x77, 0x77, 0, 0},
10010 {0x45, 0x7, 0x7, 0, 0},
10011 {0x46, 0x1, 0x1, 0, 0},
10012 {0x47, 0x4, 0x4, 0, 0},
10013 {0x48, 0xf, 0xf, 0, 0},
10014 {0x49, 0x30, 0x30, 0, 0},
10015 {0x4A, 0x32, 0x32, 0, 0},
10016 {0x4B, 0xd, 0xd, 0, 0},
10017 {0x4C, 0xd, 0xd, 0, 0},
10018 {0x4D, 0x4, 0x4, 0, 0},
10019 {0x4E, 0x6, 0x6, 0, 0},
10020 {0x4F, 0x1, 0x1, 0, 0},
10021 {0x50, 0x1c, 0x1c, 0, 0},
10022 {0x51, 0x2, 0x2, 0, 0},
10023 {0x52, 0x2, 0x2, 0, 0},
10024 {0x53, 0xf7, 0xf7, 1, 1},
10025 {0x54, 0xb4, 0xb4, 0, 0},
10026 {0x55, 0xd2, 0xd2, 0, 0},
10027 {0x56, 0, 0, 0, 0},
10028 {0x57, 0, 0, 0, 0},
10029 {0x58, 0x4, 0x4, 0, 0},
10030 {0x59, 0x96, 0x96, 0, 0},
10031 {0x5A, 0x3e, 0x3e, 0, 0},
10032 {0x5B, 0x3e, 0x3e, 0, 0},
10033 {0x5C, 0x13, 0x13, 0, 0},
10034 {0x5D, 0x2, 0x2, 0, 0},
10035 {0x5E, 0, 0, 0, 0},
10036 {0x5F, 0x7, 0x7, 0, 0},
10037 {0x60, 0x7, 0x7, 1, 1},
10038 {0x61, 0x8, 0x8, 0, 0},
10039 {0x62, 0x3, 0x3, 0, 0},
10040 {0x63, 0, 0, 0, 0},
10041 {0x64, 0, 0, 0, 0},
10042 {0x65, 0, 0, 0, 0},
10043 {0x66, 0, 0, 0, 0},
10044 {0x67, 0, 0, 0, 0},
10045 {0x68, 0x40, 0x40, 0, 0},
10046 {0x69, 0, 0, 0, 0},
10047 {0x6A, 0, 0, 0, 0},
10048 {0x6B, 0, 0, 0, 0},
10049 {0x6C, 0, 0, 0, 0},
10050 {0x6D, 0x1, 0x1, 0, 0},
10051 {0x6E, 0, 0, 0, 0},
10052 {0x6F, 0, 0, 0, 0},
10053 {0x70, 0x60, 0x60, 0, 0},
10054 {0x71, 0x66, 0x66, 0, 0},
10055 {0x72, 0xc, 0xc, 0, 0},
10056 {0x73, 0x66, 0x66, 0, 0},
10057 {0x74, 0x8f, 0x8f, 1, 1},
10058 {0x75, 0, 0, 0, 0},
10059 {0x76, 0xcc, 0xcc, 0, 0},
10060 {0x77, 0x1, 0x1, 0, 0},
10061 {0x78, 0x66, 0x66, 0, 0},
10062 {0x79, 0x66, 0x66, 0, 0},
10063 {0x7A, 0, 0, 0, 0},
10064 {0x7B, 0, 0, 0, 0},
10065 {0x7C, 0, 0, 0, 0},
10066 {0x7D, 0, 0, 0, 0},
10067 {0x7E, 0, 0, 0, 0},
10068 {0x7F, 0, 0, 0, 0},
10069 {0x80, 0, 0, 0, 0},
10070 {0x81, 0, 0, 0, 0},
10071 {0x82, 0, 0, 0, 0},
10072 {0x83, 0, 0, 0, 0},
10073 {0x84, 0, 0, 0, 0},
10074 {0x85, 0xff, 0xff, 0, 0},
10075 {0x86, 0, 0, 0, 0},
10076 {0x87, 0, 0, 0, 0},
10077 {0x88, 0, 0, 0, 0},
10078 {0x89, 0, 0, 0, 0},
10079 {0x8A, 0, 0, 0, 0},
10080 {0x8B, 0, 0, 0, 0},
10081 {0x8C, 0, 0, 0, 0},
10082 {0x8D, 0, 0, 0, 0},
10083 {0x8E, 0, 0, 0, 0},
10084 {0x8F, 0, 0, 0, 0},
10085 {0x90, 0, 0, 0, 0},
10086 {0x91, 0, 0, 0, 0},
10087 {0x92, 0, 0, 0, 0},
10088 {0x93, 0, 0, 0, 0},
10089 {0x94, 0, 0, 0, 0},
10090 {0x95, 0, 0, 0, 0},
10091 {0x96, 0, 0, 0, 0},
10092 {0x97, 0, 0, 0, 0},
10093 {0x98, 0, 0, 0, 0},
10094 {0x99, 0, 0, 0, 0},
10095 {0x9A, 0, 0, 0, 0},
10096 {0x9B, 0, 0, 0, 0},
10097 {0x9C, 0, 0, 0, 0},
10098 {0x9D, 0, 0, 0, 0},
10099 {0x9E, 0, 0, 0, 0},
10100 {0x9F, 0x6, 0x6, 0, 0},
10101 {0xA0, 0x66, 0x66, 0, 0},
10102 {0xA1, 0x66, 0x66, 0, 0},
10103 {0xA2, 0x66, 0x66, 0, 0},
10104 {0xA3, 0x66, 0x66, 0, 0},
10105 {0xA4, 0x66, 0x66, 0, 0},
10106 {0xA5, 0x66, 0x66, 0, 0},
10107 {0xA6, 0x66, 0x66, 0, 0},
10108 {0xA7, 0x66, 0x66, 0, 0},
10109 {0xA8, 0x66, 0x66, 0, 0},
10110 {0xA9, 0x66, 0x66, 0, 0},
10111 {0xAA, 0x66, 0x66, 0, 0},
10112 {0xAB, 0x66, 0x66, 0, 0},
10113 {0xAC, 0x66, 0x66, 0, 0},
10114 {0xAD, 0x66, 0x66, 0, 0},
10115 {0xAE, 0x66, 0x66, 0, 0},
10116 {0xAF, 0x66, 0x66, 0, 0},
10117 {0xB0, 0x66, 0x66, 0, 0},
10118 {0xB1, 0x66, 0x66, 0, 0},
10119 {0xB2, 0x66, 0x66, 0, 0},
10120 {0xB3, 0xa, 0xa, 0, 0},
10121 {0xB4, 0, 0, 0, 0},
10122 {0xB5, 0, 0, 0, 0},
10123 {0xB6, 0, 0, 0, 0},
10124 {0xFFFF, 0, 0, 0, 0},
10125 };
10126
10127 static struct radio_regs regs_TX_2056_rev7[] = {
10128 {0x02, 0, 0, 0, 0},
10129 {0x03, 0, 0, 0, 0},
10130 {0x04, 0, 0, 0, 0},
10131 {0x05, 0, 0, 0, 0},
10132 {0x06, 0, 0, 0, 0},
10133 {0x07, 0, 0, 0, 0},
10134 {0x08, 0, 0, 0, 0},
10135 {0x09, 0, 0, 0, 0},
10136 {0x0A, 0, 0, 0, 0},
10137 {0x0B, 0, 0, 0, 0},
10138 {0x0C, 0, 0, 0, 0},
10139 {0x0D, 0, 0, 0, 0},
10140 {0x0E, 0, 0, 0, 0},
10141 {0x0F, 0, 0, 0, 0},
10142 {0x10, 0, 0, 0, 0},
10143 {0x11, 0, 0, 0, 0},
10144 {0x12, 0, 0, 0, 0},
10145 {0x13, 0, 0, 0, 0},
10146 {0x14, 0, 0, 0, 0},
10147 {0x15, 0, 0, 0, 0},
10148 {0x16, 0, 0, 0, 0},
10149 {0x17, 0, 0, 0, 0},
10150 {0x18, 0, 0, 0, 0},
10151 {0x19, 0, 0, 0, 0},
10152 {0x1A, 0, 0, 0, 0},
10153 {0x1B, 0, 0, 0, 0},
10154 {0x1C, 0, 0, 0, 0},
10155 {0x1D, 0, 0, 0, 0},
10156 {0x1E, 0, 0, 0, 0},
10157 {0x1F, 0, 0, 0, 0},
10158 {0x20, 0, 0, 0, 0},
10159 {0x21, 0x88, 0x88, 0, 0},
10160 {0x22, 0x88, 0x88, 0, 0},
10161 {0x23, 0x88, 0x88, 0, 0},
10162 {0x24, 0x88, 0x88, 0, 0},
10163 {0x25, 0xc, 0xc, 0, 0},
10164 {0x26, 0, 0, 0, 0},
10165 {0x27, 0x3, 0x3, 0, 0},
10166 {0x28, 0, 0, 0, 0},
10167 {0x29, 0x3, 0x3, 0, 0},
10168 {0x2A, 0x37, 0x37, 0, 0},
10169 {0x2B, 0x3, 0x3, 0, 0},
10170 {0x2C, 0, 0, 0, 0},
10171 {0x2D, 0, 0, 0, 0},
10172 {0x2E, 0x1, 0x1, 0, 0},
10173 {0x2F, 0x1, 0x1, 0, 0},
10174 {0x30, 0, 0, 0, 0},
10175 {0x31, 0, 0, 0, 0},
10176 {0x32, 0, 0, 0, 0},
10177 {0x33, 0x11, 0x11, 0, 0},
10178 {0x34, 0xee, 0xee, 1, 1},
10179 {0x35, 0, 0, 0, 0},
10180 {0x36, 0, 0, 0, 0},
10181 {0x37, 0x3, 0x3, 0, 0},
10182 {0x38, 0x50, 0x50, 1, 1},
10183 {0x39, 0, 0, 0, 0},
10184 {0x3A, 0x50, 0x50, 1, 1},
10185 {0x3B, 0, 0, 0, 0},
10186 {0x3C, 0x6e, 0x6e, 0, 0},
10187 {0x3D, 0xf0, 0xf0, 1, 1},
10188 {0x3E, 0, 0, 0, 0},
10189 {0x3F, 0, 0, 0, 0},
10190 {0x40, 0, 0, 0, 0},
10191 {0x41, 0x3, 0x3, 0, 0},
10192 {0x42, 0x3, 0x3, 0, 0},
10193 {0x43, 0, 0, 0, 0},
10194 {0x44, 0x1e, 0x1e, 0, 0},
10195 {0x45, 0, 0, 0, 0},
10196 {0x46, 0x6e, 0x6e, 0, 0},
10197 {0x47, 0xf0, 0xf0, 1, 1},
10198 {0x48, 0, 0, 0, 0},
10199 {0x49, 0x2, 0x2, 0, 0},
10200 {0x4A, 0xff, 0xff, 1, 1},
10201 {0x4B, 0xc, 0xc, 0, 0},
10202 {0x4C, 0, 0, 0, 0},
10203 {0x4D, 0x38, 0x38, 0, 0},
10204 {0x4E, 0x70, 0x70, 1, 1},
10205 {0x4F, 0x2, 0x2, 0, 0},
10206 {0x50, 0x88, 0x88, 0, 0},
10207 {0x51, 0xc, 0xc, 0, 0},
10208 {0x52, 0, 0, 0, 0},
10209 {0x53, 0x8, 0x8, 0, 0},
10210 {0x54, 0x70, 0x70, 1, 1},
10211 {0x55, 0x2, 0x2, 0, 0},
10212 {0x56, 0xff, 0xff, 1, 1},
10213 {0x57, 0, 0, 0, 0},
10214 {0x58, 0x83, 0x83, 0, 0},
10215 {0x59, 0x77, 0x77, 1, 1},
10216 {0x5A, 0, 0, 0, 0},
10217 {0x5B, 0x2, 0x2, 0, 0},
10218 {0x5C, 0x88, 0x88, 0, 0},
10219 {0x5D, 0, 0, 0, 0},
10220 {0x5E, 0x8, 0x8, 0, 0},
10221 {0x5F, 0x77, 0x77, 1, 1},
10222 {0x60, 0x1, 0x1, 0, 0},
10223 {0x61, 0, 0, 0, 0},
10224 {0x62, 0x7, 0x7, 0, 0},
10225 {0x63, 0, 0, 0, 0},
10226 {0x64, 0x7, 0x7, 0, 0},
10227 {0x65, 0, 0, 0, 0},
10228 {0x66, 0, 0, 0, 0},
10229 {0x67, 0, 0, 1, 1},
10230 {0x68, 0, 0, 0, 0},
10231 {0x69, 0xa, 0xa, 0, 0},
10232 {0x6A, 0, 0, 0, 0},
10233 {0x6B, 0, 0, 0, 0},
10234 {0x6C, 0, 0, 0, 0},
10235 {0x6D, 0, 0, 0, 0},
10236 {0x6E, 0, 0, 0, 0},
10237 {0x6F, 0, 0, 0, 0},
10238 {0x70, 0, 0, 0, 0},
10239 {0x71, 0x2, 0x2, 0, 0},
10240 {0x72, 0, 0, 0, 0},
10241 {0x73, 0, 0, 0, 0},
10242 {0x74, 0xe, 0xe, 0, 0},
10243 {0x75, 0xe, 0xe, 0, 0},
10244 {0x76, 0xe, 0xe, 0, 0},
10245 {0x77, 0x13, 0x13, 0, 0},
10246 {0x78, 0x13, 0x13, 0, 0},
10247 {0x79, 0x1b, 0x1b, 0, 0},
10248 {0x7A, 0x1b, 0x1b, 0, 0},
10249 {0x7B, 0x55, 0x55, 0, 0},
10250 {0x7C, 0x5b, 0x5b, 0, 0},
10251 {0x7D, 0x30, 0x30, 1, 1},
10252 {0x7E, 0, 0, 0, 0},
10253 {0x7F, 0, 0, 0, 0},
10254 {0x80, 0, 0, 0, 0},
10255 {0x81, 0, 0, 0, 0},
10256 {0x82, 0, 0, 0, 0},
10257 {0x83, 0, 0, 0, 0},
10258 {0x84, 0, 0, 0, 0},
10259 {0x85, 0, 0, 0, 0},
10260 {0x86, 0, 0, 0, 0},
10261 {0x87, 0, 0, 0, 0},
10262 {0x88, 0, 0, 0, 0},
10263 {0x89, 0, 0, 0, 0},
10264 {0x8A, 0, 0, 0, 0},
10265 {0x8B, 0, 0, 0, 0},
10266 {0x8C, 0, 0, 0, 0},
10267 {0x8D, 0, 0, 0, 0},
10268 {0x8E, 0, 0, 0, 0},
10269 {0x8F, 0, 0, 0, 0},
10270 {0x90, 0, 0, 0, 0},
10271 {0x91, 0, 0, 0, 0},
10272 {0x92, 0, 0, 0, 0},
10273 {0x93, 0x70, 0x70, 0, 0},
10274 {0x94, 0x70, 0x70, 0, 0},
10275 {0x95, 0x71, 0x71, 1, 1},
10276 {0x96, 0x71, 0x71, 1, 1},
10277 {0x97, 0x72, 0x72, 1, 1},
10278 {0x98, 0x73, 0x73, 1, 1},
10279 {0x99, 0x74, 0x74, 1, 1},
10280 {0x9A, 0x75, 0x75, 1, 1},
10281 {0xFFFF, 0, 0, 0, 0},
10282 };
10283
10284 static struct radio_regs regs_RX_2056_rev7[] = {
10285 {0x02, 0, 0, 0, 0},
10286 {0x03, 0, 0, 0, 0},
10287 {0x04, 0, 0, 0, 0},
10288 {0x05, 0, 0, 0, 0},
10289 {0x06, 0, 0, 0, 0},
10290 {0x07, 0, 0, 0, 0},
10291 {0x08, 0, 0, 0, 0},
10292 {0x09, 0, 0, 0, 0},
10293 {0x0A, 0, 0, 0, 0},
10294 {0x0B, 0, 0, 0, 0},
10295 {0x0C, 0, 0, 0, 0},
10296 {0x0D, 0, 0, 0, 0},
10297 {0x0E, 0, 0, 0, 0},
10298 {0x0F, 0, 0, 0, 0},
10299 {0x10, 0, 0, 0, 0},
10300 {0x11, 0, 0, 0, 0},
10301 {0x12, 0, 0, 0, 0},
10302 {0x13, 0, 0, 0, 0},
10303 {0x14, 0, 0, 0, 0},
10304 {0x15, 0, 0, 0, 0},
10305 {0x16, 0, 0, 0, 0},
10306 {0x17, 0, 0, 0, 0},
10307 {0x18, 0, 0, 0, 0},
10308 {0x19, 0, 0, 0, 0},
10309 {0x1A, 0, 0, 0, 0},
10310 {0x1B, 0, 0, 0, 0},
10311 {0x1C, 0, 0, 0, 0},
10312 {0x1D, 0, 0, 0, 0},
10313 {0x1E, 0, 0, 0, 0},
10314 {0x1F, 0, 0, 0, 0},
10315 {0x20, 0x3, 0x3, 0, 0},
10316 {0x21, 0, 0, 0, 0},
10317 {0x22, 0, 0, 0, 0},
10318 {0x23, 0x90, 0x90, 0, 0},
10319 {0x24, 0x55, 0x55, 0, 0},
10320 {0x25, 0x15, 0x15, 0, 0},
10321 {0x26, 0x5, 0x5, 0, 0},
10322 {0x27, 0x15, 0x15, 0, 0},
10323 {0x28, 0x5, 0x5, 0, 0},
10324 {0x29, 0x20, 0x20, 0, 0},
10325 {0x2A, 0x11, 0x11, 0, 0},
10326 {0x2B, 0x90, 0x90, 0, 0},
10327 {0x2C, 0, 0, 0, 0},
10328 {0x2D, 0x88, 0x88, 0, 0},
10329 {0x2E, 0x32, 0x32, 0, 0},
10330 {0x2F, 0x77, 0x77, 0, 0},
10331 {0x30, 0x17, 0x17, 1, 1},
10332 {0x31, 0xff, 0xff, 1, 1},
10333 {0x32, 0x20, 0x20, 0, 0},
10334 {0x33, 0, 0, 0, 0},
10335 {0x34, 0x88, 0x88, 0, 0},
10336 {0x35, 0x32, 0x32, 0, 0},
10337 {0x36, 0x77, 0x77, 0, 0},
10338 {0x37, 0x17, 0x17, 1, 1},
10339 {0x38, 0xf0, 0xf0, 1, 1},
10340 {0x39, 0x20, 0x20, 0, 0},
10341 {0x3A, 0x8, 0x8, 0, 0},
10342 {0x3B, 0x55, 0x55, 1, 1},
10343 {0x3C, 0, 0, 0, 0},
10344 {0x3D, 0x88, 0x88, 1, 1},
10345 {0x3E, 0, 0, 0, 0},
10346 {0x3F, 0, 0, 1, 1},
10347 {0x40, 0x7, 0x7, 1, 1},
10348 {0x41, 0x6, 0x6, 0, 0},
10349 {0x42, 0x4, 0x4, 0, 0},
10350 {0x43, 0, 0, 0, 0},
10351 {0x44, 0x8, 0x8, 0, 0},
10352 {0x45, 0x55, 0x55, 1, 1},
10353 {0x46, 0, 0, 0, 0},
10354 {0x47, 0x11, 0x11, 0, 0},
10355 {0x48, 0, 0, 0, 0},
10356 {0x49, 0, 0, 1, 1},
10357 {0x4A, 0x7, 0x7, 0, 0},
10358 {0x4B, 0x6, 0x6, 0, 0},
10359 {0x4C, 0x4, 0x4, 0, 0},
10360 {0x4D, 0, 0, 0, 0},
10361 {0x4E, 0, 0, 0, 0},
10362 {0x4F, 0x26, 0x26, 1, 1},
10363 {0x50, 0x26, 0x26, 1, 1},
10364 {0x51, 0xf, 0xf, 1, 1},
10365 {0x52, 0xf, 0xf, 1, 1},
10366 {0x53, 0x44, 0x44, 0, 0},
10367 {0x54, 0, 0, 0, 0},
10368 {0x55, 0, 0, 0, 0},
10369 {0x56, 0x8, 0x8, 0, 0},
10370 {0x57, 0x8, 0x8, 0, 0},
10371 {0x58, 0x7, 0x7, 0, 0},
10372 {0x59, 0x22, 0x22, 0, 0},
10373 {0x5A, 0x22, 0x22, 0, 0},
10374 {0x5B, 0x2, 0x2, 0, 0},
10375 {0x5C, 0x4, 0x4, 1, 1},
10376 {0x5D, 0x7, 0x7, 0, 0},
10377 {0x5E, 0x55, 0x55, 0, 0},
10378 {0x5F, 0x23, 0x23, 0, 0},
10379 {0x60, 0x41, 0x41, 0, 0},
10380 {0x61, 0x1, 0x1, 0, 0},
10381 {0x62, 0xa, 0xa, 0, 0},
10382 {0x63, 0, 0, 0, 0},
10383 {0x64, 0, 0, 0, 0},
10384 {0x65, 0, 0, 0, 0},
10385 {0x66, 0, 0, 0, 0},
10386 {0x67, 0, 0, 0, 0},
10387 {0x68, 0, 0, 0, 0},
10388 {0x69, 0, 0, 0, 0},
10389 {0x6A, 0, 0, 0, 0},
10390 {0x6B, 0xc, 0xc, 0, 0},
10391 {0x6C, 0, 0, 0, 0},
10392 {0x6D, 0, 0, 0, 0},
10393 {0x6E, 0, 0, 0, 0},
10394 {0x6F, 0, 0, 0, 0},
10395 {0x70, 0, 0, 0, 0},
10396 {0x71, 0, 0, 0, 0},
10397 {0x72, 0x22, 0x22, 0, 0},
10398 {0x73, 0x22, 0x22, 0, 0},
10399 {0x74, 0, 0, 1, 1},
10400 {0x75, 0xa, 0xa, 0, 0},
10401 {0x76, 0x1, 0x1, 0, 0},
10402 {0x77, 0x22, 0x22, 0, 0},
10403 {0x78, 0x30, 0x30, 0, 0},
10404 {0x79, 0, 0, 0, 0},
10405 {0x7A, 0, 0, 0, 0},
10406 {0x7B, 0, 0, 0, 0},
10407 {0x7C, 0, 0, 0, 0},
10408 {0x7D, 0, 0, 0, 0},
10409 {0x7E, 0, 0, 0, 0},
10410 {0x7F, 0, 0, 0, 0},
10411 {0x80, 0, 0, 0, 0},
10412 {0x81, 0, 0, 0, 0},
10413 {0x82, 0, 0, 0, 0},
10414 {0x83, 0, 0, 0, 0},
10415 {0x84, 0, 0, 0, 0},
10416 {0x85, 0, 0, 0, 0},
10417 {0x86, 0, 0, 0, 0},
10418 {0x87, 0, 0, 0, 0},
10419 {0x88, 0, 0, 0, 0},
10420 {0x89, 0, 0, 0, 0},
10421 {0x8A, 0, 0, 0, 0},
10422 {0x8B, 0, 0, 0, 0},
10423 {0x8C, 0, 0, 0, 0},
10424 {0x8D, 0, 0, 0, 0},
10425 {0x8E, 0, 0, 0, 0},
10426 {0x8F, 0, 0, 0, 0},
10427 {0x90, 0, 0, 0, 0},
10428 {0x91, 0, 0, 0, 0},
10429 {0x92, 0, 0, 0, 0},
10430 {0x93, 0, 0, 0, 0},
10431 {0x94, 0, 0, 0, 0},
10432 {0xFFFF, 0, 0, 0, 0},
10433 };
10434
10435 static struct radio_regs regs_SYN_2056_rev8[] = {
10436 {0x02, 0, 0, 0, 0},
10437 {0x03, 0, 0, 0, 0},
10438 {0x04, 0, 0, 0, 0},
10439 {0x05, 0, 0, 0, 0},
10440 {0x06, 0, 0, 0, 0},
10441 {0x07, 0, 0, 0, 0},
10442 {0x08, 0, 0, 0, 0},
10443 {0x09, 0x1, 0x1, 0, 0},
10444 {0x0A, 0, 0, 0, 0},
10445 {0x0B, 0, 0, 0, 0},
10446 {0x0C, 0, 0, 0, 0},
10447 {0x0D, 0, 0, 0, 0},
10448 {0x0E, 0, 0, 0, 0},
10449 {0x0F, 0, 0, 0, 0},
10450 {0x10, 0, 0, 0, 0},
10451 {0x11, 0, 0, 0, 0},
10452 {0x12, 0, 0, 0, 0},
10453 {0x13, 0, 0, 0, 0},
10454 {0x14, 0, 0, 0, 0},
10455 {0x15, 0, 0, 0, 0},
10456 {0x16, 0, 0, 0, 0},
10457 {0x17, 0, 0, 0, 0},
10458 {0x18, 0, 0, 0, 0},
10459 {0x19, 0, 0, 0, 0},
10460 {0x1A, 0, 0, 0, 0},
10461 {0x1B, 0, 0, 0, 0},
10462 {0x1C, 0, 0, 0, 0},
10463 {0x1D, 0, 0, 0, 0},
10464 {0x1E, 0, 0, 0, 0},
10465 {0x1F, 0, 0, 0, 0},
10466 {0x20, 0, 0, 0, 0},
10467 {0x21, 0, 0, 0, 0},
10468 {0x22, 0x60, 0x60, 0, 0},
10469 {0x23, 0x6, 0x6, 0, 0},
10470 {0x24, 0xc, 0xc, 0, 0},
10471 {0x25, 0, 0, 0, 0},
10472 {0x26, 0, 0, 0, 0},
10473 {0x27, 0, 0, 0, 0},
10474 {0x28, 0x1, 0x1, 0, 0},
10475 {0x29, 0, 0, 0, 0},
10476 {0x2A, 0, 0, 0, 0},
10477 {0x2B, 0, 0, 0, 0},
10478 {0x2C, 0, 0, 0, 0},
10479 {0x2D, 0, 0, 0, 0},
10480 {0x2E, 0, 0, 0, 0},
10481 {0x2F, 0x1f, 0x1f, 0, 0},
10482 {0x30, 0x15, 0x15, 0, 0},
10483 {0x31, 0xf, 0xf, 0, 0},
10484 {0x32, 0, 0, 0, 0},
10485 {0x33, 0, 0, 0, 0},
10486 {0x34, 0, 0, 0, 0},
10487 {0x35, 0, 0, 0, 0},
10488 {0x36, 0, 0, 0, 0},
10489 {0x37, 0, 0, 0, 0},
10490 {0x38, 0, 0, 0, 0},
10491 {0x39, 0, 0, 0, 0},
10492 {0x3A, 0, 0, 0, 0},
10493 {0x3B, 0, 0, 0, 0},
10494 {0x3C, 0x13, 0x13, 0, 0},
10495 {0x3D, 0xf, 0xf, 0, 0},
10496 {0x3E, 0x18, 0x18, 0, 0},
10497 {0x3F, 0, 0, 0, 0},
10498 {0x40, 0, 0, 0, 0},
10499 {0x41, 0x20, 0x20, 0, 0},
10500 {0x42, 0x20, 0x20, 0, 0},
10501 {0x43, 0, 0, 0, 0},
10502 {0x44, 0x77, 0x77, 0, 0},
10503 {0x45, 0x7, 0x7, 0, 0},
10504 {0x46, 0x1, 0x1, 0, 0},
10505 {0x47, 0x4, 0x4, 0, 0},
10506 {0x48, 0xf, 0xf, 0, 0},
10507 {0x49, 0x30, 0x30, 0, 0},
10508 {0x4A, 0x32, 0x32, 0, 0},
10509 {0x4B, 0xd, 0xd, 0, 0},
10510 {0x4C, 0xd, 0xd, 0, 0},
10511 {0x4D, 0x4, 0x4, 0, 0},
10512 {0x4E, 0x6, 0x6, 0, 0},
10513 {0x4F, 0x1, 0x1, 0, 0},
10514 {0x50, 0x1c, 0x1c, 0, 0},
10515 {0x51, 0x2, 0x2, 0, 0},
10516 {0x52, 0x2, 0x2, 0, 0},
10517 {0x53, 0xf7, 0xf7, 1, 1},
10518 {0x54, 0xb4, 0xb4, 0, 0},
10519 {0x55, 0xd2, 0xd2, 0, 0},
10520 {0x56, 0, 0, 0, 0},
10521 {0x57, 0, 0, 0, 0},
10522 {0x58, 0x4, 0x4, 0, 0},
10523 {0x59, 0x96, 0x96, 0, 0},
10524 {0x5A, 0x3e, 0x3e, 0, 0},
10525 {0x5B, 0x3e, 0x3e, 0, 0},
10526 {0x5C, 0x13, 0x13, 0, 0},
10527 {0x5D, 0x2, 0x2, 0, 0},
10528 {0x5E, 0, 0, 0, 0},
10529 {0x5F, 0x7, 0x7, 0, 0},
10530 {0x60, 0x7, 0x7, 1, 1},
10531 {0x61, 0x8, 0x8, 0, 0},
10532 {0x62, 0x3, 0x3, 0, 0},
10533 {0x63, 0, 0, 0, 0},
10534 {0x64, 0, 0, 0, 0},
10535 {0x65, 0, 0, 0, 0},
10536 {0x66, 0, 0, 0, 0},
10537 {0x67, 0, 0, 0, 0},
10538 {0x68, 0x40, 0x40, 0, 0},
10539 {0x69, 0, 0, 0, 0},
10540 {0x6A, 0, 0, 0, 0},
10541 {0x6B, 0, 0, 0, 0},
10542 {0x6C, 0, 0, 0, 0},
10543 {0x6D, 0x1, 0x1, 0, 0},
10544 {0x6E, 0, 0, 0, 0},
10545 {0x6F, 0, 0, 0, 0},
10546 {0x70, 0x60, 0x60, 0, 0},
10547 {0x71, 0x66, 0x66, 0, 0},
10548 {0x72, 0xc, 0xc, 0, 0},
10549 {0x73, 0x66, 0x66, 0, 0},
10550 {0x74, 0x8f, 0x8f, 1, 1},
10551 {0x75, 0, 0, 0, 0},
10552 {0x76, 0xcc, 0xcc, 0, 0},
10553 {0x77, 0x1, 0x1, 0, 0},
10554 {0x78, 0x66, 0x66, 0, 0},
10555 {0x79, 0x66, 0x66, 0, 0},
10556 {0x7A, 0, 0, 0, 0},
10557 {0x7B, 0, 0, 0, 0},
10558 {0x7C, 0, 0, 0, 0},
10559 {0x7D, 0, 0, 0, 0},
10560 {0x7E, 0, 0, 0, 0},
10561 {0x7F, 0, 0, 0, 0},
10562 {0x80, 0, 0, 0, 0},
10563 {0x81, 0, 0, 0, 0},
10564 {0x82, 0, 0, 0, 0},
10565 {0x83, 0, 0, 0, 0},
10566 {0x84, 0, 0, 0, 0},
10567 {0x85, 0xff, 0xff, 0, 0},
10568 {0x86, 0, 0, 0, 0},
10569 {0x87, 0, 0, 0, 0},
10570 {0x88, 0, 0, 0, 0},
10571 {0x89, 0, 0, 0, 0},
10572 {0x8A, 0, 0, 0, 0},
10573 {0x8B, 0, 0, 0, 0},
10574 {0x8C, 0, 0, 0, 0},
10575 {0x8D, 0, 0, 0, 0},
10576 {0x8E, 0, 0, 0, 0},
10577 {0x8F, 0, 0, 0, 0},
10578 {0x90, 0, 0, 0, 0},
10579 {0x91, 0, 0, 0, 0},
10580 {0x92, 0, 0, 0, 0},
10581 {0x93, 0, 0, 0, 0},
10582 {0x94, 0, 0, 0, 0},
10583 {0x95, 0, 0, 0, 0},
10584 {0x96, 0, 0, 0, 0},
10585 {0x97, 0, 0, 0, 0},
10586 {0x98, 0, 0, 0, 0},
10587 {0x99, 0, 0, 0, 0},
10588 {0x9A, 0, 0, 0, 0},
10589 {0x9B, 0, 0, 0, 0},
10590 {0x9C, 0, 0, 0, 0},
10591 {0x9D, 0, 0, 0, 0},
10592 {0x9E, 0, 0, 0, 0},
10593 {0x9F, 0x6, 0x6, 0, 0},
10594 {0xA0, 0x66, 0x66, 0, 0},
10595 {0xA1, 0x66, 0x66, 0, 0},
10596 {0xA2, 0x66, 0x66, 0, 0},
10597 {0xA3, 0x66, 0x66, 0, 0},
10598 {0xA4, 0x66, 0x66, 0, 0},
10599 {0xA5, 0x66, 0x66, 0, 0},
10600 {0xA6, 0x66, 0x66, 0, 0},
10601 {0xA7, 0x66, 0x66, 0, 0},
10602 {0xA8, 0x66, 0x66, 0, 0},
10603 {0xA9, 0x66, 0x66, 0, 0},
10604 {0xAA, 0x66, 0x66, 0, 0},
10605 {0xAB, 0x66, 0x66, 0, 0},
10606 {0xAC, 0x66, 0x66, 0, 0},
10607 {0xAD, 0x66, 0x66, 0, 0},
10608 {0xAE, 0x66, 0x66, 0, 0},
10609 {0xAF, 0x66, 0x66, 0, 0},
10610 {0xB0, 0x66, 0x66, 0, 0},
10611 {0xB1, 0x66, 0x66, 0, 0},
10612 {0xB2, 0x66, 0x66, 0, 0},
10613 {0xB3, 0xa, 0xa, 0, 0},
10614 {0xB4, 0, 0, 0, 0},
10615 {0xB5, 0, 0, 0, 0},
10616 {0xB6, 0, 0, 0, 0},
10617 {0xFFFF, 0, 0, 0, 0},
10618 };
10619
10620 static struct radio_regs regs_TX_2056_rev8[] = {
10621 {0x02, 0, 0, 0, 0},
10622 {0x03, 0, 0, 0, 0},
10623 {0x04, 0, 0, 0, 0},
10624 {0x05, 0, 0, 0, 0},
10625 {0x06, 0, 0, 0, 0},
10626 {0x07, 0, 0, 0, 0},
10627 {0x08, 0, 0, 0, 0},
10628 {0x09, 0, 0, 0, 0},
10629 {0x0A, 0, 0, 0, 0},
10630 {0x0B, 0, 0, 0, 0},
10631 {0x0C, 0, 0, 0, 0},
10632 {0x0D, 0, 0, 0, 0},
10633 {0x0E, 0, 0, 0, 0},
10634 {0x0F, 0, 0, 0, 0},
10635 {0x10, 0, 0, 0, 0},
10636 {0x11, 0, 0, 0, 0},
10637 {0x12, 0, 0, 0, 0},
10638 {0x13, 0, 0, 0, 0},
10639 {0x14, 0, 0, 0, 0},
10640 {0x15, 0, 0, 0, 0},
10641 {0x16, 0, 0, 0, 0},
10642 {0x17, 0, 0, 0, 0},
10643 {0x18, 0, 0, 0, 0},
10644 {0x19, 0, 0, 0, 0},
10645 {0x1A, 0, 0, 0, 0},
10646 {0x1B, 0, 0, 0, 0},
10647 {0x1C, 0, 0, 0, 0},
10648 {0x1D, 0, 0, 0, 0},
10649 {0x1E, 0, 0, 0, 0},
10650 {0x1F, 0, 0, 0, 0},
10651 {0x20, 0, 0, 0, 0},
10652 {0x21, 0x88, 0x88, 0, 0},
10653 {0x22, 0x88, 0x88, 0, 0},
10654 {0x23, 0x88, 0x88, 0, 0},
10655 {0x24, 0x88, 0x88, 0, 0},
10656 {0x25, 0xc, 0xc, 0, 0},
10657 {0x26, 0, 0, 0, 0},
10658 {0x27, 0x3, 0x3, 0, 0},
10659 {0x28, 0, 0, 0, 0},
10660 {0x29, 0x3, 0x3, 0, 0},
10661 {0x2A, 0x37, 0x37, 0, 0},
10662 {0x2B, 0x3, 0x3, 0, 0},
10663 {0x2C, 0, 0, 0, 0},
10664 {0x2D, 0, 0, 0, 0},
10665 {0x2E, 0x1, 0x1, 0, 0},
10666 {0x2F, 0x1, 0x1, 0, 0},
10667 {0x30, 0, 0, 0, 0},
10668 {0x31, 0, 0, 0, 0},
10669 {0x32, 0, 0, 0, 0},
10670 {0x33, 0x11, 0x11, 0, 0},
10671 {0x34, 0xee, 0xee, 1, 1},
10672 {0x35, 0, 0, 0, 0},
10673 {0x36, 0, 0, 0, 0},
10674 {0x37, 0x3, 0x3, 0, 0},
10675 {0x38, 0x50, 0x50, 1, 1},
10676 {0x39, 0, 0, 0, 0},
10677 {0x3A, 0x50, 0x50, 1, 1},
10678 {0x3B, 0, 0, 0, 0},
10679 {0x3C, 0x6e, 0x6e, 0, 0},
10680 {0x3D, 0xf0, 0xf0, 1, 1},
10681 {0x3E, 0, 0, 0, 0},
10682 {0x3F, 0, 0, 0, 0},
10683 {0x40, 0, 0, 0, 0},
10684 {0x41, 0x3, 0x3, 0, 0},
10685 {0x42, 0x3, 0x3, 0, 0},
10686 {0x43, 0, 0, 0, 0},
10687 {0x44, 0x1e, 0x1e, 0, 0},
10688 {0x45, 0, 0, 0, 0},
10689 {0x46, 0x6e, 0x6e, 0, 0},
10690 {0x47, 0xf0, 0xf0, 1, 1},
10691 {0x48, 0, 0, 0, 0},
10692 {0x49, 0x2, 0x2, 0, 0},
10693 {0x4A, 0xff, 0xff, 1, 1},
10694 {0x4B, 0xc, 0xc, 0, 0},
10695 {0x4C, 0, 0, 0, 0},
10696 {0x4D, 0x38, 0x38, 0, 0},
10697 {0x4E, 0x70, 0x70, 1, 1},
10698 {0x4F, 0x2, 0x2, 0, 0},
10699 {0x50, 0x88, 0x88, 0, 0},
10700 {0x51, 0xc, 0xc, 0, 0},
10701 {0x52, 0, 0, 0, 0},
10702 {0x53, 0x8, 0x8, 0, 0},
10703 {0x54, 0x70, 0x70, 1, 1},
10704 {0x55, 0x2, 0x2, 0, 0},
10705 {0x56, 0xff, 0xff, 1, 1},
10706 {0x57, 0, 0, 0, 0},
10707 {0x58, 0x83, 0x83, 0, 0},
10708 {0x59, 0x77, 0x77, 1, 1},
10709 {0x5A, 0, 0, 0, 0},
10710 {0x5B, 0x2, 0x2, 0, 0},
10711 {0x5C, 0x88, 0x88, 0, 0},
10712 {0x5D, 0, 0, 0, 0},
10713 {0x5E, 0x8, 0x8, 0, 0},
10714 {0x5F, 0x77, 0x77, 1, 1},
10715 {0x60, 0x1, 0x1, 0, 0},
10716 {0x61, 0, 0, 0, 0},
10717 {0x62, 0x7, 0x7, 0, 0},
10718 {0x63, 0, 0, 0, 0},
10719 {0x64, 0x7, 0x7, 0, 0},
10720 {0x65, 0, 0, 0, 0},
10721 {0x66, 0, 0, 0, 0},
10722 {0x67, 0, 0, 1, 1},
10723 {0x68, 0, 0, 0, 0},
10724 {0x69, 0xa, 0xa, 0, 0},
10725 {0x6A, 0, 0, 0, 0},
10726 {0x6B, 0, 0, 0, 0},
10727 {0x6C, 0, 0, 0, 0},
10728 {0x6D, 0, 0, 0, 0},
10729 {0x6E, 0, 0, 0, 0},
10730 {0x6F, 0, 0, 0, 0},
10731 {0x70, 0, 0, 0, 0},
10732 {0x71, 0x2, 0x2, 0, 0},
10733 {0x72, 0, 0, 0, 0},
10734 {0x73, 0, 0, 0, 0},
10735 {0x74, 0xe, 0xe, 0, 0},
10736 {0x75, 0xe, 0xe, 0, 0},
10737 {0x76, 0xe, 0xe, 0, 0},
10738 {0x77, 0x13, 0x13, 0, 0},
10739 {0x78, 0x13, 0x13, 0, 0},
10740 {0x79, 0x1b, 0x1b, 0, 0},
10741 {0x7A, 0x1b, 0x1b, 0, 0},
10742 {0x7B, 0x55, 0x55, 0, 0},
10743 {0x7C, 0x5b, 0x5b, 0, 0},
10744 {0x7D, 0x30, 0x30, 1, 1},
10745 {0x7E, 0, 0, 0, 0},
10746 {0x7F, 0, 0, 0, 0},
10747 {0x80, 0, 0, 0, 0},
10748 {0x81, 0, 0, 0, 0},
10749 {0x82, 0, 0, 0, 0},
10750 {0x83, 0, 0, 0, 0},
10751 {0x84, 0, 0, 0, 0},
10752 {0x85, 0, 0, 0, 0},
10753 {0x86, 0, 0, 0, 0},
10754 {0x87, 0, 0, 0, 0},
10755 {0x88, 0, 0, 0, 0},
10756 {0x89, 0, 0, 0, 0},
10757 {0x8A, 0, 0, 0, 0},
10758 {0x8B, 0, 0, 0, 0},
10759 {0x8C, 0, 0, 0, 0},
10760 {0x8D, 0, 0, 0, 0},
10761 {0x8E, 0, 0, 0, 0},
10762 {0x8F, 0, 0, 0, 0},
10763 {0x90, 0, 0, 0, 0},
10764 {0x91, 0, 0, 0, 0},
10765 {0x92, 0, 0, 0, 0},
10766 {0x93, 0x70, 0x70, 0, 0},
10767 {0x94, 0x70, 0x70, 0, 0},
10768 {0x95, 0x70, 0x70, 0, 0},
10769 {0x96, 0x70, 0x70, 0, 0},
10770 {0x97, 0x70, 0x70, 0, 0},
10771 {0x98, 0x70, 0x70, 0, 0},
10772 {0x99, 0x70, 0x70, 0, 0},
10773 {0x9A, 0x70, 0x70, 0, 0},
10774 {0xFFFF, 0, 0, 0, 0},
10775 };
10776
10777 static struct radio_regs regs_RX_2056_rev8[] = {
10778 {0x02, 0, 0, 0, 0},
10779 {0x03, 0, 0, 0, 0},
10780 {0x04, 0, 0, 0, 0},
10781 {0x05, 0, 0, 0, 0},
10782 {0x06, 0, 0, 0, 0},
10783 {0x07, 0, 0, 0, 0},
10784 {0x08, 0, 0, 0, 0},
10785 {0x09, 0, 0, 0, 0},
10786 {0x0A, 0, 0, 0, 0},
10787 {0x0B, 0, 0, 0, 0},
10788 {0x0C, 0, 0, 0, 0},
10789 {0x0D, 0, 0, 0, 0},
10790 {0x0E, 0, 0, 0, 0},
10791 {0x0F, 0, 0, 0, 0},
10792 {0x10, 0, 0, 0, 0},
10793 {0x11, 0, 0, 0, 0},
10794 {0x12, 0, 0, 0, 0},
10795 {0x13, 0, 0, 0, 0},
10796 {0x14, 0, 0, 0, 0},
10797 {0x15, 0, 0, 0, 0},
10798 {0x16, 0, 0, 0, 0},
10799 {0x17, 0, 0, 0, 0},
10800 {0x18, 0, 0, 0, 0},
10801 {0x19, 0, 0, 0, 0},
10802 {0x1A, 0, 0, 0, 0},
10803 {0x1B, 0, 0, 0, 0},
10804 {0x1C, 0, 0, 0, 0},
10805 {0x1D, 0, 0, 0, 0},
10806 {0x1E, 0, 0, 0, 0},
10807 {0x1F, 0, 0, 0, 0},
10808 {0x20, 0x3, 0x3, 0, 0},
10809 {0x21, 0, 0, 0, 0},
10810 {0x22, 0, 0, 0, 0},
10811 {0x23, 0x90, 0x90, 0, 0},
10812 {0x24, 0x55, 0x55, 0, 0},
10813 {0x25, 0x15, 0x15, 0, 0},
10814 {0x26, 0x5, 0x5, 0, 0},
10815 {0x27, 0x15, 0x15, 0, 0},
10816 {0x28, 0x5, 0x5, 0, 0},
10817 {0x29, 0x20, 0x20, 0, 0},
10818 {0x2A, 0x11, 0x11, 0, 0},
10819 {0x2B, 0x90, 0x90, 0, 0},
10820 {0x2C, 0, 0, 0, 0},
10821 {0x2D, 0x88, 0x88, 0, 0},
10822 {0x2E, 0x32, 0x32, 0, 0},
10823 {0x2F, 0x77, 0x77, 0, 0},
10824 {0x30, 0x17, 0x17, 1, 1},
10825 {0x31, 0xff, 0xff, 1, 1},
10826 {0x32, 0x20, 0x20, 0, 0},
10827 {0x33, 0, 0, 0, 0},
10828 {0x34, 0x88, 0x88, 0, 0},
10829 {0x35, 0x32, 0x32, 0, 0},
10830 {0x36, 0x77, 0x77, 0, 0},
10831 {0x37, 0x17, 0x17, 1, 1},
10832 {0x38, 0xf0, 0xf0, 1, 1},
10833 {0x39, 0x20, 0x20, 0, 0},
10834 {0x3A, 0x8, 0x8, 0, 0},
10835 {0x3B, 0x55, 0x55, 1, 1},
10836 {0x3C, 0, 0, 0, 0},
10837 {0x3D, 0x88, 0x88, 1, 1},
10838 {0x3E, 0, 0, 0, 0},
10839 {0x3F, 0x44, 0x44, 0, 0},
10840 {0x40, 0x7, 0x7, 1, 1},
10841 {0x41, 0x6, 0x6, 0, 0},
10842 {0x42, 0x4, 0x4, 0, 0},
10843 {0x43, 0, 0, 0, 0},
10844 {0x44, 0x8, 0x8, 0, 0},
10845 {0x45, 0x55, 0x55, 1, 1},
10846 {0x46, 0, 0, 0, 0},
10847 {0x47, 0x11, 0x11, 0, 0},
10848 {0x48, 0, 0, 0, 0},
10849 {0x49, 0x44, 0x44, 0, 0},
10850 {0x4A, 0x7, 0x7, 0, 0},
10851 {0x4B, 0x6, 0x6, 0, 0},
10852 {0x4C, 0x4, 0x4, 0, 0},
10853 {0x4D, 0, 0, 0, 0},
10854 {0x4E, 0, 0, 0, 0},
10855 {0x4F, 0x26, 0x26, 1, 1},
10856 {0x50, 0x26, 0x26, 1, 1},
10857 {0x51, 0xf, 0xf, 1, 1},
10858 {0x52, 0xf, 0xf, 1, 1},
10859 {0x53, 0x44, 0x44, 0, 0},
10860 {0x54, 0, 0, 0, 0},
10861 {0x55, 0, 0, 0, 0},
10862 {0x56, 0x8, 0x8, 0, 0},
10863 {0x57, 0x8, 0x8, 0, 0},
10864 {0x58, 0x7, 0x7, 0, 0},
10865 {0x59, 0x22, 0x22, 0, 0},
10866 {0x5A, 0x22, 0x22, 0, 0},
10867 {0x5B, 0x2, 0x2, 0, 0},
10868 {0x5C, 0x4, 0x4, 1, 1},
10869 {0x5D, 0x7, 0x7, 0, 0},
10870 {0x5E, 0x55, 0x55, 0, 0},
10871 {0x5F, 0x23, 0x23, 0, 0},
10872 {0x60, 0x41, 0x41, 0, 0},
10873 {0x61, 0x1, 0x1, 0, 0},
10874 {0x62, 0xa, 0xa, 0, 0},
10875 {0x63, 0, 0, 0, 0},
10876 {0x64, 0, 0, 0, 0},
10877 {0x65, 0, 0, 0, 0},
10878 {0x66, 0, 0, 0, 0},
10879 {0x67, 0, 0, 0, 0},
10880 {0x68, 0, 0, 0, 0},
10881 {0x69, 0, 0, 0, 0},
10882 {0x6A, 0, 0, 0, 0},
10883 {0x6B, 0xc, 0xc, 0, 0},
10884 {0x6C, 0, 0, 0, 0},
10885 {0x6D, 0, 0, 0, 0},
10886 {0x6E, 0, 0, 0, 0},
10887 {0x6F, 0, 0, 0, 0},
10888 {0x70, 0, 0, 0, 0},
10889 {0x71, 0, 0, 0, 0},
10890 {0x72, 0x22, 0x22, 0, 0},
10891 {0x73, 0x22, 0x22, 0, 0},
10892 {0x74, 0, 0, 1, 1},
10893 {0x75, 0xa, 0xa, 0, 0},
10894 {0x76, 0x1, 0x1, 0, 0},
10895 {0x77, 0x22, 0x22, 0, 0},
10896 {0x78, 0x30, 0x30, 0, 0},
10897 {0x79, 0, 0, 0, 0},
10898 {0x7A, 0, 0, 0, 0},
10899 {0x7B, 0, 0, 0, 0},
10900 {0x7C, 0, 0, 0, 0},
10901 {0x7D, 0x5, 0x5, 1, 1},
10902 {0x7E, 0, 0, 0, 0},
10903 {0x7F, 0, 0, 0, 0},
10904 {0x80, 0, 0, 0, 0},
10905 {0x81, 0, 0, 0, 0},
10906 {0x82, 0, 0, 0, 0},
10907 {0x83, 0, 0, 0, 0},
10908 {0x84, 0, 0, 0, 0},
10909 {0x85, 0, 0, 0, 0},
10910 {0x86, 0, 0, 0, 0},
10911 {0x87, 0, 0, 0, 0},
10912 {0x88, 0, 0, 0, 0},
10913 {0x89, 0, 0, 0, 0},
10914 {0x8A, 0, 0, 0, 0},
10915 {0x8B, 0, 0, 0, 0},
10916 {0x8C, 0, 0, 0, 0},
10917 {0x8D, 0, 0, 0, 0},
10918 {0x8E, 0, 0, 0, 0},
10919 {0x8F, 0, 0, 0, 0},
10920 {0x90, 0, 0, 0, 0},
10921 {0x91, 0, 0, 0, 0},
10922 {0x92, 0, 0, 0, 0},
10923 {0x93, 0, 0, 0, 0},
10924 {0x94, 0, 0, 0, 0},
10925 {0xFFFF, 0, 0, 0, 0},
10926 };
10927
10928 static const struct radio_regs regs_SYN_2056_rev11[] = {
10929 {0x02, 0, 0, 0, 0},
10930 {0x03, 0, 0, 0, 0},
10931 {0x04, 0, 0, 0, 0},
10932 {0x05, 0, 0, 0, 0},
10933 {0x06, 0, 0, 0, 0},
10934 {0x07, 0, 0, 0, 0},
10935 {0x08, 0, 0, 0, 0},
10936 {0x09, 0x1, 0x1, 0, 0},
10937 {0x0A, 0, 0, 0, 0},
10938 {0x0B, 0, 0, 0, 0},
10939 {0x0C, 0, 0, 0, 0},
10940 {0x0D, 0, 0, 0, 0},
10941 {0x0E, 0, 0, 0, 0},
10942 {0x0F, 0, 0, 0, 0},
10943 {0x10, 0, 0, 0, 0},
10944 {0x11, 0, 0, 0, 0},
10945 {0x12, 0, 0, 0, 0},
10946 {0x13, 0, 0, 0, 0},
10947 {0x14, 0, 0, 0, 0},
10948 {0x15, 0, 0, 0, 0},
10949 {0x16, 0, 0, 0, 0},
10950 {0x17, 0, 0, 0, 0},
10951 {0x18, 0, 0, 0, 0},
10952 {0x19, 0, 0, 0, 0},
10953 {0x1A, 0, 0, 0, 0},
10954 {0x1B, 0, 0, 0, 0},
10955 {0x1C, 0, 0, 0, 0},
10956 {0x1D, 0, 0, 0, 0},
10957 {0x1E, 0, 0, 0, 0},
10958 {0x1F, 0, 0, 0, 0},
10959 {0x20, 0, 0, 0, 0},
10960 {0x21, 0, 0, 0, 0},
10961 {0x22, 0x60, 0x60, 0, 0},
10962 {0x23, 0x6, 0x6, 0, 0},
10963 {0x24, 0xc, 0xc, 0, 0},
10964 {0x25, 0, 0, 0, 0},
10965 {0x26, 0, 0, 0, 0},
10966 {0x27, 0, 0, 0, 0},
10967 {0x28, 0x1, 0x1, 0, 0},
10968 {0x29, 0, 0, 0, 0},
10969 {0x2A, 0, 0, 0, 0},
10970 {0x2B, 0, 0, 0, 0},
10971 {0x2C, 0, 0, 0, 0},
10972 {0x2D, 0, 0, 0, 0},
10973 {0x2E, 0, 0, 0, 0},
10974 {0x2F, 0x1f, 0x1f, 0, 0},
10975 {0x30, 0x15, 0x15, 0, 0},
10976 {0x31, 0xf, 0xf, 0, 0},
10977 {0x32, 0, 0, 0, 0},
10978 {0x33, 0, 0, 0, 0},
10979 {0x34, 0, 0, 0, 0},
10980 {0x35, 0, 0, 0, 0},
10981 {0x36, 0, 0, 0, 0},
10982 {0x37, 0, 0, 0, 0},
10983 {0x38, 0, 0, 0, 0},
10984 {0x39, 0, 0, 0, 0},
10985 {0x3A, 0, 0, 0, 0},
10986 {0x3B, 0, 0, 0, 0},
10987 {0x3C, 0x13, 0x13, 0, 0},
10988 {0x3D, 0xf, 0xf, 0, 0},
10989 {0x3E, 0x18, 0x18, 0, 0},
10990 {0x3F, 0, 0, 0, 0},
10991 {0x40, 0, 0, 0, 0},
10992 {0x41, 0x20, 0x20, 0, 0},
10993 {0x42, 0x20, 0x20, 0, 0},
10994 {0x43, 0, 0, 0, 0},
10995 {0x44, 0x77, 0x77, 0, 0},
10996 {0x45, 0x7, 0x7, 0, 0},
10997 {0x46, 0x1, 0x1, 0, 0},
10998 {0x47, 0x6, 0x6, 1, 1},
10999 {0x48, 0xf, 0xf, 0, 0},
11000 {0x49, 0x3f, 0x3f, 1, 1},
11001 {0x4A, 0x32, 0x32, 0, 0},
11002 {0x4B, 0x6, 0x6, 1, 1},
11003 {0x4C, 0x6, 0x6, 1, 1},
11004 {0x4D, 0x4, 0x4, 0, 0},
11005 {0x4E, 0x2b, 0x2b, 1, 1},
11006 {0x4F, 0x1, 0x1, 0, 0},
11007 {0x50, 0x1c, 0x1c, 0, 0},
11008 {0x51, 0x2, 0x2, 0, 0},
11009 {0x52, 0x2, 0x2, 0, 0},
11010 {0x53, 0xf7, 0xf7, 1, 1},
11011 {0x54, 0xb4, 0xb4, 0, 0},
11012 {0x55, 0xd2, 0xd2, 0, 0},
11013 {0x56, 0, 0, 0, 0},
11014 {0x57, 0, 0, 0, 0},
11015 {0x58, 0x4, 0x4, 0, 0},
11016 {0x59, 0x96, 0x96, 0, 0},
11017 {0x5A, 0x3e, 0x3e, 0, 0},
11018 {0x5B, 0x3e, 0x3e, 0, 0},
11019 {0x5C, 0x13, 0x13, 0, 0},
11020 {0x5D, 0x2, 0x2, 0, 0},
11021 {0x5E, 0, 0, 0, 0},
11022 {0x5F, 0x7, 0x7, 0, 0},
11023 {0x60, 0x7, 0x7, 1, 1},
11024 {0x61, 0x8, 0x8, 0, 0},
11025 {0x62, 0x3, 0x3, 0, 0},
11026 {0x63, 0, 0, 0, 0},
11027 {0x64, 0, 0, 0, 0},
11028 {0x65, 0, 0, 0, 0},
11029 {0x66, 0, 0, 0, 0},
11030 {0x67, 0, 0, 0, 0},
11031 {0x68, 0x40, 0x40, 0, 0},
11032 {0x69, 0, 0, 0, 0},
11033 {0x6A, 0, 0, 0, 0},
11034 {0x6B, 0, 0, 0, 0},
11035 {0x6C, 0, 0, 0, 0},
11036 {0x6D, 0x1, 0x1, 0, 0},
11037 {0x6E, 0, 0, 0, 0},
11038 {0x6F, 0, 0, 0, 0},
11039 {0x70, 0x60, 0x60, 0, 0},
11040 {0x71, 0x66, 0x66, 0, 0},
11041 {0x72, 0xc, 0xc, 0, 0},
11042 {0x73, 0x66, 0x66, 0, 0},
11043 {0x74, 0x8f, 0x8f, 1, 1},
11044 {0x75, 0, 0, 0, 0},
11045 {0x76, 0xcc, 0xcc, 0, 0},
11046 {0x77, 0x1, 0x1, 0, 0},
11047 {0x78, 0x66, 0x66, 0, 0},
11048 {0x79, 0x66, 0x66, 0, 0},
11049 {0x7A, 0, 0, 0, 0},
11050 {0x7B, 0, 0, 0, 0},
11051 {0x7C, 0, 0, 0, 0},
11052 {0x7D, 0, 0, 0, 0},
11053 {0x7E, 0, 0, 0, 0},
11054 {0x7F, 0, 0, 0, 0},
11055 {0x80, 0, 0, 0, 0},
11056 {0x81, 0, 0, 0, 0},
11057 {0x82, 0, 0, 0, 0},
11058 {0x83, 0, 0, 0, 0},
11059 {0x84, 0, 0, 0, 0},
11060 {0x85, 0xff, 0xff, 0, 0},
11061 {0x86, 0, 0, 0, 0},
11062 {0x87, 0, 0, 0, 0},
11063 {0x88, 0, 0, 0, 0},
11064 {0x89, 0, 0, 0, 0},
11065 {0x8A, 0, 0, 0, 0},
11066 {0x8B, 0, 0, 0, 0},
11067 {0x8C, 0, 0, 0, 0},
11068 {0x8D, 0, 0, 0, 0},
11069 {0x8E, 0, 0, 0, 0},
11070 {0x8F, 0, 0, 0, 0},
11071 {0x90, 0, 0, 0, 0},
11072 {0x91, 0, 0, 0, 0},
11073 {0x92, 0, 0, 0, 0},
11074 {0x93, 0, 0, 0, 0},
11075 {0x94, 0, 0, 0, 0},
11076 {0x95, 0, 0, 0, 0},
11077 {0x96, 0, 0, 0, 0},
11078 {0x97, 0, 0, 0, 0},
11079 {0x98, 0, 0, 0, 0},
11080 {0x99, 0, 0, 0, 0},
11081 {0x9A, 0, 0, 0, 0},
11082 {0x9B, 0, 0, 0, 0},
11083 {0x9C, 0, 0, 0, 0},
11084 {0x9D, 0, 0, 0, 0},
11085 {0x9E, 0, 0, 0, 0},
11086 {0x9F, 0x6, 0x6, 0, 0},
11087 {0xA0, 0x66, 0x66, 0, 0},
11088 {0xA1, 0x66, 0x66, 0, 0},
11089 {0xA2, 0x66, 0x66, 0, 0},
11090 {0xA3, 0x66, 0x66, 0, 0},
11091 {0xA4, 0x66, 0x66, 0, 0},
11092 {0xA5, 0x66, 0x66, 0, 0},
11093 {0xA6, 0x66, 0x66, 0, 0},
11094 {0xA7, 0x66, 0x66, 0, 0},
11095 {0xA8, 0x66, 0x66, 0, 0},
11096 {0xA9, 0x66, 0x66, 0, 0},
11097 {0xAA, 0x66, 0x66, 0, 0},
11098 {0xAB, 0x66, 0x66, 0, 0},
11099 {0xAC, 0x66, 0x66, 0, 0},
11100 {0xAD, 0x66, 0x66, 0, 0},
11101 {0xAE, 0x66, 0x66, 0, 0},
11102 {0xAF, 0x66, 0x66, 0, 0},
11103 {0xB0, 0x66, 0x66, 0, 0},
11104 {0xB1, 0x66, 0x66, 0, 0},
11105 {0xB2, 0x66, 0x66, 0, 0},
11106 {0xB3, 0xa, 0xa, 0, 0},
11107 {0xB4, 0, 0, 0, 0},
11108 {0xB5, 0, 0, 0, 0},
11109 {0xB6, 0, 0, 0, 0},
11110 {0xFFFF, 0, 0, 0, 0},
11111 };
11112
11113 static const struct radio_regs regs_TX_2056_rev11[] = {
11114 {0x02, 0, 0, 0, 0},
11115 {0x03, 0, 0, 0, 0},
11116 {0x04, 0, 0, 0, 0},
11117 {0x05, 0, 0, 0, 0},
11118 {0x06, 0, 0, 0, 0},
11119 {0x07, 0, 0, 0, 0},
11120 {0x08, 0, 0, 0, 0},
11121 {0x09, 0, 0, 0, 0},
11122 {0x0A, 0, 0, 0, 0},
11123 {0x0B, 0, 0, 0, 0},
11124 {0x0C, 0, 0, 0, 0},
11125 {0x0D, 0, 0, 0, 0},
11126 {0x0E, 0, 0, 0, 0},
11127 {0x0F, 0, 0, 0, 0},
11128 {0x10, 0, 0, 0, 0},
11129 {0x11, 0, 0, 0, 0},
11130 {0x12, 0, 0, 0, 0},
11131 {0x13, 0, 0, 0, 0},
11132 {0x14, 0, 0, 0, 0},
11133 {0x15, 0, 0, 0, 0},
11134 {0x16, 0, 0, 0, 0},
11135 {0x17, 0, 0, 0, 0},
11136 {0x18, 0, 0, 0, 0},
11137 {0x19, 0, 0, 0, 0},
11138 {0x1A, 0, 0, 0, 0},
11139 {0x1B, 0, 0, 0, 0},
11140 {0x1C, 0, 0, 0, 0},
11141 {0x1D, 0, 0, 0, 0},
11142 {0x1E, 0, 0, 0, 0},
11143 {0x1F, 0, 0, 0, 0},
11144 {0x20, 0, 0, 0, 0},
11145 {0x21, 0x88, 0x88, 0, 0},
11146 {0x22, 0x88, 0x88, 0, 0},
11147 {0x23, 0x88, 0x88, 0, 0},
11148 {0x24, 0x88, 0x88, 0, 0},
11149 {0x25, 0xc, 0xc, 0, 0},
11150 {0x26, 0, 0, 0, 0},
11151 {0x27, 0x3, 0x3, 0, 0},
11152 {0x28, 0, 0, 0, 0},
11153 {0x29, 0x3, 0x3, 0, 0},
11154 {0x2A, 0x37, 0x37, 0, 0},
11155 {0x2B, 0x3, 0x3, 0, 0},
11156 {0x2C, 0, 0, 0, 0},
11157 {0x2D, 0, 0, 0, 0},
11158 {0x2E, 0x1, 0x1, 0, 0},
11159 {0x2F, 0x1, 0x1, 0, 0},
11160 {0x30, 0, 0, 0, 0},
11161 {0x31, 0, 0, 0, 0},
11162 {0x32, 0, 0, 0, 0},
11163 {0x33, 0x11, 0x11, 0, 0},
11164 {0x34, 0xee, 0xee, 1, 1},
11165 {0x35, 0, 0, 0, 0},
11166 {0x36, 0, 0, 0, 0},
11167 {0x37, 0x3, 0x3, 0, 0},
11168 {0x38, 0x50, 0x50, 1, 1},
11169 {0x39, 0, 0, 0, 0},
11170 {0x3A, 0x50, 0x50, 1, 1},
11171 {0x3B, 0, 0, 0, 0},
11172 {0x3C, 0x6e, 0x6e, 0, 0},
11173 {0x3D, 0xf0, 0xf0, 1, 1},
11174 {0x3E, 0, 0, 0, 0},
11175 {0x3F, 0, 0, 0, 0},
11176 {0x40, 0, 0, 0, 0},
11177 {0x41, 0x3, 0x3, 0, 0},
11178 {0x42, 0x3, 0x3, 0, 0},
11179 {0x43, 0, 0, 0, 0},
11180 {0x44, 0x1e, 0x1e, 0, 0},
11181 {0x45, 0, 0, 0, 0},
11182 {0x46, 0x6e, 0x6e, 0, 0},
11183 {0x47, 0xf0, 0xf0, 1, 1},
11184 {0x48, 0, 0, 0, 0},
11185 {0x49, 0x2, 0x2, 0, 0},
11186 {0x4A, 0xff, 0xff, 1, 1},
11187 {0x4B, 0xc, 0xc, 0, 0},
11188 {0x4C, 0, 0, 0, 0},
11189 {0x4D, 0x38, 0x38, 0, 0},
11190 {0x4E, 0x70, 0x70, 1, 1},
11191 {0x4F, 0x2, 0x2, 0, 0},
11192 {0x50, 0x88, 0x88, 0, 0},
11193 {0x51, 0xc, 0xc, 0, 0},
11194 {0x52, 0, 0, 0, 0},
11195 {0x53, 0x8, 0x8, 0, 0},
11196 {0x54, 0x70, 0x70, 1, 1},
11197 {0x55, 0x2, 0x2, 0, 0},
11198 {0x56, 0xff, 0xff, 1, 1},
11199 {0x57, 0, 0, 0, 0},
11200 {0x58, 0x83, 0x83, 0, 0},
11201 {0x59, 0x77, 0x77, 1, 1},
11202 {0x5A, 0, 0, 0, 0},
11203 {0x5B, 0x2, 0x2, 0, 0},
11204 {0x5C, 0x88, 0x88, 0, 0},
11205 {0x5D, 0, 0, 0, 0},
11206 {0x5E, 0x8, 0x8, 0, 0},
11207 {0x5F, 0x77, 0x77, 1, 1},
11208 {0x60, 0x1, 0x1, 0, 0},
11209 {0x61, 0, 0, 0, 0},
11210 {0x62, 0x7, 0x7, 0, 0},
11211 {0x63, 0, 0, 0, 0},
11212 {0x64, 0x7, 0x7, 0, 0},
11213 {0x65, 0, 0, 0, 0},
11214 {0x66, 0, 0, 0, 0},
11215 {0x67, 0, 0, 1, 1},
11216 {0x68, 0, 0, 0, 0},
11217 {0x69, 0xa, 0xa, 0, 0},
11218 {0x6A, 0, 0, 0, 0},
11219 {0x6B, 0, 0, 0, 0},
11220 {0x6C, 0, 0, 0, 0},
11221 {0x6D, 0, 0, 0, 0},
11222 {0x6E, 0, 0, 0, 0},
11223 {0x6F, 0, 0, 0, 0},
11224 {0x70, 0, 0, 0, 0},
11225 {0x71, 0x2, 0x2, 0, 0},
11226 {0x72, 0, 0, 0, 0},
11227 {0x73, 0, 0, 0, 0},
11228 {0x74, 0xe, 0xe, 0, 0},
11229 {0x75, 0xe, 0xe, 0, 0},
11230 {0x76, 0xe, 0xe, 0, 0},
11231 {0x77, 0x13, 0x13, 0, 0},
11232 {0x78, 0x13, 0x13, 0, 0},
11233 {0x79, 0x1b, 0x1b, 0, 0},
11234 {0x7A, 0x1b, 0x1b, 0, 0},
11235 {0x7B, 0x55, 0x55, 0, 0},
11236 {0x7C, 0x5b, 0x5b, 0, 0},
11237 {0x7D, 0x30, 0x30, 1, 1},
11238 {0x7E, 0, 0, 0, 0},
11239 {0x7F, 0, 0, 0, 0},
11240 {0x80, 0, 0, 0, 0},
11241 {0x81, 0, 0, 0, 0},
11242 {0x82, 0, 0, 0, 0},
11243 {0x83, 0, 0, 0, 0},
11244 {0x84, 0, 0, 0, 0},
11245 {0x85, 0, 0, 0, 0},
11246 {0x86, 0, 0, 0, 0},
11247 {0x87, 0, 0, 0, 0},
11248 {0x88, 0, 0, 0, 0},
11249 {0x89, 0, 0, 0, 0},
11250 {0x8A, 0, 0, 0, 0},
11251 {0x8B, 0, 0, 0, 0},
11252 {0x8C, 0, 0, 0, 0},
11253 {0x8D, 0, 0, 0, 0},
11254 {0x8E, 0, 0, 0, 0},
11255 {0x8F, 0, 0, 0, 0},
11256 {0x90, 0, 0, 0, 0},
11257 {0x91, 0, 0, 0, 0},
11258 {0x92, 0, 0, 0, 0},
11259 {0x93, 0x70, 0x70, 0, 0},
11260 {0x94, 0x70, 0x70, 0, 0},
11261 {0x95, 0x70, 0x70, 0, 0},
11262 {0x96, 0x70, 0x70, 0, 0},
11263 {0x97, 0x70, 0x70, 0, 0},
11264 {0x98, 0x70, 0x70, 0, 0},
11265 {0x99, 0x70, 0x70, 0, 0},
11266 {0x9A, 0x70, 0x70, 0, 0},
11267 {0xFFFF, 0, 0, 0, 0},
11268 };
11269
11270 static const struct radio_regs regs_RX_2056_rev11[] = {
11271 {0x02, 0, 0, 0, 0},
11272 {0x03, 0, 0, 0, 0},
11273 {0x04, 0, 0, 0, 0},
11274 {0x05, 0, 0, 0, 0},
11275 {0x06, 0, 0, 0, 0},
11276 {0x07, 0, 0, 0, 0},
11277 {0x08, 0, 0, 0, 0},
11278 {0x09, 0, 0, 0, 0},
11279 {0x0A, 0, 0, 0, 0},
11280 {0x0B, 0, 0, 0, 0},
11281 {0x0C, 0, 0, 0, 0},
11282 {0x0D, 0, 0, 0, 0},
11283 {0x0E, 0, 0, 0, 0},
11284 {0x0F, 0, 0, 0, 0},
11285 {0x10, 0, 0, 0, 0},
11286 {0x11, 0, 0, 0, 0},
11287 {0x12, 0, 0, 0, 0},
11288 {0x13, 0, 0, 0, 0},
11289 {0x14, 0, 0, 0, 0},
11290 {0x15, 0, 0, 0, 0},
11291 {0x16, 0, 0, 0, 0},
11292 {0x17, 0, 0, 0, 0},
11293 {0x18, 0, 0, 0, 0},
11294 {0x19, 0, 0, 0, 0},
11295 {0x1A, 0, 0, 0, 0},
11296 {0x1B, 0, 0, 0, 0},
11297 {0x1C, 0, 0, 0, 0},
11298 {0x1D, 0, 0, 0, 0},
11299 {0x1E, 0, 0, 0, 0},
11300 {0x1F, 0, 0, 0, 0},
11301 {0x20, 0x3, 0x3, 0, 0},
11302 {0x21, 0, 0, 0, 0},
11303 {0x22, 0, 0, 0, 0},
11304 {0x23, 0x90, 0x90, 0, 0},
11305 {0x24, 0x55, 0x55, 0, 0},
11306 {0x25, 0x15, 0x15, 0, 0},
11307 {0x26, 0x5, 0x5, 0, 0},
11308 {0x27, 0x15, 0x15, 0, 0},
11309 {0x28, 0x5, 0x5, 0, 0},
11310 {0x29, 0x20, 0x20, 0, 0},
11311 {0x2A, 0x11, 0x11, 0, 0},
11312 {0x2B, 0x90, 0x90, 0, 0},
11313 {0x2C, 0, 0, 0, 0},
11314 {0x2D, 0x88, 0x88, 0, 0},
11315 {0x2E, 0x32, 0x32, 0, 0},
11316 {0x2F, 0x77, 0x77, 0, 0},
11317 {0x30, 0x17, 0x17, 1, 1},
11318 {0x31, 0xff, 0xff, 1, 1},
11319 {0x32, 0x20, 0x20, 0, 0},
11320 {0x33, 0, 0, 0, 0},
11321 {0x34, 0x88, 0x88, 0, 0},
11322 {0x35, 0x32, 0x32, 0, 0},
11323 {0x36, 0x77, 0x77, 0, 0},
11324 {0x37, 0x17, 0x17, 1, 1},
11325 {0x38, 0xf0, 0xf0, 1, 1},
11326 {0x39, 0x20, 0x20, 0, 0},
11327 {0x3A, 0x8, 0x8, 0, 0},
11328 {0x3B, 0x55, 0x55, 1, 1},
11329 {0x3C, 0, 0, 0, 0},
11330 {0x3D, 0x88, 0x88, 1, 1},
11331 {0x3E, 0, 0, 0, 0},
11332 {0x3F, 0x44, 0x44, 0, 0},
11333 {0x40, 0x7, 0x7, 1, 1},
11334 {0x41, 0x6, 0x6, 0, 0},
11335 {0x42, 0x4, 0x4, 0, 0},
11336 {0x43, 0, 0, 0, 0},
11337 {0x44, 0x8, 0x8, 0, 0},
11338 {0x45, 0x55, 0x55, 1, 1},
11339 {0x46, 0, 0, 0, 0},
11340 {0x47, 0x11, 0x11, 0, 0},
11341 {0x48, 0, 0, 0, 0},
11342 {0x49, 0x44, 0x44, 0, 0},
11343 {0x4A, 0x7, 0x7, 0, 0},
11344 {0x4B, 0x6, 0x6, 0, 0},
11345 {0x4C, 0x4, 0x4, 0, 0},
11346 {0x4D, 0, 0, 0, 0},
11347 {0x4E, 0, 0, 0, 0},
11348 {0x4F, 0x26, 0x26, 1, 1},
11349 {0x50, 0x26, 0x26, 1, 1},
11350 {0x51, 0xf, 0xf, 1, 1},
11351 {0x52, 0xf, 0xf, 1, 1},
11352 {0x53, 0x44, 0x44, 0, 0},
11353 {0x54, 0, 0, 0, 0},
11354 {0x55, 0, 0, 0, 0},
11355 {0x56, 0x8, 0x8, 0, 0},
11356 {0x57, 0x8, 0x8, 0, 0},
11357 {0x58, 0x7, 0x7, 0, 0},
11358 {0x59, 0x22, 0x22, 0, 0},
11359 {0x5A, 0x22, 0x22, 0, 0},
11360 {0x5B, 0x2, 0x2, 0, 0},
11361 {0x5C, 0x4, 0x4, 1, 1},
11362 {0x5D, 0x7, 0x7, 0, 0},
11363 {0x5E, 0x55, 0x55, 0, 0},
11364 {0x5F, 0x23, 0x23, 0, 0},
11365 {0x60, 0x41, 0x41, 0, 0},
11366 {0x61, 0x1, 0x1, 0, 0},
11367 {0x62, 0xa, 0xa, 0, 0},
11368 {0x63, 0, 0, 0, 0},
11369 {0x64, 0, 0, 0, 0},
11370 {0x65, 0, 0, 0, 0},
11371 {0x66, 0, 0, 0, 0},
11372 {0x67, 0, 0, 0, 0},
11373 {0x68, 0, 0, 0, 0},
11374 {0x69, 0, 0, 0, 0},
11375 {0x6A, 0, 0, 0, 0},
11376 {0x6B, 0xc, 0xc, 0, 0},
11377 {0x6C, 0, 0, 0, 0},
11378 {0x6D, 0, 0, 0, 0},
11379 {0x6E, 0, 0, 0, 0},
11380 {0x6F, 0, 0, 0, 0},
11381 {0x70, 0, 0, 0, 0},
11382 {0x71, 0, 0, 0, 0},
11383 {0x72, 0x22, 0x22, 0, 0},
11384 {0x73, 0x22, 0x22, 0, 0},
11385 {0x74, 0, 0, 1, 1},
11386 {0x75, 0xa, 0xa, 0, 0},
11387 {0x76, 0x1, 0x1, 0, 0},
11388 {0x77, 0x22, 0x22, 0, 0},
11389 {0x78, 0x30, 0x30, 0, 0},
11390 {0x79, 0, 0, 0, 0},
11391 {0x7A, 0, 0, 0, 0},
11392 {0x7B, 0, 0, 0, 0},
11393 {0x7C, 0, 0, 0, 0},
11394 {0x7D, 0x5, 0x5, 1, 1},
11395 {0x7E, 0, 0, 0, 0},
11396 {0x7F, 0, 0, 0, 0},
11397 {0x80, 0, 0, 0, 0},
11398 {0x81, 0, 0, 0, 0},
11399 {0x82, 0, 0, 0, 0},
11400 {0x83, 0, 0, 0, 0},
11401 {0x84, 0, 0, 0, 0},
11402 {0x85, 0, 0, 0, 0},
11403 {0x86, 0, 0, 0, 0},
11404 {0x87, 0, 0, 0, 0},
11405 {0x88, 0, 0, 0, 0},
11406 {0x89, 0, 0, 0, 0},
11407 {0x8A, 0, 0, 0, 0},
11408 {0x8B, 0, 0, 0, 0},
11409 {0x8C, 0, 0, 0, 0},
11410 {0x8D, 0, 0, 0, 0},
11411 {0x8E, 0, 0, 0, 0},
11412 {0x8F, 0, 0, 0, 0},
11413 {0x90, 0, 0, 0, 0},
11414 {0x91, 0, 0, 0, 0},
11415 {0x92, 0, 0, 0, 0},
11416 {0x93, 0, 0, 0, 0},
11417 {0x94, 0, 0, 0, 0},
11418 {0xFFFF, 0, 0, 0, 0},
11419 };
11420
11421 static struct radio_20xx_regs regs_2057_rev4[] = {
11422 {0x00, 0x84, 0},
11423 {0x01, 0, 0},
11424 {0x02, 0x60, 0},
11425 {0x03, 0x1f, 0},
11426 {0x04, 0x4, 0},
11427 {0x05, 0x2, 0},
11428 {0x06, 0x1, 0},
11429 {0x07, 0x1, 0},
11430 {0x08, 0x1, 0},
11431 {0x09, 0x69, 0},
11432 {0x0A, 0x66, 0},
11433 {0x0B, 0x6, 0},
11434 {0x0C, 0x18, 0},
11435 {0x0D, 0x3, 0},
11436 {0x0E, 0x20, 1},
11437 {0x0F, 0x20, 0},
11438 {0x10, 0, 0},
11439 {0x11, 0x7c, 0},
11440 {0x12, 0x42, 0},
11441 {0x13, 0xbd, 0},
11442 {0x14, 0x7, 0},
11443 {0x15, 0xf7, 0},
11444 {0x16, 0x8, 0},
11445 {0x17, 0x17, 0},
11446 {0x18, 0x7, 0},
11447 {0x19, 0, 0},
11448 {0x1A, 0x2, 0},
11449 {0x1B, 0x13, 0},
11450 {0x1C, 0x3e, 0},
11451 {0x1D, 0x3e, 0},
11452 {0x1E, 0x96, 0},
11453 {0x1F, 0x4, 0},
11454 {0x20, 0, 0},
11455 {0x21, 0, 0},
11456 {0x22, 0x17, 0},
11457 {0x23, 0x4, 0},
11458 {0x24, 0x1, 0},
11459 {0x25, 0x6, 0},
11460 {0x26, 0x4, 0},
11461 {0x27, 0xd, 0},
11462 {0x28, 0xd, 0},
11463 {0x29, 0x30, 0},
11464 {0x2A, 0x32, 0},
11465 {0x2B, 0x8, 0},
11466 {0x2C, 0x1c, 0},
11467 {0x2D, 0x2, 0},
11468 {0x2E, 0x4, 0},
11469 {0x2F, 0x7f, 0},
11470 {0x30, 0x27, 0},
11471 {0x31, 0, 1},
11472 {0x32, 0, 1},
11473 {0x33, 0, 1},
11474 {0x34, 0, 0},
11475 {0x35, 0x26, 1},
11476 {0x36, 0x18, 0},
11477 {0x37, 0x7, 0},
11478 {0x38, 0x66, 0},
11479 {0x39, 0x66, 0},
11480 {0x3A, 0x66, 0},
11481 {0x3B, 0x66, 0},
11482 {0x3C, 0xff, 1},
11483 {0x3D, 0xff, 1},
11484 {0x3E, 0xff, 1},
11485 {0x3F, 0xff, 1},
11486 {0x40, 0x16, 0},
11487 {0x41, 0x7, 0},
11488 {0x42, 0x19, 0},
11489 {0x43, 0x7, 0},
11490 {0x44, 0x6, 0},
11491 {0x45, 0x3, 0},
11492 {0x46, 0x1, 0},
11493 {0x47, 0x7, 0},
11494 {0x48, 0x33, 0},
11495 {0x49, 0x5, 0},
11496 {0x4A, 0x77, 0},
11497 {0x4B, 0x66, 0},
11498 {0x4C, 0x66, 0},
11499 {0x4D, 0, 0},
11500 {0x4E, 0x4, 0},
11501 {0x4F, 0xc, 0},
11502 {0x50, 0, 0},
11503 {0x51, 0x75, 0},
11504 {0x56, 0x7, 0},
11505 {0x57, 0, 0},
11506 {0x58, 0, 0},
11507 {0x59, 0xa8, 0},
11508 {0x5A, 0, 0},
11509 {0x5B, 0x1f, 0},
11510 {0x5C, 0x30, 0},
11511 {0x5D, 0x1, 0},
11512 {0x5E, 0x30, 0},
11513 {0x5F, 0x70, 0},
11514 {0x60, 0, 0},
11515 {0x61, 0, 0},
11516 {0x62, 0x33, 1},
11517 {0x63, 0x19, 0},
11518 {0x64, 0x62, 0},
11519 {0x65, 0, 0},
11520 {0x66, 0x11, 0},
11521 {0x69, 0, 0},
11522 {0x6A, 0x7e, 0},
11523 {0x6B, 0x3f, 0},
11524 {0x6C, 0x7f, 0},
11525 {0x6D, 0x78, 0},
11526 {0x6E, 0xc8, 0},
11527 {0x6F, 0x88, 0},
11528 {0x70, 0x8, 0},
11529 {0x71, 0xf, 0},
11530 {0x72, 0xbc, 0},
11531 {0x73, 0x8, 0},
11532 {0x74, 0x60, 0},
11533 {0x75, 0x1e, 0},
11534 {0x76, 0x70, 0},
11535 {0x77, 0, 0},
11536 {0x78, 0, 0},
11537 {0x79, 0, 0},
11538 {0x7A, 0x33, 0},
11539 {0x7B, 0x1e, 0},
11540 {0x7C, 0x62, 0},
11541 {0x7D, 0x11, 0},
11542 {0x80, 0x3c, 0},
11543 {0x81, 0x9c, 0},
11544 {0x82, 0xa, 0},
11545 {0x83, 0x9d, 0},
11546 {0x84, 0xa, 0},
11547 {0x85, 0, 0},
11548 {0x86, 0x40, 0},
11549 {0x87, 0x40, 0},
11550 {0x88, 0x88, 0},
11551 {0x89, 0x10, 0},
11552 {0x8A, 0xf0, 1},
11553 {0x8B, 0x10, 1},
11554 {0x8C, 0xf0, 1},
11555 {0x8D, 0, 0},
11556 {0x8E, 0, 0},
11557 {0x8F, 0x10, 0},
11558 {0x90, 0x55, 0},
11559 {0x91, 0x3f, 1},
11560 {0x92, 0x36, 1},
11561 {0x93, 0, 0},
11562 {0x94, 0, 0},
11563 {0x95, 0, 0},
11564 {0x96, 0x87, 0},
11565 {0x97, 0x11, 0},
11566 {0x98, 0, 0},
11567 {0x99, 0x33, 0},
11568 {0x9A, 0x88, 0},
11569 {0x9B, 0, 0},
11570 {0x9C, 0x87, 0},
11571 {0x9D, 0x11, 0},
11572 {0x9E, 0, 0},
11573 {0x9F, 0x33, 0},
11574 {0xA0, 0x88, 0},
11575 {0xA1, 0xe1, 0},
11576 {0xA2, 0x3f, 0},
11577 {0xA3, 0x44, 0},
11578 {0xA4, 0x8c, 1},
11579 {0xA5, 0x6d, 0},
11580 {0xA6, 0x22, 0},
11581 {0xA7, 0xbe, 0},
11582 {0xA8, 0x55, 1},
11583 {0xA9, 0xc, 0},
11584 {0xAA, 0xc, 0},
11585 {0xAB, 0xaa, 0},
11586 {0xAC, 0x2, 0},
11587 {0xAD, 0, 0},
11588 {0xAE, 0x10, 0},
11589 {0xAF, 0x1, 1},
11590 {0xB0, 0, 0},
11591 {0xB1, 0, 0},
11592 {0xB2, 0x80, 0},
11593 {0xB3, 0x60, 0},
11594 {0xB4, 0x44, 0},
11595 {0xB5, 0x55, 0},
11596 {0xB6, 0x1, 0},
11597 {0xB7, 0x55, 0},
11598 {0xB8, 0x1, 0},
11599 {0xB9, 0x5, 0},
11600 {0xBA, 0x55, 0},
11601 {0xBB, 0x55, 0},
11602 {0xC1, 0, 0},
11603 {0xC2, 0, 0},
11604 {0xC3, 0, 0},
11605 {0xC4, 0, 0},
11606 {0xC5, 0, 0},
11607 {0xC6, 0, 0},
11608 {0xC7, 0, 0},
11609 {0xC8, 0, 0},
11610 {0xC9, 0, 0},
11611 {0xCA, 0, 0},
11612 {0xCB, 0, 0},
11613 {0xCC, 0, 0},
11614 {0xCD, 0, 0},
11615 {0xCE, 0x5e, 0},
11616 {0xCF, 0xc, 0},
11617 {0xD0, 0xc, 0},
11618 {0xD1, 0xc, 0},
11619 {0xD2, 0, 0},
11620 {0xD3, 0x2b, 0},
11621 {0xD4, 0xc, 0},
11622 {0xD5, 0, 0},
11623 {0xD6, 0x75, 0},
11624 {0xDB, 0x7, 0},
11625 {0xDC, 0, 0},
11626 {0xDD, 0, 0},
11627 {0xDE, 0xa8, 0},
11628 {0xDF, 0, 0},
11629 {0xE0, 0x1f, 0},
11630 {0xE1, 0x30, 0},
11631 {0xE2, 0x1, 0},
11632 {0xE3, 0x30, 0},
11633 {0xE4, 0x70, 0},
11634 {0xE5, 0, 0},
11635 {0xE6, 0, 0},
11636 {0xE7, 0x33, 0},
11637 {0xE8, 0x19, 0},
11638 {0xE9, 0x62, 0},
11639 {0xEA, 0, 0},
11640 {0xEB, 0x11, 0},
11641 {0xEE, 0, 0},
11642 {0xEF, 0x7e, 0},
11643 {0xF0, 0x3f, 0},
11644 {0xF1, 0x7f, 0},
11645 {0xF2, 0x78, 0},
11646 {0xF3, 0xc8, 0},
11647 {0xF4, 0x88, 0},
11648 {0xF5, 0x8, 0},
11649 {0xF6, 0xf, 0},
11650 {0xF7, 0xbc, 0},
11651 {0xF8, 0x8, 0},
11652 {0xF9, 0x60, 0},
11653 {0xFA, 0x1e, 0},
11654 {0xFB, 0x70, 0},
11655 {0xFC, 0, 0},
11656 {0xFD, 0, 0},
11657 {0xFE, 0, 0},
11658 {0xFF, 0x33, 0},
11659 {0x100, 0x1e, 0},
11660 {0x101, 0x62, 0},
11661 {0x102, 0x11, 0},
11662 {0x105, 0x3c, 0},
11663 {0x106, 0x9c, 0},
11664 {0x107, 0xa, 0},
11665 {0x108, 0x9d, 0},
11666 {0x109, 0xa, 0},
11667 {0x10A, 0, 0},
11668 {0x10B, 0x40, 0},
11669 {0x10C, 0x40, 0},
11670 {0x10D, 0x88, 0},
11671 {0x10E, 0x10, 0},
11672 {0x10F, 0xf0, 1},
11673 {0x110, 0x10, 1},
11674 {0x111, 0xf0, 1},
11675 {0x112, 0, 0},
11676 {0x113, 0, 0},
11677 {0x114, 0x10, 0},
11678 {0x115, 0x55, 0},
11679 {0x116, 0x3f, 1},
11680 {0x117, 0x36, 1},
11681 {0x118, 0, 0},
11682 {0x119, 0, 0},
11683 {0x11A, 0, 0},
11684 {0x11B, 0x87, 0},
11685 {0x11C, 0x11, 0},
11686 {0x11D, 0, 0},
11687 {0x11E, 0x33, 0},
11688 {0x11F, 0x88, 0},
11689 {0x120, 0, 0},
11690 {0x121, 0x87, 0},
11691 {0x122, 0x11, 0},
11692 {0x123, 0, 0},
11693 {0x124, 0x33, 0},
11694 {0x125, 0x88, 0},
11695 {0x126, 0xe1, 0},
11696 {0x127, 0x3f, 0},
11697 {0x128, 0x44, 0},
11698 {0x129, 0x8c, 1},
11699 {0x12A, 0x6d, 0},
11700 {0x12B, 0x22, 0},
11701 {0x12C, 0xbe, 0},
11702 {0x12D, 0x55, 1},
11703 {0x12E, 0xc, 0},
11704 {0x12F, 0xc, 0},
11705 {0x130, 0xaa, 0},
11706 {0x131, 0x2, 0},
11707 {0x132, 0, 0},
11708 {0x133, 0x10, 0},
11709 {0x134, 0x1, 1},
11710 {0x135, 0, 0},
11711 {0x136, 0, 0},
11712 {0x137, 0x80, 0},
11713 {0x138, 0x60, 0},
11714 {0x139, 0x44, 0},
11715 {0x13A, 0x55, 0},
11716 {0x13B, 0x1, 0},
11717 {0x13C, 0x55, 0},
11718 {0x13D, 0x1, 0},
11719 {0x13E, 0x5, 0},
11720 {0x13F, 0x55, 0},
11721 {0x140, 0x55, 0},
11722 {0x146, 0, 0},
11723 {0x147, 0, 0},
11724 {0x148, 0, 0},
11725 {0x149, 0, 0},
11726 {0x14A, 0, 0},
11727 {0x14B, 0, 0},
11728 {0x14C, 0, 0},
11729 {0x14D, 0, 0},
11730 {0x14E, 0, 0},
11731 {0x14F, 0, 0},
11732 {0x150, 0, 0},
11733 {0x151, 0, 0},
11734 {0x152, 0, 0},
11735 {0x153, 0, 0},
11736 {0x154, 0xc, 0},
11737 {0x155, 0xc, 0},
11738 {0x156, 0xc, 0},
11739 {0x157, 0, 0},
11740 {0x158, 0x2b, 0},
11741 {0x159, 0x84, 0},
11742 {0x15A, 0x15, 0},
11743 {0x15B, 0xf, 0},
11744 {0x15C, 0, 0},
11745 {0x15D, 0, 0},
11746 {0x15E, 0, 1},
11747 {0x15F, 0, 1},
11748 {0x160, 0, 1},
11749 {0x161, 0, 1},
11750 {0x162, 0, 1},
11751 {0x163, 0, 1},
11752 {0x164, 0, 0},
11753 {0x165, 0, 0},
11754 {0x166, 0, 0},
11755 {0x167, 0, 0},
11756 {0x168, 0, 0},
11757 {0x169, 0x2, 1},
11758 {0x16A, 0, 1},
11759 {0x16B, 0, 1},
11760 {0x16C, 0, 1},
11761 {0x16D, 0, 0},
11762 {0x170, 0, 0},
11763 {0x171, 0x77, 0},
11764 {0x172, 0x77, 0},
11765 {0x173, 0x77, 0},
11766 {0x174, 0x77, 0},
11767 {0x175, 0, 0},
11768 {0x176, 0x3, 0},
11769 {0x177, 0x37, 0},
11770 {0x178, 0x3, 0},
11771 {0x179, 0, 0},
11772 {0x17A, 0x21, 0},
11773 {0x17B, 0x21, 0},
11774 {0x17C, 0, 0},
11775 {0x17D, 0xaa, 0},
11776 {0x17E, 0, 0},
11777 {0x17F, 0xaa, 0},
11778 {0x180, 0, 0},
11779 {0x190, 0, 0},
11780 {0x191, 0x77, 0},
11781 {0x192, 0x77, 0},
11782 {0x193, 0x77, 0},
11783 {0x194, 0x77, 0},
11784 {0x195, 0, 0},
11785 {0x196, 0x3, 0},
11786 {0x197, 0x37, 0},
11787 {0x198, 0x3, 0},
11788 {0x199, 0, 0},
11789 {0x19A, 0x21, 0},
11790 {0x19B, 0x21, 0},
11791 {0x19C, 0, 0},
11792 {0x19D, 0xaa, 0},
11793 {0x19E, 0, 0},
11794 {0x19F, 0xaa, 0},
11795 {0x1A0, 0, 0},
11796 {0x1A1, 0x2, 0},
11797 {0x1A2, 0xf, 0},
11798 {0x1A3, 0xf, 0},
11799 {0x1A4, 0, 1},
11800 {0x1A5, 0, 1},
11801 {0x1A6, 0, 1},
11802 {0x1A7, 0x2, 0},
11803 {0x1A8, 0xf, 0},
11804 {0x1A9, 0xf, 0},
11805 {0x1AA, 0, 1},
11806 {0x1AB, 0, 1},
11807 {0x1AC, 0, 1},
11808 {0xFFFF, 0, 0},
11809 };
11810
11811 static struct radio_20xx_regs regs_2057_rev5[] = {
11812 {0x00, 0, 1},
11813 {0x01, 0x57, 1},
11814 {0x02, 0x20, 1},
11815 {0x03, 0x1f, 0},
11816 {0x04, 0x4, 0},
11817 {0x05, 0x2, 0},
11818 {0x06, 0x1, 0},
11819 {0x07, 0x1, 0},
11820 {0x08, 0x1, 0},
11821 {0x09, 0x69, 0},
11822 {0x0A, 0x66, 0},
11823 {0x0B, 0x6, 0},
11824 {0x0C, 0x18, 0},
11825 {0x0D, 0x3, 0},
11826 {0x0E, 0x20, 0},
11827 {0x0F, 0x20, 0},
11828 {0x10, 0, 0},
11829 {0x11, 0x7c, 0},
11830 {0x12, 0x42, 0},
11831 {0x13, 0xbd, 0},
11832 {0x14, 0x7, 0},
11833 {0x15, 0x87, 0},
11834 {0x16, 0x8, 0},
11835 {0x17, 0x17, 0},
11836 {0x18, 0x7, 0},
11837 {0x19, 0, 0},
11838 {0x1A, 0x2, 0},
11839 {0x1B, 0x13, 0},
11840 {0x1C, 0x3e, 0},
11841 {0x1D, 0x3e, 0},
11842 {0x1E, 0x96, 0},
11843 {0x1F, 0x4, 0},
11844 {0x20, 0, 0},
11845 {0x21, 0, 0},
11846 {0x22, 0x17, 0},
11847 {0x23, 0x6, 1},
11848 {0x24, 0x1, 0},
11849 {0x25, 0x6, 0},
11850 {0x26, 0x4, 0},
11851 {0x27, 0xd, 0},
11852 {0x28, 0xd, 0},
11853 {0x29, 0x30, 0},
11854 {0x2A, 0x32, 0},
11855 {0x2B, 0x8, 0},
11856 {0x2C, 0x1c, 0},
11857 {0x2D, 0x2, 0},
11858 {0x2E, 0x4, 0},
11859 {0x2F, 0x7f, 0},
11860 {0x30, 0x27, 0},
11861 {0x31, 0, 1},
11862 {0x32, 0, 1},
11863 {0x33, 0, 1},
11864 {0x34, 0, 0},
11865 {0x35, 0x20, 0},
11866 {0x36, 0x18, 0},
11867 {0x37, 0x7, 0},
11868 {0x38, 0x66, 0},
11869 {0x39, 0x66, 0},
11870 {0x3C, 0xff, 0},
11871 {0x3D, 0xff, 0},
11872 {0x40, 0x16, 0},
11873 {0x41, 0x7, 0},
11874 {0x45, 0x3, 0},
11875 {0x46, 0x1, 0},
11876 {0x47, 0x7, 0},
11877 {0x4B, 0x66, 0},
11878 {0x4C, 0x66, 0},
11879 {0x4D, 0, 0},
11880 {0x4E, 0x4, 0},
11881 {0x4F, 0xc, 0},
11882 {0x50, 0, 0},
11883 {0x51, 0x70, 1},
11884 {0x56, 0x7, 0},
11885 {0x57, 0, 0},
11886 {0x58, 0, 0},
11887 {0x59, 0x88, 1},
11888 {0x5A, 0, 0},
11889 {0x5B, 0x1f, 0},
11890 {0x5C, 0x20, 1},
11891 {0x5D, 0x1, 0},
11892 {0x5E, 0x30, 0},
11893 {0x5F, 0x70, 0},
11894 {0x60, 0, 0},
11895 {0x61, 0, 0},
11896 {0x62, 0x33, 1},
11897 {0x63, 0xf, 1},
11898 {0x64, 0xf, 1},
11899 {0x65, 0, 0},
11900 {0x66, 0x11, 0},
11901 {0x80, 0x3c, 0},
11902 {0x81, 0x1, 1},
11903 {0x82, 0xa, 0},
11904 {0x85, 0, 0},
11905 {0x86, 0x40, 0},
11906 {0x87, 0x40, 0},
11907 {0x88, 0x88, 0},
11908 {0x89, 0x10, 0},
11909 {0x8A, 0xf0, 0},
11910 {0x8B, 0x10, 0},
11911 {0x8C, 0xf0, 0},
11912 {0x8F, 0x10, 0},
11913 {0x90, 0x55, 0},
11914 {0x91, 0x3f, 1},
11915 {0x92, 0x36, 1},
11916 {0x93, 0, 0},
11917 {0x94, 0, 0},
11918 {0x95, 0, 0},
11919 {0x96, 0x87, 0},
11920 {0x97, 0x11, 0},
11921 {0x98, 0, 0},
11922 {0x99, 0x33, 0},
11923 {0x9A, 0x88, 0},
11924 {0xA1, 0x20, 1},
11925 {0xA2, 0x3f, 0},
11926 {0xA3, 0x44, 0},
11927 {0xA4, 0x8c, 0},
11928 {0xA5, 0x6c, 0},
11929 {0xA6, 0x22, 0},
11930 {0xA7, 0xbe, 0},
11931 {0xA8, 0x55, 0},
11932 {0xAA, 0xc, 0},
11933 {0xAB, 0xaa, 0},
11934 {0xAC, 0x2, 0},
11935 {0xAD, 0, 0},
11936 {0xAE, 0x10, 0},
11937 {0xAF, 0x1, 0},
11938 {0xB0, 0, 0},
11939 {0xB1, 0, 0},
11940 {0xB2, 0x80, 0},
11941 {0xB3, 0x60, 0},
11942 {0xB4, 0x44, 0},
11943 {0xB5, 0x55, 0},
11944 {0xB6, 0x1, 0},
11945 {0xB7, 0x55, 0},
11946 {0xB8, 0x1, 0},
11947 {0xB9, 0x5, 0},
11948 {0xBA, 0x55, 0},
11949 {0xBB, 0x55, 0},
11950 {0xC3, 0, 0},
11951 {0xC4, 0, 0},
11952 {0xC5, 0, 0},
11953 {0xC6, 0, 0},
11954 {0xC7, 0, 0},
11955 {0xC8, 0, 0},
11956 {0xC9, 0, 0},
11957 {0xCA, 0, 0},
11958 {0xCB, 0, 0},
11959 {0xCD, 0, 0},
11960 {0xCE, 0x5e, 0},
11961 {0xCF, 0xc, 0},
11962 {0xD0, 0xc, 0},
11963 {0xD1, 0xc, 0},
11964 {0xD2, 0, 0},
11965 {0xD3, 0x2b, 0},
11966 {0xD4, 0xc, 0},
11967 {0xD5, 0, 0},
11968 {0xD6, 0x70, 1},
11969 {0xDB, 0x7, 0},
11970 {0xDC, 0, 0},
11971 {0xDD, 0, 0},
11972 {0xDE, 0x88, 1},
11973 {0xDF, 0, 0},
11974 {0xE0, 0x1f, 0},
11975 {0xE1, 0x20, 1},
11976 {0xE2, 0x1, 0},
11977 {0xE3, 0x30, 0},
11978 {0xE4, 0x70, 0},
11979 {0xE5, 0, 0},
11980 {0xE6, 0, 0},
11981 {0xE7, 0x33, 0},
11982 {0xE8, 0xf, 1},
11983 {0xE9, 0xf, 1},
11984 {0xEA, 0, 0},
11985 {0xEB, 0x11, 0},
11986 {0x105, 0x3c, 0},
11987 {0x106, 0x1, 1},
11988 {0x107, 0xa, 0},
11989 {0x10A, 0, 0},
11990 {0x10B, 0x40, 0},
11991 {0x10C, 0x40, 0},
11992 {0x10D, 0x88, 0},
11993 {0x10E, 0x10, 0},
11994 {0x10F, 0xf0, 0},
11995 {0x110, 0x10, 0},
11996 {0x111, 0xf0, 0},
11997 {0x114, 0x10, 0},
11998 {0x115, 0x55, 0},
11999 {0x116, 0x3f, 1},
12000 {0x117, 0x36, 1},
12001 {0x118, 0, 0},
12002 {0x119, 0, 0},
12003 {0x11A, 0, 0},
12004 {0x11B, 0x87, 0},
12005 {0x11C, 0x11, 0},
12006 {0x11D, 0, 0},
12007 {0x11E, 0x33, 0},
12008 {0x11F, 0x88, 0},
12009 {0x126, 0x20, 1},
12010 {0x127, 0x3f, 0},
12011 {0x128, 0x44, 0},
12012 {0x129, 0x8c, 0},
12013 {0x12A, 0x6c, 0},
12014 {0x12B, 0x22, 0},
12015 {0x12C, 0xbe, 0},
12016 {0x12D, 0x55, 0},
12017 {0x12F, 0xc, 0},
12018 {0x130, 0xaa, 0},
12019 {0x131, 0x2, 0},
12020 {0x132, 0, 0},
12021 {0x133, 0x10, 0},
12022 {0x134, 0x1, 0},
12023 {0x135, 0, 0},
12024 {0x136, 0, 0},
12025 {0x137, 0x80, 0},
12026 {0x138, 0x60, 0},
12027 {0x139, 0x44, 0},
12028 {0x13A, 0x55, 0},
12029 {0x13B, 0x1, 0},
12030 {0x13C, 0x55, 0},
12031 {0x13D, 0x1, 0},
12032 {0x13E, 0x5, 0},
12033 {0x13F, 0x55, 0},
12034 {0x140, 0x55, 0},
12035 {0x148, 0, 0},
12036 {0x149, 0, 0},
12037 {0x14A, 0, 0},
12038 {0x14B, 0, 0},
12039 {0x14C, 0, 0},
12040 {0x14D, 0, 0},
12041 {0x14E, 0, 0},
12042 {0x14F, 0, 0},
12043 {0x150, 0, 0},
12044 {0x154, 0xc, 0},
12045 {0x155, 0xc, 0},
12046 {0x156, 0xc, 0},
12047 {0x157, 0, 0},
12048 {0x158, 0x2b, 0},
12049 {0x159, 0x84, 0},
12050 {0x15A, 0x15, 0},
12051 {0x15B, 0xf, 0},
12052 {0x15C, 0, 0},
12053 {0x15D, 0, 0},
12054 {0x15E, 0, 1},
12055 {0x15F, 0, 1},
12056 {0x160, 0, 1},
12057 {0x161, 0, 1},
12058 {0x162, 0, 1},
12059 {0x163, 0, 1},
12060 {0x164, 0, 0},
12061 {0x165, 0, 0},
12062 {0x166, 0, 0},
12063 {0x167, 0, 0},
12064 {0x168, 0, 0},
12065 {0x169, 0, 0},
12066 {0x16A, 0, 1},
12067 {0x16B, 0, 1},
12068 {0x16C, 0, 1},
12069 {0x16D, 0, 0},
12070 {0x170, 0, 0},
12071 {0x171, 0x77, 0},
12072 {0x172, 0x77, 0},
12073 {0x173, 0x77, 0},
12074 {0x174, 0x77, 0},
12075 {0x175, 0, 0},
12076 {0x176, 0x3, 0},
12077 {0x177, 0x37, 0},
12078 {0x178, 0x3, 0},
12079 {0x179, 0, 0},
12080 {0x17B, 0x21, 0},
12081 {0x17C, 0, 0},
12082 {0x17D, 0xaa, 0},
12083 {0x17E, 0, 0},
12084 {0x190, 0, 0},
12085 {0x191, 0x77, 0},
12086 {0x192, 0x77, 0},
12087 {0x193, 0x77, 0},
12088 {0x194, 0x77, 0},
12089 {0x195, 0, 0},
12090 {0x196, 0x3, 0},
12091 {0x197, 0x37, 0},
12092 {0x198, 0x3, 0},
12093 {0x199, 0, 0},
12094 {0x19B, 0x21, 0},
12095 {0x19C, 0, 0},
12096 {0x19D, 0xaa, 0},
12097 {0x19E, 0, 0},
12098 {0x1A1, 0x2, 0},
12099 {0x1A2, 0xf, 0},
12100 {0x1A3, 0xf, 0},
12101 {0x1A4, 0, 1},
12102 {0x1A5, 0, 1},
12103 {0x1A6, 0, 1},
12104 {0x1A7, 0x2, 0},
12105 {0x1A8, 0xf, 0},
12106 {0x1A9, 0xf, 0},
12107 {0x1AA, 0, 1},
12108 {0x1AB, 0, 1},
12109 {0x1AC, 0, 1},
12110 {0x1AD, 0x84, 0},
12111 {0x1AE, 0x60, 0},
12112 {0x1AF, 0x47, 0},
12113 {0x1B0, 0x47, 0},
12114 {0x1B1, 0, 0},
12115 {0x1B2, 0, 0},
12116 {0x1B3, 0, 0},
12117 {0x1B4, 0, 0},
12118 {0x1B5, 0, 0},
12119 {0x1B6, 0, 0},
12120 {0x1B7, 0xc, 1},
12121 {0x1B8, 0, 0},
12122 {0x1B9, 0, 0},
12123 {0x1BA, 0, 0},
12124 {0x1BB, 0, 0},
12125 {0x1BC, 0, 0},
12126 {0x1BD, 0, 0},
12127 {0x1BE, 0, 0},
12128 {0x1BF, 0, 0},
12129 {0x1C0, 0, 0},
12130 {0x1C1, 0x1, 1},
12131 {0x1C2, 0x80, 1},
12132 {0x1C3, 0, 0},
12133 {0x1C4, 0, 0},
12134 {0x1C5, 0, 0},
12135 {0x1C6, 0, 0},
12136 {0x1C7, 0, 0},
12137 {0x1C8, 0, 0},
12138 {0x1C9, 0, 0},
12139 {0x1CA, 0, 0},
12140 {0xFFFF, 0, 0}
12141 };
12142
12143 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12144 {0x00, 0x15, 1},
12145 {0x01, 0x57, 1},
12146 {0x02, 0x20, 1},
12147 {0x03, 0x1f, 0},
12148 {0x04, 0x4, 0},
12149 {0x05, 0x2, 0},
12150 {0x06, 0x1, 0},
12151 {0x07, 0x1, 0},
12152 {0x08, 0x1, 0},
12153 {0x09, 0x69, 0},
12154 {0x0A, 0x66, 0},
12155 {0x0B, 0x6, 0},
12156 {0x0C, 0x18, 0},
12157 {0x0D, 0x3, 0},
12158 {0x0E, 0x20, 0},
12159 {0x0F, 0x20, 0},
12160 {0x10, 0, 0},
12161 {0x11, 0x7c, 0},
12162 {0x12, 0x42, 0},
12163 {0x13, 0xbd, 0},
12164 {0x14, 0x7, 0},
12165 {0x15, 0x87, 0},
12166 {0x16, 0x8, 0},
12167 {0x17, 0x17, 0},
12168 {0x18, 0x7, 0},
12169 {0x19, 0, 0},
12170 {0x1A, 0x2, 0},
12171 {0x1B, 0x13, 0},
12172 {0x1C, 0x3e, 0},
12173 {0x1D, 0x3e, 0},
12174 {0x1E, 0x96, 0},
12175 {0x1F, 0x4, 0},
12176 {0x20, 0, 0},
12177 {0x21, 0, 0},
12178 {0x22, 0x17, 0},
12179 {0x23, 0x6, 1},
12180 {0x24, 0x1, 0},
12181 {0x25, 0x6, 0},
12182 {0x26, 0x4, 0},
12183 {0x27, 0xd, 0},
12184 {0x28, 0xd, 0},
12185 {0x29, 0x30, 0},
12186 {0x2A, 0x32, 0},
12187 {0x2B, 0x8, 0},
12188 {0x2C, 0x1c, 0},
12189 {0x2D, 0x2, 0},
12190 {0x2E, 0x4, 0},
12191 {0x2F, 0x7f, 0},
12192 {0x30, 0x27, 0},
12193 {0x31, 0, 1},
12194 {0x32, 0, 1},
12195 {0x33, 0, 1},
12196 {0x34, 0, 0},
12197 {0x35, 0x20, 0},
12198 {0x36, 0x18, 0},
12199 {0x37, 0x7, 0},
12200 {0x38, 0x66, 0},
12201 {0x39, 0x66, 0},
12202 {0x3C, 0xff, 0},
12203 {0x3D, 0xff, 0},
12204 {0x40, 0x16, 0},
12205 {0x41, 0x7, 0},
12206 {0x45, 0x3, 0},
12207 {0x46, 0x1, 0},
12208 {0x47, 0x7, 0},
12209 {0x4B, 0x66, 0},
12210 {0x4C, 0x66, 0},
12211 {0x4D, 0, 0},
12212 {0x4E, 0x4, 0},
12213 {0x4F, 0xc, 0},
12214 {0x50, 0, 0},
12215 {0x51, 0x70, 1},
12216 {0x56, 0x7, 0},
12217 {0x57, 0, 0},
12218 {0x58, 0, 0},
12219 {0x59, 0x88, 1},
12220 {0x5A, 0, 0},
12221 {0x5B, 0x1f, 0},
12222 {0x5C, 0x20, 1},
12223 {0x5D, 0x1, 0},
12224 {0x5E, 0x30, 0},
12225 {0x5F, 0x70, 0},
12226 {0x60, 0, 0},
12227 {0x61, 0, 0},
12228 {0x62, 0x33, 1},
12229 {0x63, 0xf, 1},
12230 {0x64, 0xf, 1},
12231 {0x65, 0, 0},
12232 {0x66, 0x11, 0},
12233 {0x80, 0x3c, 0},
12234 {0x81, 0x1, 1},
12235 {0x82, 0xa, 0},
12236 {0x85, 0, 0},
12237 {0x86, 0x40, 0},
12238 {0x87, 0x40, 0},
12239 {0x88, 0x88, 0},
12240 {0x89, 0x10, 0},
12241 {0x8A, 0xf0, 0},
12242 {0x8B, 0x10, 0},
12243 {0x8C, 0xf0, 0},
12244 {0x8F, 0x10, 0},
12245 {0x90, 0x55, 0},
12246 {0x91, 0x3f, 1},
12247 {0x92, 0x36, 1},
12248 {0x93, 0, 0},
12249 {0x94, 0, 0},
12250 {0x95, 0, 0},
12251 {0x96, 0x87, 0},
12252 {0x97, 0x11, 0},
12253 {0x98, 0, 0},
12254 {0x99, 0x33, 0},
12255 {0x9A, 0x88, 0},
12256 {0xA1, 0x20, 1},
12257 {0xA2, 0x3f, 0},
12258 {0xA3, 0x44, 0},
12259 {0xA4, 0x8c, 0},
12260 {0xA5, 0x6c, 0},
12261 {0xA6, 0x22, 0},
12262 {0xA7, 0xbe, 0},
12263 {0xA8, 0x55, 0},
12264 {0xAA, 0xc, 0},
12265 {0xAB, 0xaa, 0},
12266 {0xAC, 0x2, 0},
12267 {0xAD, 0, 0},
12268 {0xAE, 0x10, 0},
12269 {0xAF, 0x1, 0},
12270 {0xB0, 0, 0},
12271 {0xB1, 0, 0},
12272 {0xB2, 0x80, 0},
12273 {0xB3, 0x60, 0},
12274 {0xB4, 0x44, 0},
12275 {0xB5, 0x55, 0},
12276 {0xB6, 0x1, 0},
12277 {0xB7, 0x55, 0},
12278 {0xB8, 0x1, 0},
12279 {0xB9, 0x5, 0},
12280 {0xBA, 0x55, 0},
12281 {0xBB, 0x55, 0},
12282 {0xC3, 0, 0},
12283 {0xC4, 0, 0},
12284 {0xC5, 0, 0},
12285 {0xC6, 0, 0},
12286 {0xC7, 0, 0},
12287 {0xC8, 0, 0},
12288 {0xC9, 0x1, 1},
12289 {0xCA, 0, 0},
12290 {0xCB, 0, 0},
12291 {0xCD, 0, 0},
12292 {0xCE, 0x5e, 0},
12293 {0xCF, 0xc, 0},
12294 {0xD0, 0xc, 0},
12295 {0xD1, 0xc, 0},
12296 {0xD2, 0, 0},
12297 {0xD3, 0x2b, 0},
12298 {0xD4, 0xc, 0},
12299 {0xD5, 0, 0},
12300 {0xD6, 0x70, 1},
12301 {0xDB, 0x7, 0},
12302 {0xDC, 0, 0},
12303 {0xDD, 0, 0},
12304 {0xDE, 0x88, 1},
12305 {0xDF, 0, 0},
12306 {0xE0, 0x1f, 0},
12307 {0xE1, 0x20, 1},
12308 {0xE2, 0x1, 0},
12309 {0xE3, 0x30, 0},
12310 {0xE4, 0x70, 0},
12311 {0xE5, 0, 0},
12312 {0xE6, 0, 0},
12313 {0xE7, 0x33, 0},
12314 {0xE8, 0xf, 1},
12315 {0xE9, 0xf, 1},
12316 {0xEA, 0, 0},
12317 {0xEB, 0x11, 0},
12318 {0x105, 0x3c, 0},
12319 {0x106, 0x1, 1},
12320 {0x107, 0xa, 0},
12321 {0x10A, 0, 0},
12322 {0x10B, 0x40, 0},
12323 {0x10C, 0x40, 0},
12324 {0x10D, 0x88, 0},
12325 {0x10E, 0x10, 0},
12326 {0x10F, 0xf0, 0},
12327 {0x110, 0x10, 0},
12328 {0x111, 0xf0, 0},
12329 {0x114, 0x10, 0},
12330 {0x115, 0x55, 0},
12331 {0x116, 0x3f, 1},
12332 {0x117, 0x36, 1},
12333 {0x118, 0, 0},
12334 {0x119, 0, 0},
12335 {0x11A, 0, 0},
12336 {0x11B, 0x87, 0},
12337 {0x11C, 0x11, 0},
12338 {0x11D, 0, 0},
12339 {0x11E, 0x33, 0},
12340 {0x11F, 0x88, 0},
12341 {0x126, 0x20, 1},
12342 {0x127, 0x3f, 0},
12343 {0x128, 0x44, 0},
12344 {0x129, 0x8c, 0},
12345 {0x12A, 0x6c, 0},
12346 {0x12B, 0x22, 0},
12347 {0x12C, 0xbe, 0},
12348 {0x12D, 0x55, 0},
12349 {0x12F, 0xc, 0},
12350 {0x130, 0xaa, 0},
12351 {0x131, 0x2, 0},
12352 {0x132, 0, 0},
12353 {0x133, 0x10, 0},
12354 {0x134, 0x1, 0},
12355 {0x135, 0, 0},
12356 {0x136, 0, 0},
12357 {0x137, 0x80, 0},
12358 {0x138, 0x60, 0},
12359 {0x139, 0x44, 0},
12360 {0x13A, 0x55, 0},
12361 {0x13B, 0x1, 0},
12362 {0x13C, 0x55, 0},
12363 {0x13D, 0x1, 0},
12364 {0x13E, 0x5, 0},
12365 {0x13F, 0x55, 0},
12366 {0x140, 0x55, 0},
12367 {0x148, 0, 0},
12368 {0x149, 0, 0},
12369 {0x14A, 0, 0},
12370 {0x14B, 0, 0},
12371 {0x14C, 0, 0},
12372 {0x14D, 0, 0},
12373 {0x14E, 0x1, 1},
12374 {0x14F, 0, 0},
12375 {0x150, 0, 0},
12376 {0x154, 0xc, 0},
12377 {0x155, 0xc, 0},
12378 {0x156, 0xc, 0},
12379 {0x157, 0, 0},
12380 {0x158, 0x2b, 0},
12381 {0x159, 0x84, 0},
12382 {0x15A, 0x15, 0},
12383 {0x15B, 0xf, 0},
12384 {0x15C, 0, 0},
12385 {0x15D, 0, 0},
12386 {0x15E, 0, 1},
12387 {0x15F, 0, 1},
12388 {0x160, 0, 1},
12389 {0x161, 0, 1},
12390 {0x162, 0, 1},
12391 {0x163, 0, 1},
12392 {0x164, 0, 0},
12393 {0x165, 0, 0},
12394 {0x166, 0, 0},
12395 {0x167, 0, 0},
12396 {0x168, 0, 0},
12397 {0x169, 0, 0},
12398 {0x16A, 0, 1},
12399 {0x16B, 0, 1},
12400 {0x16C, 0, 1},
12401 {0x16D, 0, 0},
12402 {0x170, 0, 0},
12403 {0x171, 0x77, 0},
12404 {0x172, 0x77, 0},
12405 {0x173, 0x77, 0},
12406 {0x174, 0x77, 0},
12407 {0x175, 0, 0},
12408 {0x176, 0x3, 0},
12409 {0x177, 0x37, 0},
12410 {0x178, 0x3, 0},
12411 {0x179, 0, 0},
12412 {0x17B, 0x21, 0},
12413 {0x17C, 0, 0},
12414 {0x17D, 0xaa, 0},
12415 {0x17E, 0, 0},
12416 {0x190, 0, 0},
12417 {0x191, 0x77, 0},
12418 {0x192, 0x77, 0},
12419 {0x193, 0x77, 0},
12420 {0x194, 0x77, 0},
12421 {0x195, 0, 0},
12422 {0x196, 0x3, 0},
12423 {0x197, 0x37, 0},
12424 {0x198, 0x3, 0},
12425 {0x199, 0, 0},
12426 {0x19B, 0x21, 0},
12427 {0x19C, 0, 0},
12428 {0x19D, 0xaa, 0},
12429 {0x19E, 0, 0},
12430 {0x1A1, 0x2, 0},
12431 {0x1A2, 0xf, 0},
12432 {0x1A3, 0xf, 0},
12433 {0x1A4, 0, 1},
12434 {0x1A5, 0, 1},
12435 {0x1A6, 0, 1},
12436 {0x1A7, 0x2, 0},
12437 {0x1A8, 0xf, 0},
12438 {0x1A9, 0xf, 0},
12439 {0x1AA, 0, 1},
12440 {0x1AB, 0, 1},
12441 {0x1AC, 0, 1},
12442 {0x1AD, 0x84, 0},
12443 {0x1AE, 0x60, 0},
12444 {0x1AF, 0x47, 0},
12445 {0x1B0, 0x47, 0},
12446 {0x1B1, 0, 0},
12447 {0x1B2, 0, 0},
12448 {0x1B3, 0, 0},
12449 {0x1B4, 0, 0},
12450 {0x1B5, 0, 0},
12451 {0x1B6, 0, 0},
12452 {0x1B7, 0xc, 1},
12453 {0x1B8, 0, 0},
12454 {0x1B9, 0, 0},
12455 {0x1BA, 0, 0},
12456 {0x1BB, 0, 0},
12457 {0x1BC, 0, 0},
12458 {0x1BD, 0, 0},
12459 {0x1BE, 0, 0},
12460 {0x1BF, 0, 0},
12461 {0x1C0, 0, 0},
12462 {0x1C1, 0x1, 1},
12463 {0x1C2, 0x80, 1},
12464 {0x1C3, 0, 0},
12465 {0x1C4, 0, 0},
12466 {0x1C5, 0, 0},
12467 {0x1C6, 0, 0},
12468 {0x1C7, 0, 0},
12469 {0x1C8, 0, 0},
12470 {0x1C9, 0, 0},
12471 {0x1CA, 0, 0},
12472 {0xFFFF, 0, 0}
12473 };
12474
12475 static struct radio_20xx_regs regs_2057_rev7[] = {
12476 {0x00, 0, 1},
12477 {0x01, 0x57, 1},
12478 {0x02, 0x20, 1},
12479 {0x03, 0x1f, 0},
12480 {0x04, 0x4, 0},
12481 {0x05, 0x2, 0},
12482 {0x06, 0x1, 0},
12483 {0x07, 0x1, 0},
12484 {0x08, 0x1, 0},
12485 {0x09, 0x69, 0},
12486 {0x0A, 0x66, 0},
12487 {0x0B, 0x6, 0},
12488 {0x0C, 0x18, 0},
12489 {0x0D, 0x3, 0},
12490 {0x0E, 0x20, 0},
12491 {0x0F, 0x20, 0},
12492 {0x10, 0, 0},
12493 {0x11, 0x7c, 0},
12494 {0x12, 0x42, 0},
12495 {0x13, 0xbd, 0},
12496 {0x14, 0x7, 0},
12497 {0x15, 0x87, 0},
12498 {0x16, 0x8, 0},
12499 {0x17, 0x17, 0},
12500 {0x18, 0x7, 0},
12501 {0x19, 0, 0},
12502 {0x1A, 0x2, 0},
12503 {0x1B, 0x13, 0},
12504 {0x1C, 0x3e, 0},
12505 {0x1D, 0x3e, 0},
12506 {0x1E, 0x96, 0},
12507 {0x1F, 0x4, 0},
12508 {0x20, 0, 0},
12509 {0x21, 0, 0},
12510 {0x22, 0x17, 0},
12511 {0x23, 0x6, 0},
12512 {0x24, 0x1, 0},
12513 {0x25, 0x6, 0},
12514 {0x26, 0x4, 0},
12515 {0x27, 0xd, 0},
12516 {0x28, 0xd, 0},
12517 {0x29, 0x30, 0},
12518 {0x2A, 0x32, 0},
12519 {0x2B, 0x8, 0},
12520 {0x2C, 0x1c, 0},
12521 {0x2D, 0x2, 0},
12522 {0x2E, 0x4, 0},
12523 {0x2F, 0x7f, 0},
12524 {0x30, 0x27, 0},
12525 {0x31, 0, 1},
12526 {0x32, 0, 1},
12527 {0x33, 0, 1},
12528 {0x34, 0, 0},
12529 {0x35, 0x20, 0},
12530 {0x36, 0x18, 0},
12531 {0x37, 0x7, 0},
12532 {0x38, 0x66, 0},
12533 {0x39, 0x66, 0},
12534 {0x3A, 0x66, 0},
12535 {0x3B, 0x66, 0},
12536 {0x3C, 0xff, 0},
12537 {0x3D, 0xff, 0},
12538 {0x3E, 0xff, 0},
12539 {0x3F, 0xff, 0},
12540 {0x40, 0x16, 0},
12541 {0x41, 0x7, 0},
12542 {0x42, 0x19, 0},
12543 {0x43, 0x7, 0},
12544 {0x44, 0x6, 0},
12545 {0x45, 0x3, 0},
12546 {0x46, 0x1, 0},
12547 {0x47, 0x7, 0},
12548 {0x48, 0x33, 0},
12549 {0x49, 0x5, 0},
12550 {0x4A, 0x77, 0},
12551 {0x4B, 0x66, 0},
12552 {0x4C, 0x66, 0},
12553 {0x4D, 0, 0},
12554 {0x4E, 0x4, 0},
12555 {0x4F, 0xc, 0},
12556 {0x50, 0, 0},
12557 {0x51, 0x70, 1},
12558 {0x56, 0x7, 0},
12559 {0x57, 0, 0},
12560 {0x58, 0, 0},
12561 {0x59, 0x88, 1},
12562 {0x5A, 0, 0},
12563 {0x5B, 0x1f, 0},
12564 {0x5C, 0x20, 1},
12565 {0x5D, 0x1, 0},
12566 {0x5E, 0x30, 0},
12567 {0x5F, 0x70, 0},
12568 {0x60, 0, 0},
12569 {0x61, 0, 0},
12570 {0x62, 0x33, 1},
12571 {0x63, 0xf, 1},
12572 {0x64, 0x13, 1},
12573 {0x65, 0, 0},
12574 {0x66, 0xee, 1},
12575 {0x69, 0, 0},
12576 {0x6A, 0x7e, 0},
12577 {0x6B, 0x3f, 0},
12578 {0x6C, 0x7f, 0},
12579 {0x6D, 0x78, 0},
12580 {0x6E, 0x58, 1},
12581 {0x6F, 0x88, 0},
12582 {0x70, 0x8, 0},
12583 {0x71, 0xf, 0},
12584 {0x72, 0xbc, 0},
12585 {0x73, 0x8, 0},
12586 {0x74, 0x60, 0},
12587 {0x75, 0x13, 1},
12588 {0x76, 0x70, 0},
12589 {0x77, 0, 0},
12590 {0x78, 0, 0},
12591 {0x79, 0, 0},
12592 {0x7A, 0x33, 0},
12593 {0x7B, 0x13, 1},
12594 {0x7C, 0x14, 1},
12595 {0x7D, 0xee, 1},
12596 {0x80, 0x3c, 0},
12597 {0x81, 0x1, 1},
12598 {0x82, 0xa, 0},
12599 {0x83, 0x9d, 0},
12600 {0x84, 0xa, 0},
12601 {0x85, 0, 0},
12602 {0x86, 0x40, 0},
12603 {0x87, 0x40, 0},
12604 {0x88, 0x88, 0},
12605 {0x89, 0x10, 0},
12606 {0x8A, 0xf0, 0},
12607 {0x8B, 0x10, 0},
12608 {0x8C, 0xf0, 0},
12609 {0x8D, 0, 0},
12610 {0x8E, 0, 0},
12611 {0x8F, 0x10, 0},
12612 {0x90, 0x55, 0},
12613 {0x91, 0x3f, 1},
12614 {0x92, 0x36, 1},
12615 {0x93, 0, 0},
12616 {0x94, 0, 0},
12617 {0x95, 0, 0},
12618 {0x96, 0x87, 0},
12619 {0x97, 0x11, 0},
12620 {0x98, 0, 0},
12621 {0x99, 0x33, 0},
12622 {0x9A, 0x88, 0},
12623 {0x9B, 0, 0},
12624 {0x9C, 0x87, 0},
12625 {0x9D, 0x11, 0},
12626 {0x9E, 0, 0},
12627 {0x9F, 0x33, 0},
12628 {0xA0, 0x88, 0},
12629 {0xA1, 0x20, 1},
12630 {0xA2, 0x3f, 0},
12631 {0xA3, 0x44, 0},
12632 {0xA4, 0x8c, 0},
12633 {0xA5, 0x6c, 0},
12634 {0xA6, 0x22, 0},
12635 {0xA7, 0xbe, 0},
12636 {0xA8, 0x55, 0},
12637 {0xAA, 0xc, 0},
12638 {0xAB, 0xaa, 0},
12639 {0xAC, 0x2, 0},
12640 {0xAD, 0, 0},
12641 {0xAE, 0x10, 0},
12642 {0xAF, 0x1, 0},
12643 {0xB0, 0, 0},
12644 {0xB1, 0, 0},
12645 {0xB2, 0x80, 0},
12646 {0xB3, 0x60, 0},
12647 {0xB4, 0x44, 0},
12648 {0xB5, 0x55, 0},
12649 {0xB6, 0x1, 0},
12650 {0xB7, 0x55, 0},
12651 {0xB8, 0x1, 0},
12652 {0xB9, 0x5, 0},
12653 {0xBA, 0x55, 0},
12654 {0xBB, 0x55, 0},
12655 {0xC1, 0, 0},
12656 {0xC2, 0, 0},
12657 {0xC3, 0, 0},
12658 {0xC4, 0, 0},
12659 {0xC5, 0, 0},
12660 {0xC6, 0, 0},
12661 {0xC7, 0, 0},
12662 {0xC8, 0, 0},
12663 {0xC9, 0, 0},
12664 {0xCA, 0, 0},
12665 {0xCB, 0, 0},
12666 {0xCC, 0, 0},
12667 {0xCD, 0, 0},
12668 {0xCE, 0x5e, 0},
12669 {0xCF, 0xc, 0},
12670 {0xD0, 0xc, 0},
12671 {0xD1, 0xc, 0},
12672 {0xD2, 0, 0},
12673 {0xD3, 0x2b, 0},
12674 {0xD4, 0xc, 0},
12675 {0xD5, 0, 0},
12676 {0xD6, 0x70, 1},
12677 {0xDB, 0x7, 0},
12678 {0xDC, 0, 0},
12679 {0xDD, 0, 0},
12680 {0xDE, 0x88, 1},
12681 {0xDF, 0, 0},
12682 {0xE0, 0x1f, 0},
12683 {0xE1, 0x20, 1},
12684 {0xE2, 0x1, 0},
12685 {0xE3, 0x30, 0},
12686 {0xE4, 0x70, 0},
12687 {0xE5, 0, 0},
12688 {0xE6, 0, 0},
12689 {0xE7, 0x33, 0},
12690 {0xE8, 0xf, 1},
12691 {0xE9, 0x13, 1},
12692 {0xEA, 0, 0},
12693 {0xEB, 0xee, 1},
12694 {0xEE, 0, 0},
12695 {0xEF, 0x7e, 0},
12696 {0xF0, 0x3f, 0},
12697 {0xF1, 0x7f, 0},
12698 {0xF2, 0x78, 0},
12699 {0xF3, 0x58, 1},
12700 {0xF4, 0x88, 0},
12701 {0xF5, 0x8, 0},
12702 {0xF6, 0xf, 0},
12703 {0xF7, 0xbc, 0},
12704 {0xF8, 0x8, 0},
12705 {0xF9, 0x60, 0},
12706 {0xFA, 0x13, 1},
12707 {0xFB, 0x70, 0},
12708 {0xFC, 0, 0},
12709 {0xFD, 0, 0},
12710 {0xFE, 0, 0},
12711 {0xFF, 0x33, 0},
12712 {0x100, 0x13, 1},
12713 {0x101, 0x14, 1},
12714 {0x102, 0xee, 1},
12715 {0x105, 0x3c, 0},
12716 {0x106, 0x1, 1},
12717 {0x107, 0xa, 0},
12718 {0x108, 0x9d, 0},
12719 {0x109, 0xa, 0},
12720 {0x10A, 0, 0},
12721 {0x10B, 0x40, 0},
12722 {0x10C, 0x40, 0},
12723 {0x10D, 0x88, 0},
12724 {0x10E, 0x10, 0},
12725 {0x10F, 0xf0, 0},
12726 {0x110, 0x10, 0},
12727 {0x111, 0xf0, 0},
12728 {0x112, 0, 0},
12729 {0x113, 0, 0},
12730 {0x114, 0x10, 0},
12731 {0x115, 0x55, 0},
12732 {0x116, 0x3f, 1},
12733 {0x117, 0x36, 1},
12734 {0x118, 0, 0},
12735 {0x119, 0, 0},
12736 {0x11A, 0, 0},
12737 {0x11B, 0x87, 0},
12738 {0x11C, 0x11, 0},
12739 {0x11D, 0, 0},
12740 {0x11E, 0x33, 0},
12741 {0x11F, 0x88, 0},
12742 {0x120, 0, 0},
12743 {0x121, 0x87, 0},
12744 {0x122, 0x11, 0},
12745 {0x123, 0, 0},
12746 {0x124, 0x33, 0},
12747 {0x125, 0x88, 0},
12748 {0x126, 0x20, 1},
12749 {0x127, 0x3f, 0},
12750 {0x128, 0x44, 0},
12751 {0x129, 0x8c, 0},
12752 {0x12A, 0x6c, 0},
12753 {0x12B, 0x22, 0},
12754 {0x12C, 0xbe, 0},
12755 {0x12D, 0x55, 0},
12756 {0x12F, 0xc, 0},
12757 {0x130, 0xaa, 0},
12758 {0x131, 0x2, 0},
12759 {0x132, 0, 0},
12760 {0x133, 0x10, 0},
12761 {0x134, 0x1, 0},
12762 {0x135, 0, 0},
12763 {0x136, 0, 0},
12764 {0x137, 0x80, 0},
12765 {0x138, 0x60, 0},
12766 {0x139, 0x44, 0},
12767 {0x13A, 0x55, 0},
12768 {0x13B, 0x1, 0},
12769 {0x13C, 0x55, 0},
12770 {0x13D, 0x1, 0},
12771 {0x13E, 0x5, 0},
12772 {0x13F, 0x55, 0},
12773 {0x140, 0x55, 0},
12774 {0x146, 0, 0},
12775 {0x147, 0, 0},
12776 {0x148, 0, 0},
12777 {0x149, 0, 0},
12778 {0x14A, 0, 0},
12779 {0x14B, 0, 0},
12780 {0x14C, 0, 0},
12781 {0x14D, 0, 0},
12782 {0x14E, 0, 0},
12783 {0x14F, 0, 0},
12784 {0x150, 0, 0},
12785 {0x151, 0, 0},
12786 {0x154, 0xc, 0},
12787 {0x155, 0xc, 0},
12788 {0x156, 0xc, 0},
12789 {0x157, 0, 0},
12790 {0x158, 0x2b, 0},
12791 {0x159, 0x84, 0},
12792 {0x15A, 0x15, 0},
12793 {0x15B, 0xf, 0},
12794 {0x15C, 0, 0},
12795 {0x15D, 0, 0},
12796 {0x15E, 0, 1},
12797 {0x15F, 0, 1},
12798 {0x160, 0, 1},
12799 {0x161, 0, 1},
12800 {0x162, 0, 1},
12801 {0x163, 0, 1},
12802 {0x164, 0, 0},
12803 {0x165, 0, 0},
12804 {0x166, 0, 0},
12805 {0x167, 0, 0},
12806 {0x168, 0, 0},
12807 {0x169, 0, 0},
12808 {0x16A, 0, 1},
12809 {0x16B, 0, 1},
12810 {0x16C, 0, 1},
12811 {0x16D, 0, 0},
12812 {0x170, 0, 0},
12813 {0x171, 0x77, 0},
12814 {0x172, 0x77, 0},
12815 {0x173, 0x77, 0},
12816 {0x174, 0x77, 0},
12817 {0x175, 0, 0},
12818 {0x176, 0x3, 0},
12819 {0x177, 0x37, 0},
12820 {0x178, 0x3, 0},
12821 {0x179, 0, 0},
12822 {0x17A, 0x21, 0},
12823 {0x17B, 0x21, 0},
12824 {0x17C, 0, 0},
12825 {0x17D, 0xaa, 0},
12826 {0x17E, 0, 0},
12827 {0x17F, 0xaa, 0},
12828 {0x180, 0, 0},
12829 {0x190, 0, 0},
12830 {0x191, 0x77, 0},
12831 {0x192, 0x77, 0},
12832 {0x193, 0x77, 0},
12833 {0x194, 0x77, 0},
12834 {0x195, 0, 0},
12835 {0x196, 0x3, 0},
12836 {0x197, 0x37, 0},
12837 {0x198, 0x3, 0},
12838 {0x199, 0, 0},
12839 {0x19A, 0x21, 0},
12840 {0x19B, 0x21, 0},
12841 {0x19C, 0, 0},
12842 {0x19D, 0xaa, 0},
12843 {0x19E, 0, 0},
12844 {0x19F, 0xaa, 0},
12845 {0x1A0, 0, 0},
12846 {0x1A1, 0x2, 0},
12847 {0x1A2, 0xf, 0},
12848 {0x1A3, 0xf, 0},
12849 {0x1A4, 0, 1},
12850 {0x1A5, 0, 1},
12851 {0x1A6, 0, 1},
12852 {0x1A7, 0x2, 0},
12853 {0x1A8, 0xf, 0},
12854 {0x1A9, 0xf, 0},
12855 {0x1AA, 0, 1},
12856 {0x1AB, 0, 1},
12857 {0x1AC, 0, 1},
12858 {0x1AD, 0x84, 0},
12859 {0x1AE, 0x60, 0},
12860 {0x1AF, 0x47, 0},
12861 {0x1B0, 0x47, 0},
12862 {0x1B1, 0, 0},
12863 {0x1B2, 0, 0},
12864 {0x1B3, 0, 0},
12865 {0x1B4, 0, 0},
12866 {0x1B5, 0, 0},
12867 {0x1B6, 0, 0},
12868 {0x1B7, 0x5, 1},
12869 {0x1B8, 0, 0},
12870 {0x1B9, 0, 0},
12871 {0x1BA, 0, 0},
12872 {0x1BB, 0, 0},
12873 {0x1BC, 0, 0},
12874 {0x1BD, 0, 0},
12875 {0x1BE, 0, 0},
12876 {0x1BF, 0, 0},
12877 {0x1C0, 0, 0},
12878 {0x1C1, 0, 0},
12879 {0x1C2, 0xa0, 1},
12880 {0x1C3, 0, 0},
12881 {0x1C4, 0, 0},
12882 {0x1C5, 0, 0},
12883 {0x1C6, 0, 0},
12884 {0x1C7, 0, 0},
12885 {0x1C8, 0, 0},
12886 {0x1C9, 0, 0},
12887 {0x1CA, 0, 0},
12888 {0xFFFF, 0, 0}
12889 };
12890
12891 static struct radio_20xx_regs regs_2057_rev8[] = {
12892 {0x00, 0x8, 1},
12893 {0x01, 0x57, 1},
12894 {0x02, 0x20, 1},
12895 {0x03, 0x1f, 0},
12896 {0x04, 0x4, 0},
12897 {0x05, 0x2, 0},
12898 {0x06, 0x1, 0},
12899 {0x07, 0x1, 0},
12900 {0x08, 0x1, 0},
12901 {0x09, 0x69, 0},
12902 {0x0A, 0x66, 0},
12903 {0x0B, 0x6, 0},
12904 {0x0C, 0x18, 0},
12905 {0x0D, 0x3, 0},
12906 {0x0E, 0x20, 0},
12907 {0x0F, 0x20, 0},
12908 {0x10, 0, 0},
12909 {0x11, 0x7c, 0},
12910 {0x12, 0x42, 0},
12911 {0x13, 0xbd, 0},
12912 {0x14, 0x7, 0},
12913 {0x15, 0x87, 0},
12914 {0x16, 0x8, 0},
12915 {0x17, 0x17, 0},
12916 {0x18, 0x7, 0},
12917 {0x19, 0, 0},
12918 {0x1A, 0x2, 0},
12919 {0x1B, 0x13, 0},
12920 {0x1C, 0x3e, 0},
12921 {0x1D, 0x3e, 0},
12922 {0x1E, 0x96, 0},
12923 {0x1F, 0x4, 0},
12924 {0x20, 0, 0},
12925 {0x21, 0, 0},
12926 {0x22, 0x17, 0},
12927 {0x23, 0x6, 0},
12928 {0x24, 0x1, 0},
12929 {0x25, 0x6, 0},
12930 {0x26, 0x4, 0},
12931 {0x27, 0xd, 0},
12932 {0x28, 0xd, 0},
12933 {0x29, 0x30, 0},
12934 {0x2A, 0x32, 0},
12935 {0x2B, 0x8, 0},
12936 {0x2C, 0x1c, 0},
12937 {0x2D, 0x2, 0},
12938 {0x2E, 0x4, 0},
12939 {0x2F, 0x7f, 0},
12940 {0x30, 0x27, 0},
12941 {0x31, 0, 1},
12942 {0x32, 0, 1},
12943 {0x33, 0, 1},
12944 {0x34, 0, 0},
12945 {0x35, 0x20, 0},
12946 {0x36, 0x18, 0},
12947 {0x37, 0x7, 0},
12948 {0x38, 0x66, 0},
12949 {0x39, 0x66, 0},
12950 {0x3A, 0x66, 0},
12951 {0x3B, 0x66, 0},
12952 {0x3C, 0xff, 0},
12953 {0x3D, 0xff, 0},
12954 {0x3E, 0xff, 0},
12955 {0x3F, 0xff, 0},
12956 {0x40, 0x16, 0},
12957 {0x41, 0x7, 0},
12958 {0x42, 0x19, 0},
12959 {0x43, 0x7, 0},
12960 {0x44, 0x6, 0},
12961 {0x45, 0x3, 0},
12962 {0x46, 0x1, 0},
12963 {0x47, 0x7, 0},
12964 {0x48, 0x33, 0},
12965 {0x49, 0x5, 0},
12966 {0x4A, 0x77, 0},
12967 {0x4B, 0x66, 0},
12968 {0x4C, 0x66, 0},
12969 {0x4D, 0, 0},
12970 {0x4E, 0x4, 0},
12971 {0x4F, 0xc, 0},
12972 {0x50, 0, 0},
12973 {0x51, 0x70, 1},
12974 {0x56, 0x7, 0},
12975 {0x57, 0, 0},
12976 {0x58, 0, 0},
12977 {0x59, 0x88, 1},
12978 {0x5A, 0, 0},
12979 {0x5B, 0x1f, 0},
12980 {0x5C, 0x20, 1},
12981 {0x5D, 0x1, 0},
12982 {0x5E, 0x30, 0},
12983 {0x5F, 0x70, 0},
12984 {0x60, 0, 0},
12985 {0x61, 0, 0},
12986 {0x62, 0x33, 1},
12987 {0x63, 0xf, 1},
12988 {0x64, 0xf, 1},
12989 {0x65, 0, 0},
12990 {0x66, 0x11, 0},
12991 {0x69, 0, 0},
12992 {0x6A, 0x7e, 0},
12993 {0x6B, 0x3f, 0},
12994 {0x6C, 0x7f, 0},
12995 {0x6D, 0x78, 0},
12996 {0x6E, 0x58, 1},
12997 {0x6F, 0x88, 0},
12998 {0x70, 0x8, 0},
12999 {0x71, 0xf, 0},
13000 {0x72, 0xbc, 0},
13001 {0x73, 0x8, 0},
13002 {0x74, 0x60, 0},
13003 {0x75, 0x13, 1},
13004 {0x76, 0x70, 0},
13005 {0x77, 0, 0},
13006 {0x78, 0, 0},
13007 {0x79, 0, 0},
13008 {0x7A, 0x33, 0},
13009 {0x7B, 0x13, 1},
13010 {0x7C, 0xf, 1},
13011 {0x7D, 0xee, 1},
13012 {0x80, 0x3c, 0},
13013 {0x81, 0x1, 1},
13014 {0x82, 0xa, 0},
13015 {0x83, 0x9d, 0},
13016 {0x84, 0xa, 0},
13017 {0x85, 0, 0},
13018 {0x86, 0x40, 0},
13019 {0x87, 0x40, 0},
13020 {0x88, 0x88, 0},
13021 {0x89, 0x10, 0},
13022 {0x8A, 0xf0, 0},
13023 {0x8B, 0x10, 0},
13024 {0x8C, 0xf0, 0},
13025 {0x8D, 0, 0},
13026 {0x8E, 0, 0},
13027 {0x8F, 0x10, 0},
13028 {0x90, 0x55, 0},
13029 {0x91, 0x3f, 1},
13030 {0x92, 0x36, 1},
13031 {0x93, 0, 0},
13032 {0x94, 0, 0},
13033 {0x95, 0, 0},
13034 {0x96, 0x87, 0},
13035 {0x97, 0x11, 0},
13036 {0x98, 0, 0},
13037 {0x99, 0x33, 0},
13038 {0x9A, 0x88, 0},
13039 {0x9B, 0, 0},
13040 {0x9C, 0x87, 0},
13041 {0x9D, 0x11, 0},
13042 {0x9E, 0, 0},
13043 {0x9F, 0x33, 0},
13044 {0xA0, 0x88, 0},
13045 {0xA1, 0x20, 1},
13046 {0xA2, 0x3f, 0},
13047 {0xA3, 0x44, 0},
13048 {0xA4, 0x8c, 0},
13049 {0xA5, 0x6c, 0},
13050 {0xA6, 0x22, 0},
13051 {0xA7, 0xbe, 0},
13052 {0xA8, 0x55, 0},
13053 {0xAA, 0xc, 0},
13054 {0xAB, 0xaa, 0},
13055 {0xAC, 0x2, 0},
13056 {0xAD, 0, 0},
13057 {0xAE, 0x10, 0},
13058 {0xAF, 0x1, 0},
13059 {0xB0, 0, 0},
13060 {0xB1, 0, 0},
13061 {0xB2, 0x80, 0},
13062 {0xB3, 0x60, 0},
13063 {0xB4, 0x44, 0},
13064 {0xB5, 0x55, 0},
13065 {0xB6, 0x1, 0},
13066 {0xB7, 0x55, 0},
13067 {0xB8, 0x1, 0},
13068 {0xB9, 0x5, 0},
13069 {0xBA, 0x55, 0},
13070 {0xBB, 0x55, 0},
13071 {0xC1, 0, 0},
13072 {0xC2, 0, 0},
13073 {0xC3, 0, 0},
13074 {0xC4, 0, 0},
13075 {0xC5, 0, 0},
13076 {0xC6, 0, 0},
13077 {0xC7, 0, 0},
13078 {0xC8, 0, 0},
13079 {0xC9, 0x1, 1},
13080 {0xCA, 0, 0},
13081 {0xCB, 0, 0},
13082 {0xCC, 0, 0},
13083 {0xCD, 0, 0},
13084 {0xCE, 0x5e, 0},
13085 {0xCF, 0xc, 0},
13086 {0xD0, 0xc, 0},
13087 {0xD1, 0xc, 0},
13088 {0xD2, 0, 0},
13089 {0xD3, 0x2b, 0},
13090 {0xD4, 0xc, 0},
13091 {0xD5, 0, 0},
13092 {0xD6, 0x70, 1},
13093 {0xDB, 0x7, 0},
13094 {0xDC, 0, 0},
13095 {0xDD, 0, 0},
13096 {0xDE, 0x88, 1},
13097 {0xDF, 0, 0},
13098 {0xE0, 0x1f, 0},
13099 {0xE1, 0x20, 1},
13100 {0xE2, 0x1, 0},
13101 {0xE3, 0x30, 0},
13102 {0xE4, 0x70, 0},
13103 {0xE5, 0, 0},
13104 {0xE6, 0, 0},
13105 {0xE7, 0x33, 0},
13106 {0xE8, 0xf, 1},
13107 {0xE9, 0xf, 1},
13108 {0xEA, 0, 0},
13109 {0xEB, 0x11, 0},
13110 {0xEE, 0, 0},
13111 {0xEF, 0x7e, 0},
13112 {0xF0, 0x3f, 0},
13113 {0xF1, 0x7f, 0},
13114 {0xF2, 0x78, 0},
13115 {0xF3, 0x58, 1},
13116 {0xF4, 0x88, 0},
13117 {0xF5, 0x8, 0},
13118 {0xF6, 0xf, 0},
13119 {0xF7, 0xbc, 0},
13120 {0xF8, 0x8, 0},
13121 {0xF9, 0x60, 0},
13122 {0xFA, 0x13, 1},
13123 {0xFB, 0x70, 0},
13124 {0xFC, 0, 0},
13125 {0xFD, 0, 0},
13126 {0xFE, 0, 0},
13127 {0xFF, 0x33, 0},
13128 {0x100, 0x13, 1},
13129 {0x101, 0xf, 1},
13130 {0x102, 0xee, 1},
13131 {0x105, 0x3c, 0},
13132 {0x106, 0x1, 1},
13133 {0x107, 0xa, 0},
13134 {0x108, 0x9d, 0},
13135 {0x109, 0xa, 0},
13136 {0x10A, 0, 0},
13137 {0x10B, 0x40, 0},
13138 {0x10C, 0x40, 0},
13139 {0x10D, 0x88, 0},
13140 {0x10E, 0x10, 0},
13141 {0x10F, 0xf0, 0},
13142 {0x110, 0x10, 0},
13143 {0x111, 0xf0, 0},
13144 {0x112, 0, 0},
13145 {0x113, 0, 0},
13146 {0x114, 0x10, 0},
13147 {0x115, 0x55, 0},
13148 {0x116, 0x3f, 1},
13149 {0x117, 0x36, 1},
13150 {0x118, 0, 0},
13151 {0x119, 0, 0},
13152 {0x11A, 0, 0},
13153 {0x11B, 0x87, 0},
13154 {0x11C, 0x11, 0},
13155 {0x11D, 0, 0},
13156 {0x11E, 0x33, 0},
13157 {0x11F, 0x88, 0},
13158 {0x120, 0, 0},
13159 {0x121, 0x87, 0},
13160 {0x122, 0x11, 0},
13161 {0x123, 0, 0},
13162 {0x124, 0x33, 0},
13163 {0x125, 0x88, 0},
13164 {0x126, 0x20, 1},
13165 {0x127, 0x3f, 0},
13166 {0x128, 0x44, 0},
13167 {0x129, 0x8c, 0},
13168 {0x12A, 0x6c, 0},
13169 {0x12B, 0x22, 0},
13170 {0x12C, 0xbe, 0},
13171 {0x12D, 0x55, 0},
13172 {0x12F, 0xc, 0},
13173 {0x130, 0xaa, 0},
13174 {0x131, 0x2, 0},
13175 {0x132, 0, 0},
13176 {0x133, 0x10, 0},
13177 {0x134, 0x1, 0},
13178 {0x135, 0, 0},
13179 {0x136, 0, 0},
13180 {0x137, 0x80, 0},
13181 {0x138, 0x60, 0},
13182 {0x139, 0x44, 0},
13183 {0x13A, 0x55, 0},
13184 {0x13B, 0x1, 0},
13185 {0x13C, 0x55, 0},
13186 {0x13D, 0x1, 0},
13187 {0x13E, 0x5, 0},
13188 {0x13F, 0x55, 0},
13189 {0x140, 0x55, 0},
13190 {0x146, 0, 0},
13191 {0x147, 0, 0},
13192 {0x148, 0, 0},
13193 {0x149, 0, 0},
13194 {0x14A, 0, 0},
13195 {0x14B, 0, 0},
13196 {0x14C, 0, 0},
13197 {0x14D, 0, 0},
13198 {0x14E, 0x1, 1},
13199 {0x14F, 0, 0},
13200 {0x150, 0, 0},
13201 {0x151, 0, 0},
13202 {0x154, 0xc, 0},
13203 {0x155, 0xc, 0},
13204 {0x156, 0xc, 0},
13205 {0x157, 0, 0},
13206 {0x158, 0x2b, 0},
13207 {0x159, 0x84, 0},
13208 {0x15A, 0x15, 0},
13209 {0x15B, 0xf, 0},
13210 {0x15C, 0, 0},
13211 {0x15D, 0, 0},
13212 {0x15E, 0, 1},
13213 {0x15F, 0, 1},
13214 {0x160, 0, 1},
13215 {0x161, 0, 1},
13216 {0x162, 0, 1},
13217 {0x163, 0, 1},
13218 {0x164, 0, 0},
13219 {0x165, 0, 0},
13220 {0x166, 0, 0},
13221 {0x167, 0, 0},
13222 {0x168, 0, 0},
13223 {0x169, 0, 0},
13224 {0x16A, 0, 1},
13225 {0x16B, 0, 1},
13226 {0x16C, 0, 1},
13227 {0x16D, 0, 0},
13228 {0x170, 0, 0},
13229 {0x171, 0x77, 0},
13230 {0x172, 0x77, 0},
13231 {0x173, 0x77, 0},
13232 {0x174, 0x77, 0},
13233 {0x175, 0, 0},
13234 {0x176, 0x3, 0},
13235 {0x177, 0x37, 0},
13236 {0x178, 0x3, 0},
13237 {0x179, 0, 0},
13238 {0x17A, 0x21, 0},
13239 {0x17B, 0x21, 0},
13240 {0x17C, 0, 0},
13241 {0x17D, 0xaa, 0},
13242 {0x17E, 0, 0},
13243 {0x17F, 0xaa, 0},
13244 {0x180, 0, 0},
13245 {0x190, 0, 0},
13246 {0x191, 0x77, 0},
13247 {0x192, 0x77, 0},
13248 {0x193, 0x77, 0},
13249 {0x194, 0x77, 0},
13250 {0x195, 0, 0},
13251 {0x196, 0x3, 0},
13252 {0x197, 0x37, 0},
13253 {0x198, 0x3, 0},
13254 {0x199, 0, 0},
13255 {0x19A, 0x21, 0},
13256 {0x19B, 0x21, 0},
13257 {0x19C, 0, 0},
13258 {0x19D, 0xaa, 0},
13259 {0x19E, 0, 0},
13260 {0x19F, 0xaa, 0},
13261 {0x1A0, 0, 0},
13262 {0x1A1, 0x2, 0},
13263 {0x1A2, 0xf, 0},
13264 {0x1A3, 0xf, 0},
13265 {0x1A4, 0, 1},
13266 {0x1A5, 0, 1},
13267 {0x1A6, 0, 1},
13268 {0x1A7, 0x2, 0},
13269 {0x1A8, 0xf, 0},
13270 {0x1A9, 0xf, 0},
13271 {0x1AA, 0, 1},
13272 {0x1AB, 0, 1},
13273 {0x1AC, 0, 1},
13274 {0x1AD, 0x84, 0},
13275 {0x1AE, 0x60, 0},
13276 {0x1AF, 0x47, 0},
13277 {0x1B0, 0x47, 0},
13278 {0x1B1, 0, 0},
13279 {0x1B2, 0, 0},
13280 {0x1B3, 0, 0},
13281 {0x1B4, 0, 0},
13282 {0x1B5, 0, 0},
13283 {0x1B6, 0, 0},
13284 {0x1B7, 0x5, 1},
13285 {0x1B8, 0, 0},
13286 {0x1B9, 0, 0},
13287 {0x1BA, 0, 0},
13288 {0x1BB, 0, 0},
13289 {0x1BC, 0, 0},
13290 {0x1BD, 0, 0},
13291 {0x1BE, 0, 0},
13292 {0x1BF, 0, 0},
13293 {0x1C0, 0, 0},
13294 {0x1C1, 0, 0},
13295 {0x1C2, 0xa0, 1},
13296 {0x1C3, 0, 0},
13297 {0x1C4, 0, 0},
13298 {0x1C5, 0, 0},
13299 {0x1C6, 0, 0},
13300 {0x1C7, 0, 0},
13301 {0x1C8, 0, 0},
13302 {0x1C9, 0, 0},
13303 {0x1CA, 0, 0},
13304 {0xFFFF, 0, 0}
13305 };
13306
13307 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13308
13309 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13310 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13311
13312 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13313 {
13314 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13315 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13316 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13317 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13318 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13319 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13320 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13321 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13322 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13323 },
13324 {
13325 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13326 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13327 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13328 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13329 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13330 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13331 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13332 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13333 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13334 }
13335 };
13336
13337 static const u32 nphy_tpc_txgain[] = {
13338 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13339 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13340 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13341 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13342 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13343 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13344 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13345 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13346 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13347 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13348 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13349 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13350 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13351 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13352 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13353 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13354 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13355 0x03902942, 0x03902844, 0x03902842, 0x03902744,
13356 0x03902742, 0x03902644, 0x03902642, 0x03902544,
13357 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13358 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13359 0x03802842, 0x03802744, 0x03802742, 0x03802644,
13360 0x03802642, 0x03802544, 0x03802542, 0x03802444,
13361 0x03802442, 0x03802344, 0x03802342, 0x03802244,
13362 0x03802242, 0x03802144, 0x03802142, 0x03802044,
13363 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13364 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13365 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13366 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13367 0x03801842, 0x03801744, 0x03801742, 0x03801644,
13368 0x03801642, 0x03801544, 0x03801542, 0x03801444,
13369 0x03801442, 0x03801344, 0x03801342, 0x00002b00
13370 };
13371
13372 static const u16 nphy_tpc_loscale[] = {
13373 256, 256, 271, 271, 287, 256, 256, 271,
13374 271, 287, 287, 304, 304, 256, 256, 271,
13375 271, 287, 287, 304, 304, 322, 322, 341,
13376 341, 362, 362, 383, 383, 256, 256, 271,
13377 271, 287, 287, 304, 304, 322, 322, 256,
13378 256, 271, 271, 287, 287, 304, 304, 322,
13379 322, 341, 341, 362, 362, 256, 256, 271,
13380 271, 287, 287, 304, 304, 322, 322, 256,
13381 256, 271, 271, 287, 287, 304, 304, 322,
13382 322, 341, 341, 362, 362, 256, 256, 271,
13383 271, 287, 287, 304, 304, 322, 322, 341,
13384 341, 362, 362, 383, 383, 406, 406, 430,
13385 430, 455, 455, 482, 482, 511, 511, 541,
13386 541, 573, 573, 607, 607, 643, 643, 681,
13387 681, 722, 722, 764, 764, 810, 810, 858,
13388 858, 908, 908, 962, 962, 1019, 1019, 256
13389 };
13390
13391 static u32 nphy_tpc_txgain_ipa[] = {
13392 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13393 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13394 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13395 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13396 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13397 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13398 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13399 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13400 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13401 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13402 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13403 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13404 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13405 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13406 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13407 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13408 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13409 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13410 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13411 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13412 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13413 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13414 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13415 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13416 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13417 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13418 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13419 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13420 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13421 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13422 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13423 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13424 };
13425
13426 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13427 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13428 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13429 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13430 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13431 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13432 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13433 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13434 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13435 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13436 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13437 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13438 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13439 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13440 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13441 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13442 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13443 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13444 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13445 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13446 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13447 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13448 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13449 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13450 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13451 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13452 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13453 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13454 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13455 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13456 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13457 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13458 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13459 };
13460
13461 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13462 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13463 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13464 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13465 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13466 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13467 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13468 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13469 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13470 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13471 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13472 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13473 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13474 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13475 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13476 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13477 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13478 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13479 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13480 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13481 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13482 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13483 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13484 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13485 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13486 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13487 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13488 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13489 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13490 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13491 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13492 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13493 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13494 };
13495
13496 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13497 0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13498 0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13499 0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13500 0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13501 0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13502 0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13503 0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13504 0x70470028, 0x70470026, 0x70470024, 0x70470022,
13505 0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13506 0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13507 0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13508 0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13509 0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13510 0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13511 0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13512 0x70170019, 0x70170018, 0x70170016, 0x70170015,
13513 0x70170014, 0x70170013, 0x70170012, 0x70170010,
13514 0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13515 0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13516 0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13517 0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13518 0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13519 0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13520 0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13521 0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13522 0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13523 0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13524 0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13525 0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13526 0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13527 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13528 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13529 };
13530
13531 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13532 0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13533 0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13534 0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13535 0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13536 0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13537 0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13538 0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13539 0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13540 0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13541 0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13542 0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13543 0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13544 0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13545 0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13546 0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13547 0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13548 0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13549 0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13550 0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13551 0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13552 0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13553 0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13554 0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13555 0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13556 0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13557 0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13558 0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13559 0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13560 0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13561 0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13562 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13563 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13564 };
13565
13566 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13567 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13568 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13569 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13570 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13571 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13572 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13573 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13574 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13575 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13576 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13577 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13578 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13579 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13580 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13581 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13582 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13583 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13584 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13585 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13586 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13587 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13588 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13589 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13590 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13591 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13592 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13593 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13594 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13595 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13599 };
13600
13601 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13602 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13603 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13604 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13605 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13606 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13607 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13608 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13609 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13610 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13611 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13612 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13613 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13614 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13615 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13616 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13617 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13618 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13619 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13620 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13621 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13622 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13623 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13624 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13625 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13626 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13627 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13628 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13629 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13630 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13634 };
13635
13636 static u32 nphy_tpc_txgain_ipa_5g[] = {
13637 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13638 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13639 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13640 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13641 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13642 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13643 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13644 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13645 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13646 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13647 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13648 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13649 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13650 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13651 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13652 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13653 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13654 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13655 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13656 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13657 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13658 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13659 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13660 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13661 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13662 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13663 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13664 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13665 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13666 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13667 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13668 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13669 };
13670
13671 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13672 0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13673 0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13674 0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13675 0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13676 0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13677 0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13678 0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13679 0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13680 0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13681 0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13682 0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13683 0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13684 0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13685 0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13686 0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13687 0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13688 0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13689 0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13690 0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13691 0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13692 0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13693 0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13694 0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13695 0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13696 0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13697 0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13698 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13699 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13700 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13701 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13702 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13703 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13704 };
13705
13706 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13707 0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13708 0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13709 0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13710 0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13711 0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13712 0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13713 0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13714 0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13715 0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13716 0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13717 0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13718 0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13719 0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13720 0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13721 0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13722 0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13723 0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13724 0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13725 0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13726 0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13727 0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13728 0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13729 0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13730 0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13731 0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13732 0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13733 0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13734 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13735 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13736 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13737 0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13738 0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13739 };
13740
13741 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13742 -114, -108, -98, -91, -84, -78, -70, -62,
13743 -54, -46, -39, -31, -23, -15, -8, 0
13744 };
13745
13746 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13747 -100, -95, -89, -83, -77, -70, -63, -56,
13748 -48, -41, -33, -25, -19, -12, -6, 0
13749 };
13750
13751 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13752 -159, -113, -86, -72, -62, -54, -48, -43,
13753 -39, -35, -31, -28, -25, -23, -20, -18,
13754 -17, -15, -13, -11, -10, -8, -7, -6,
13755 -5, -4, -3, -3, -2, -1, -1, 0
13756 };
13757
13758 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13759 -109, -109, -82, -68, -58, -50, -44, -39,
13760 -35, -31, -28, -26, -23, -21, -19, -17,
13761 -16, -14, -13, -11, -10, -9, -8, -7,
13762 -5, -5, -4, -3, -2, -1, -1, 0
13763 };
13764
13765 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13766 -122, -122, -95, -80, -69, -61, -54, -49,
13767 -43, -39, -35, -32, -28, -26, -23, -21,
13768 -18, -16, -15, -13, -11, -10, -8, -7,
13769 -6, -5, -4, -3, -2, -1, -1, 0
13770 };
13771
13772 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13773 -107, -101, -92, -85, -78, -71, -62, -55,
13774 -47, -39, -32, -24, -19, -12, -6, 0
13775 };
13776
13777 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13778 -110, -104, -95, -88, -81, -74, -66, -58,
13779 -50, -44, -36, -28, -23, -15, -8, 0
13780 };
13781
13782 static u8 pad_gain_codes_used_2057rev5[] = {
13783 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13784 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13785 };
13786
13787 static u8 pad_gain_codes_used_2057rev7[] = {
13788 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13789 5, 4, 3, 2, 1
13790 };
13791
13792 static u8 pad_all_gain_codes_2057[] = {
13793 31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13794 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13795 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13796 1, 0
13797 };
13798
13799 static u8 pga_all_gain_codes_2057[] = {
13800 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13801 };
13802
13803 static u32 nphy_papd_scaltbl[] = {
13804 0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13805 0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13806 0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13807 0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13808 0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13809 0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13810 0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13811 0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13812 0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13813 0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13814 0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13815 0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13816 0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13817 0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13818 0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13819 0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13820 };
13821
13822 static u32 nphy_tpc_txgain_rev3[] = {
13823 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13824 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13825 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13826 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13827 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13828 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13829 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13830 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13831 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13832 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13833 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13834 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13835 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13836 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13837 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13838 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13839 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13840 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13841 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13842 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13843 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13844 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13845 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13846 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13847 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13848 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13849 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13850 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13851 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13852 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13853 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13854 0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13855 };
13856
13857 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13858 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13859 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13860 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13861 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13862 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13863 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13864 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13865 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13866 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13867 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13868 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13869 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13870 0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13871 0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13872 0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13873 0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13874 0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13875 0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13876 0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13877 0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13878 0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13879 0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13880 0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13881 0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13882 0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13883 0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13884 0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13885 0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13886 0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13887 0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13888 0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13889 0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13890 };
13891
13892 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13893 0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13894 0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13895 0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13896 0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13897 0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13898 0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13899 0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13900 0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13901 0x80290031, 0x80210039, 0x80210036, 0x80210033,
13902 0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13903 0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13904 0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13905 0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13906 0x80110027, 0x80110024, 0x80110022, 0x80110020,
13907 0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13908 0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13909 0x80090029, 0x80090027, 0x80090025, 0x80090023,
13910 0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13911 0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13912 0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13913 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13914 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13915 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13916 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13917 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13918 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13919 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13920 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13921 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13925 };
13926
13927 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13928 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13929 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13930 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13931 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13932 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13933 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13934 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13935 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13936 0x10290031, 0x10210039, 0x10210036, 0x10210033,
13937 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13938 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13939 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13940 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13941 0x10110027, 0x10110024, 0x10110022, 0x10110020,
13942 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13943 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13944 0x10090029, 0x10090027, 0x10090025, 0x10090023,
13945 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13946 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13947 0x10090015, 0x10090013, 0x10090012, 0x10090011,
13948 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13949 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13950 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13951 0x10090008, 0x10090008, 0x10090007, 0x10090007,
13952 0x10090007, 0x10090006, 0x10090006, 0x10090005,
13953 0x10090005, 0x10090005, 0x10090005, 0x10090004,
13954 0x10090004, 0x10090004, 0x10090004, 0x10090003,
13955 0x10090003, 0x10090003, 0x10090003, 0x10090003,
13956 0x10090003, 0x10090002, 0x10090002, 0x10090002,
13957 0x10090002, 0x10090002, 0x10090002, 0x10090002,
13958 0x10090002, 0x10090002, 0x10090001, 0x10090001,
13959 0x10090001, 0x10090001, 0x10090001, 0x10090001
13960 };
13961
13962 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13963 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13964 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13965 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13966 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13967 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13968 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13969 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13970 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13971 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13972 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13973 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13974 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13975 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13976 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13977 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13978 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13979 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13980 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13981 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13982 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13983 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13984 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13985 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13986 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13987 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13988 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13989 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13990 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13991 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13992 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13993 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13994 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13995 };
13996
13997 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13998 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13999 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14000 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14001 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14002 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14003 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14004 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14005 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14006 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14007 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14008 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14009 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14010 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14011 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14012 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14013 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14014 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14015 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14016 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14017 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14018 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14019 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14020 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14021 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14022 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14023 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14024 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14025 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14026 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14027 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14028 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14029 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14030 };
14031
14032 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14033 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14034 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14035 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14036 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14037 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14038 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14039 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14040 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14041 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14042 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14043 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14044 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14045 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14046 0x09620039, 0x09620037, 0x09620035, 0x09620033,
14047 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14048 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14049 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14050 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14051 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14052 0x06620039, 0x06620037, 0x06620035, 0x06620033,
14053 0x05620046, 0x05620044, 0x05620042, 0x05620040,
14054 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14055 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14056 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14057 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14058 0x03620038, 0x03620037, 0x03620035, 0x03620033,
14059 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14060 0x02620046, 0x02620044, 0x02620043, 0x02620042,
14061 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14062 0x01620043, 0x01620042, 0x01620041, 0x01620040,
14063 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14064 0x0062003b, 0x00620039, 0x00620037, 0x00620035
14065 };
14066
14067 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14068 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14069 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14070 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14071 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14072 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14073 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14074 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14075 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14076 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14077 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14078 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14079 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14080 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14081 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14082 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14083 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14084 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14085 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14086 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14087 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14088 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14089 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14090 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14091 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14092 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14093 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14094 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14095 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14096 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14097 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14098 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14099 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14100 };
14101
14102 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14103 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14104 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14105 0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14106 };
14107 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14108 0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14109 };
14110
14111 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14112 {
14113 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14114 u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14115
14116 if (NREV_GE(pi->pubpi.phy_rev, 16))
14117 return true;
14118
14119 phybist0 = read_phy_reg(pi, 0x0e);
14120 phybist1 = read_phy_reg(pi, 0x0f);
14121 phybist2 = read_phy_reg(pi, 0xea);
14122 phybist3 = read_phy_reg(pi, 0xeb);
14123 phybist4 = read_phy_reg(pi, 0x156);
14124
14125 if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14126 (phybist3 == 0) && (phybist4 == 0))
14127 return true;
14128
14129 return false;
14130 }
14131
14132 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14133 {
14134 u16 addr, val;
14135
14136 val = 0x1e1f;
14137 for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14138 addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14139 write_phy_reg(pi, addr, val);
14140 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14141 val = 0x3e3f;
14142 else
14143 val -= 0x0202;
14144 }
14145
14146 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14147 }
14148
14149 void
14150 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14151 u32 width, const void *data)
14152 {
14153 struct phytbl_info tbl;
14154
14155 tbl.tbl_id = id;
14156 tbl.tbl_len = len;
14157 tbl.tbl_offset = offset;
14158 tbl.tbl_width = width;
14159 tbl.tbl_ptr = data;
14160 wlc_phy_write_table_nphy(pi, &tbl);
14161 }
14162
14163 void
14164 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14165 u32 width, void *data)
14166 {
14167 struct phytbl_info tbl;
14168
14169 tbl.tbl_id = id;
14170 tbl.tbl_len = len;
14171 tbl.tbl_offset = offset;
14172 tbl.tbl_width = width;
14173 tbl.tbl_ptr = data;
14174 wlc_phy_read_table_nphy(pi, &tbl);
14175 }
14176
14177 static void
14178 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14179 {
14180 uint idx;
14181
14182 if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14183 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14184 wlc_phy_write_table_nphy(pi,
14185 &mimophytbl_info_rev16[idx]);
14186 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14187 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14188 wlc_phy_write_table_nphy(pi,
14189 &mimophytbl_info_rev7[idx]);
14190 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14191 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14192 wlc_phy_write_table_nphy(pi,
14193 &mimophytbl_info_rev3[idx]);
14194 } else {
14195 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14196 wlc_phy_write_table_nphy(pi,
14197 &mimophytbl_info_rev0[idx]);
14198 }
14199 }
14200
14201 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14202 {
14203 uint idx = 0;
14204 u8 antswctrllut;
14205
14206 if (pi->phy_init_por)
14207 wlc_phy_static_table_download_nphy(pi);
14208
14209 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14210
14211 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14212 pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14213 antswctrllut;
14214
14215 switch (antswctrllut) {
14216 case 0:
14217
14218 break;
14219
14220 case 1:
14221
14222 if (pi->aa2g == 7)
14223 wlc_phy_table_write_nphy(
14224 pi,
14225 NPHY_TBL_ID_ANTSWCTRLLUT,
14226 2, 0x21, 8,
14227 &ant_sw_ctrl_tbl_rev8_2o3[0]);
14228 else
14229 wlc_phy_table_write_nphy(
14230 pi,
14231 NPHY_TBL_ID_ANTSWCTRLLUT,
14232 2, 0x21, 8,
14233 &ant_sw_ctrl_tbl_rev8
14234 [0]);
14235
14236 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14237 2, 0x25, 8,
14238 &ant_sw_ctrl_tbl_rev8[2]);
14239 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14240 2, 0x29, 8,
14241 &ant_sw_ctrl_tbl_rev8[4]);
14242 break;
14243
14244 case 2:
14245
14246 wlc_phy_table_write_nphy(
14247 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 2, 0x1, 8,
14249 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14250 wlc_phy_table_write_nphy(
14251 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14252 2, 0x5, 8,
14253 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14254 wlc_phy_table_write_nphy(
14255 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14256 2, 0x9, 8,
14257 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14258
14259 wlc_phy_table_write_nphy(
14260 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261 2, 0x21, 8,
14262 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14263 wlc_phy_table_write_nphy(
14264 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265 2, 0x25, 8,
14266 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14267 wlc_phy_table_write_nphy(
14268 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14269 2, 0x29, 8,
14270 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14271 break;
14272
14273 default:
14274 break;
14275 }
14276
14277 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14278 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14279
14280 if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14281 antswctrllut =
14282 CHSPEC_IS2G(pi->radio_chanspec) ?
14283 pi->srom_fem2g.antswctrllut :
14284 pi->srom_fem5g.antswctrllut;
14285 switch (antswctrllut) {
14286 case 0:
14287 wlc_phy_write_table_nphy(
14288 pi,
14289 &mimophytbl_info_rev3_volatile
14290 [idx]);
14291 break;
14292 case 1:
14293 wlc_phy_write_table_nphy(
14294 pi,
14295 &mimophytbl_info_rev3_volatile1
14296 [idx]);
14297 break;
14298 case 2:
14299 wlc_phy_write_table_nphy(
14300 pi,
14301 &mimophytbl_info_rev3_volatile2
14302 [idx]);
14303 break;
14304 case 3:
14305 wlc_phy_write_table_nphy(
14306 pi,
14307 &mimophytbl_info_rev3_volatile3
14308 [idx]);
14309 break;
14310 default:
14311 break;
14312 }
14313 } else {
14314 wlc_phy_write_table_nphy(
14315 pi,
14316 &mimophytbl_info_rev3_volatile[idx]);
14317 }
14318 }
14319 } else {
14320 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14321 wlc_phy_write_table_nphy(pi,
14322 &mimophytbl_info_rev0_volatile
14323 [idx]);
14324 }
14325 }
14326
14327 static void
14328 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14329 {
14330 write_phy_reg(pi, 0x77, holdoff);
14331 write_phy_reg(pi, 0xb4, delay);
14332 }
14333
14334 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14335 {
14336 u16 holdoff, delay;
14337
14338 if (rifs) {
14339
14340 holdoff = 0x10;
14341 delay = 0x258;
14342 } else {
14343
14344 holdoff = 0x15;
14345 delay = 0x320;
14346 }
14347
14348 wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14349
14350 if (pi->sh && (pi->sh->_rifs_phy != rifs))
14351 pi->sh->_rifs_phy = rifs;
14352 }
14353
14354 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14355 {
14356
14357 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14358 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14359 pi->phy_5g_pwrgain = true;
14360 return;
14361 }
14362
14363 pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14364 pi->phy_5g_pwrgain = false;
14365
14366 if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14367 NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14368 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14369 else if ((pi->sh->sromrev >= 4)
14370 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14371 pi->phy_5g_pwrgain = true;
14372 }
14373
14374 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14375 {
14376 u16 bw40po, cddpo, stbcpo, bwduppo;
14377 uint band_num;
14378 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14379
14380 if (pi->sh->sromrev >= 9)
14381 return;
14382
14383 bw40po = sprom->bw40po;
14384 pi->bw402gpo = bw40po & 0xf;
14385 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14386 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14387 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14388
14389 cddpo = sprom->cddpo;
14390 pi->cdd2gpo = cddpo & 0xf;
14391 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14392 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14393 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14394
14395 stbcpo = sprom->stbcpo;
14396 pi->stbc2gpo = stbcpo & 0xf;
14397 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14398 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14399 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14400
14401 bwduppo = sprom->bwduppo;
14402 pi->bwdup2gpo = bwduppo & 0xf;
14403 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14404 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14405 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14406
14407 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14408 band_num++) {
14409 switch (band_num) {
14410 case 0:
14411 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14412 sprom->core_pwr_info[0].maxpwr_2g;
14413 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14414 sprom->core_pwr_info[1].maxpwr_2g;
14415 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14416 sprom->core_pwr_info[0].pa_2g[0];
14417 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14418 sprom->core_pwr_info[1].pa_2g[0];
14419 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14420 sprom->core_pwr_info[0].pa_2g[1];
14421 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14422 sprom->core_pwr_info[1].pa_2g[1];
14423 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14424 sprom->core_pwr_info[0].pa_2g[2];
14425 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14426 sprom->core_pwr_info[1].pa_2g[2];
14427 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14428 sprom->core_pwr_info[0].itssi_2g;
14429 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14430 sprom->core_pwr_info[1].itssi_2g;
14431
14432 pi->cck2gpo = sprom->cck2gpo;
14433
14434 pi->ofdm2gpo = sprom->ofdm2gpo;
14435
14436 pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14437 pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14438 pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14439 pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14440 pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14441 pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14442 pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14443 pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14444 break;
14445 case 1:
14446
14447 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14448 sprom->core_pwr_info[0].maxpwr_5g;
14449 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14450 sprom->core_pwr_info[1].maxpwr_5g;
14451 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14452 sprom->core_pwr_info[0].pa_5g[0];
14453 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14454 sprom->core_pwr_info[1].pa_5g[0];
14455 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14456 sprom->core_pwr_info[0].pa_5g[1];
14457 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14458 sprom->core_pwr_info[1].pa_5g[1];
14459 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14460 sprom->core_pwr_info[0].pa_5g[2];
14461 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14462 sprom->core_pwr_info[1].pa_5g[2];
14463 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14464 sprom->core_pwr_info[0].itssi_5g;
14465 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14466 sprom->core_pwr_info[1].itssi_5g;
14467
14468 pi->ofdm5gpo = sprom->ofdm5gpo;
14469
14470 pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14471 pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14472 pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14473 pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14474 pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14475 pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14476 pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14477 pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14478 break;
14479 case 2:
14480
14481 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14482 sprom->core_pwr_info[0].maxpwr_5gl;
14483 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14484 sprom->core_pwr_info[1].maxpwr_5gl;
14485 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14486 sprom->core_pwr_info[0].pa_5gl[0];
14487 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14488 sprom->core_pwr_info[1].pa_5gl[0];
14489 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14490 sprom->core_pwr_info[0].pa_5gl[1];
14491 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14492 sprom->core_pwr_info[1].pa_5gl[1];
14493 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14494 sprom->core_pwr_info[0].pa_5gl[2];
14495 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14496 sprom->core_pwr_info[1].pa_5gl[2];
14497 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14498 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14499
14500 pi->ofdm5glpo = sprom->ofdm5glpo;
14501
14502 pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14503 pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14504 pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14505 pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14506 pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14507 pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14508 pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14509 pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14510 break;
14511 case 3:
14512
14513 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14514 sprom->core_pwr_info[0].maxpwr_5gh;
14515 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14516 sprom->core_pwr_info[1].maxpwr_5gh;
14517 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14518 sprom->core_pwr_info[0].pa_5gh[0];
14519 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14520 sprom->core_pwr_info[1].pa_5gh[0];
14521 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14522 sprom->core_pwr_info[0].pa_5gh[1];
14523 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14524 sprom->core_pwr_info[1].pa_5gh[1];
14525 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14526 sprom->core_pwr_info[0].pa_5gh[2];
14527 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14528 sprom->core_pwr_info[1].pa_5gh[2];
14529 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14530 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14531
14532 pi->ofdm5ghpo = sprom->ofdm5ghpo;
14533
14534 pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14535 pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14536 pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14537 pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14538 pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14539 pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14540 pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14541 pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14542 break;
14543 }
14544 }
14545
14546 wlc_phy_txpwr_apply_nphy(pi);
14547 }
14548
14549 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14550 {
14551 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14552
14553 pi->antswitch = sprom->antswitch;
14554 pi->aa2g = sprom->ant_available_bg;
14555 pi->aa5g = sprom->ant_available_a;
14556
14557 pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14558 pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14559 pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14560 pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14561 pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14562
14563 pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14564 pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14565 pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14566 pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14567 if (sprom->fem.ghz5.antswlut)
14568 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14569 else
14570 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14571
14572 wlc_phy_txpower_ipa_upd(pi);
14573
14574 pi->phy_txcore_disable_temp = sprom->tempthresh;
14575 if (pi->phy_txcore_disable_temp == 0)
14576 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14577
14578 pi->phy_tempsense_offset = sprom->tempoffset;
14579 if (pi->phy_tempsense_offset != 0) {
14580 if (pi->phy_tempsense_offset >
14581 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14582 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14583 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14584 NPHY_SROM_MINTEMPOFFSET))
14585 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14586 else
14587 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14588 }
14589
14590 pi->phy_txcore_enable_temp =
14591 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14592
14593 pi->phycal_tempdelta = sprom->phycal_tempdelta;
14594 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14595 pi->phycal_tempdelta = 0;
14596
14597 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14598
14599 return true;
14600 }
14601
14602 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14603 {
14604 uint i;
14605
14606 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14607 pi->phyhang_avoid = true;
14608
14609 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14610 pi->nphy_gband_spurwar_en = true;
14611 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14612 pi->nphy_aband_spurwar_en = true;
14613 }
14614 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14615 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14616 pi->nphy_gband_spurwar2_en = true;
14617 }
14618
14619 pi->n_preamble_override = AUTO;
14620 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14621 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14622
14623 pi->nphy_txrx_chain = AUTO;
14624 pi->phy_scraminit = AUTO;
14625
14626 pi->nphy_rxcalparams = 0x010100B5;
14627
14628 pi->nphy_perical = PHY_PERICAL_MPHASE;
14629 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14630 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14631
14632 pi->nphy_gain_boost = true;
14633 pi->nphy_elna_gain_config = false;
14634 pi->radio_is_on = false;
14635
14636 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14637 pi->nphy_txpwrindex[i].index = AUTO;
14638
14639 wlc_phy_txpwrctrl_config_nphy(pi);
14640 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14641 pi->hwpwrctrl_capable = true;
14642
14643 pi->pi_fptr.init = wlc_phy_init_nphy;
14644 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14645 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14646 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14647
14648 if (!wlc_phy_txpwr_srom_read_nphy(pi))
14649 return false;
14650
14651 return true;
14652 }
14653
14654 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14655 {
14656 s32 rfpwr_offset = 0;
14657
14658 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14659 if ((pi->pubpi.radiorev == 3) ||
14660 (pi->pubpi.radiorev == 4) ||
14661 (pi->pubpi.radiorev == 6))
14662 rfpwr_offset = (s16)
14663 nphy_papd_padgain_dlt_2g_2057rev3n4
14664 [pad_gn];
14665 else if (pi->pubpi.radiorev == 5)
14666 rfpwr_offset = (s16)
14667 nphy_papd_padgain_dlt_2g_2057rev5
14668 [pad_gn];
14669 else if ((pi->pubpi.radiorev == 7)
14670 || (pi->pubpi.radiorev ==
14671 8))
14672 rfpwr_offset = (s16)
14673 nphy_papd_padgain_dlt_2g_2057rev7
14674 [pad_gn];
14675 } else {
14676 if ((pi->pubpi.radiorev == 3) ||
14677 (pi->pubpi.radiorev == 4) ||
14678 (pi->pubpi.radiorev == 6))
14679 rfpwr_offset = (s16)
14680 nphy_papd_pgagain_dlt_5g_2057
14681 [pga_gn];
14682 else if ((pi->pubpi.radiorev == 7)
14683 || (pi->pubpi.radiorev ==
14684 8))
14685 rfpwr_offset = (s16)
14686 nphy_papd_pgagain_dlt_5g_2057rev7
14687 [pga_gn];
14688 }
14689 return rfpwr_offset;
14690 }
14691
14692 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14693 {
14694 bool gf_preamble = false;
14695 u16 val;
14696
14697 if (preamble == BRCMS_N_PREAMBLE_GF)
14698 gf_preamble = true;
14699
14700 val = read_phy_reg(pi, 0xed);
14701
14702 val |= RX_GF_MM_AUTO;
14703 val &= ~RX_GF_OR_MM;
14704 if (gf_preamble)
14705 val |= RX_GF_OR_MM;
14706
14707 write_phy_reg(pi, 0xed, val);
14708 }
14709
14710 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14711 {
14712 int j, type;
14713 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14714
14715 for (type = 0; type < 3; type++) {
14716 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14717 write_phy_reg(pi, addr_offset[type] + j,
14718 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14719 }
14720
14721 if (pi->bw == WL_CHANSPEC_BW_40) {
14722 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14723 write_phy_reg(pi, 0x186 + j,
14724 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14725 } else {
14726 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14727 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728 write_phy_reg(pi, 0x186 + j,
14729 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14730 }
14731
14732 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14733 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734 write_phy_reg(pi, 0x2c5 + j,
14735 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14736 }
14737 }
14738 }
14739
14740 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14741 {
14742 int j;
14743
14744 if (pi->bw == WL_CHANSPEC_BW_40) {
14745 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14746 write_phy_reg(pi, 0x195 + j,
14747 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14748 } else {
14749 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14750 write_phy_reg(pi, 0x186 + j,
14751 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14752 }
14753 }
14754
14755 static void
14756 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14757 const u8 *dlys, u8 len)
14758 {
14759 u32 t1_offset, t2_offset;
14760 u8 ctr;
14761 u8 end_event =
14762 NREV_GE(pi->pubpi.phy_rev,
14763 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14764 u8 end_dly = 1;
14765
14766 if (pi->phyhang_avoid)
14767 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14768
14769 t1_offset = cmd << 4;
14770 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14771 events);
14772 t2_offset = t1_offset + 0x080;
14773 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14774 dlys);
14775
14776 for (ctr = len; ctr < 16; ctr++) {
14777 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14778 t1_offset + ctr, 8, &end_event);
14779 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14780 t2_offset + ctr, 8, &end_dly);
14781 }
14782
14783 if (pi->phyhang_avoid)
14784 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14785 }
14786
14787 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14788 {
14789 u16 lpf_bw_ctl_val = 0;
14790 u16 rx2tx_lpf_rc_lut_offset = 0;
14791
14792 if (offset == 0) {
14793 if (CHSPEC_IS40(pi->radio_chanspec))
14794 rx2tx_lpf_rc_lut_offset = 0x159;
14795 else
14796 rx2tx_lpf_rc_lut_offset = 0x154;
14797 } else {
14798 rx2tx_lpf_rc_lut_offset = offset;
14799 }
14800 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14801 (u32) rx2tx_lpf_rc_lut_offset, 16,
14802 &lpf_bw_ctl_val);
14803
14804 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14805
14806 return lpf_bw_ctl_val;
14807 }
14808
14809 static void
14810 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14811 u8 core_mask, u8 off, u8 override_id)
14812 {
14813 u8 core_num;
14814 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14815 u8 val_shift = 0;
14816
14817 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14818 en_mask = field;
14819 for (core_num = 0; core_num < 2; core_num++) {
14820 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14821
14822 switch (field) {
14823 case (0x1 << 2):
14824 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14825 val_addr = (core_num == 0) ? 0x7a :
14826 0x7d;
14827 val_mask = (0x1 << 1);
14828 val_shift = 1;
14829 break;
14830 case (0x1 << 3):
14831 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14832 val_addr = (core_num == 0) ? 0x7a :
14833 0x7d;
14834 val_mask = (0x1 << 2);
14835 val_shift = 2;
14836 break;
14837 case (0x1 << 4):
14838 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14839 val_addr = (core_num == 0) ? 0x7a :
14840 0x7d;
14841 val_mask = (0x1 << 4);
14842 val_shift = 4;
14843 break;
14844 case (0x1 << 5):
14845 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14846 val_addr = (core_num == 0) ? 0x7a :
14847 0x7d;
14848 val_mask = (0x1 << 5);
14849 val_shift = 5;
14850 break;
14851 case (0x1 << 6):
14852 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14853 val_addr = (core_num == 0) ? 0x7a :
14854 0x7d;
14855 val_mask = (0x1 << 6);
14856 val_shift = 6;
14857 break;
14858 case (0x1 << 7):
14859 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14860 val_addr = (core_num == 0) ? 0x7a :
14861 0x7d;
14862 val_mask = (0x1 << 7);
14863 val_shift = 7;
14864 break;
14865 case (0x1 << 10):
14866 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14867 val_addr = (core_num == 0) ? 0xf8 :
14868 0xfa;
14869 val_mask = (0x7 << 4);
14870 val_shift = 4;
14871 break;
14872 case (0x1 << 11):
14873 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14874 val_addr = (core_num == 0) ? 0x7b :
14875 0x7e;
14876 val_mask = (0xffff << 0);
14877 val_shift = 0;
14878 break;
14879 case (0x1 << 12):
14880 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14881 val_addr = (core_num == 0) ? 0x7c :
14882 0x7f;
14883 val_mask = (0xffff << 0);
14884 val_shift = 0;
14885 break;
14886 case (0x3 << 13):
14887 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14888 val_addr = (core_num == 0) ? 0x348 :
14889 0x349;
14890 val_mask = (0xff << 0);
14891 val_shift = 0;
14892 break;
14893 case (0x1 << 13):
14894 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14895 val_addr = (core_num == 0) ? 0x348 :
14896 0x349;
14897 val_mask = (0xf << 0);
14898 val_shift = 0;
14899 break;
14900 default:
14901 addr = 0xffff;
14902 break;
14903 }
14904 } else if (override_id ==
14905 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14906
14907 switch (field) {
14908 case (0x1 << 1):
14909 en_addr = (core_num == 0) ? 0x342 :
14910 0x343;
14911 val_addr = (core_num == 0) ? 0x340 :
14912 0x341;
14913 val_mask = (0x1 << 1);
14914 val_shift = 1;
14915 break;
14916 case (0x1 << 3):
14917 en_addr = (core_num == 0) ? 0x342 :
14918 0x343;
14919 val_addr = (core_num == 0) ? 0x340 :
14920 0x341;
14921 val_mask = (0x1 << 3);
14922 val_shift = 3;
14923 break;
14924 case (0x1 << 5):
14925 en_addr = (core_num == 0) ? 0x342 :
14926 0x343;
14927 val_addr = (core_num == 0) ? 0x340 :
14928 0x341;
14929 val_mask = (0x1 << 5);
14930 val_shift = 5;
14931 break;
14932 case (0x1 << 4):
14933 en_addr = (core_num == 0) ? 0x342 :
14934 0x343;
14935 val_addr = (core_num == 0) ? 0x340 :
14936 0x341;
14937 val_mask = (0x1 << 4);
14938 val_shift = 4;
14939 break;
14940 case (0x1 << 2):
14941
14942 en_addr = (core_num == 0) ? 0x342 :
14943 0x343;
14944 val_addr = (core_num == 0) ? 0x340 :
14945 0x341;
14946 val_mask = (0x1 << 2);
14947 val_shift = 2;
14948 break;
14949 case (0x1 << 7):
14950
14951 en_addr = (core_num == 0) ? 0x342 :
14952 0x343;
14953 val_addr = (core_num == 0) ? 0x340 :
14954 0x341;
14955 val_mask = (0x7 << 8);
14956 val_shift = 8;
14957 break;
14958 case (0x1 << 11):
14959 en_addr = (core_num == 0) ? 0x342 :
14960 0x343;
14961 val_addr = (core_num == 0) ? 0x340 :
14962 0x341;
14963 val_mask = (0x1 << 14);
14964 val_shift = 14;
14965 break;
14966 case (0x1 << 10):
14967 en_addr = (core_num == 0) ? 0x342 :
14968 0x343;
14969 val_addr = (core_num == 0) ? 0x340 :
14970 0x341;
14971 val_mask = (0x1 << 13);
14972 val_shift = 13;
14973 break;
14974 case (0x1 << 9):
14975 en_addr = (core_num == 0) ? 0x342 :
14976 0x343;
14977 val_addr = (core_num == 0) ? 0x340 :
14978 0x341;
14979 val_mask = (0x1 << 12);
14980 val_shift = 12;
14981 break;
14982 case (0x1 << 8):
14983 en_addr = (core_num == 0) ? 0x342 :
14984 0x343;
14985 val_addr = (core_num == 0) ? 0x340 :
14986 0x341;
14987 val_mask = (0x1 << 11);
14988 val_shift = 11;
14989 break;
14990 case (0x1 << 6):
14991 en_addr = (core_num == 0) ? 0x342 :
14992 0x343;
14993 val_addr = (core_num == 0) ? 0x340 :
14994 0x341;
14995 val_mask = (0x1 << 6);
14996 val_shift = 6;
14997 break;
14998 case (0x1 << 0):
14999 en_addr = (core_num == 0) ? 0x342 :
15000 0x343;
15001 val_addr = (core_num == 0) ? 0x340 :
15002 0x341;
15003 val_mask = (0x1 << 0);
15004 val_shift = 0;
15005 break;
15006 default:
15007 addr = 0xffff;
15008 break;
15009 }
15010 } else if (override_id ==
15011 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15012
15013 switch (field) {
15014 case (0x1 << 3):
15015 en_addr = (core_num == 0) ? 0x346 :
15016 0x347;
15017 val_addr = (core_num == 0) ? 0x344 :
15018 0x345;
15019 val_mask = (0x1 << 3);
15020 val_shift = 3;
15021 break;
15022 case (0x1 << 1):
15023 en_addr = (core_num == 0) ? 0x346 :
15024 0x347;
15025 val_addr = (core_num == 0) ? 0x344 :
15026 0x345;
15027 val_mask = (0x1 << 1);
15028 val_shift = 1;
15029 break;
15030 case (0x1 << 0):
15031 en_addr = (core_num == 0) ? 0x346 :
15032 0x347;
15033 val_addr = (core_num == 0) ? 0x344 :
15034 0x345;
15035 val_mask = (0x1 << 0);
15036 val_shift = 0;
15037 break;
15038 case (0x1 << 2):
15039 en_addr = (core_num == 0) ? 0x346 :
15040 0x347;
15041 val_addr = (core_num == 0) ? 0x344 :
15042 0x345;
15043 val_mask = (0x1 << 2);
15044 val_shift = 2;
15045 break;
15046 case (0x1 << 4):
15047 en_addr = (core_num == 0) ? 0x346 :
15048 0x347;
15049 val_addr = (core_num == 0) ? 0x344 :
15050 0x345;
15051 val_mask = (0x1 << 4);
15052 val_shift = 4;
15053 break;
15054 default:
15055 addr = 0xffff;
15056 break;
15057 }
15058 }
15059
15060 if (off) {
15061 and_phy_reg(pi, en_addr, ~en_mask);
15062 and_phy_reg(pi, val_addr, ~val_mask);
15063 } else {
15064
15065 if ((core_mask == 0)
15066 || (core_mask & (1 << core_num))) {
15067 or_phy_reg(pi, en_addr, en_mask);
15068
15069 if (addr != 0xffff)
15070 mod_phy_reg(pi, val_addr,
15071 val_mask,
15072 (value <<
15073 val_shift));
15074 }
15075 }
15076 }
15077 }
15078 }
15079
15080 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15081 {
15082 uint core;
15083 int ctr;
15084 s16 gain_delta[2];
15085 u8 curr_channel;
15086 u16 minmax_gain[2];
15087 u16 regval[4];
15088
15089 if (pi->phyhang_avoid)
15090 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15091
15092 if (pi->nphy_gain_boost) {
15093 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15094
15095 gain_delta[0] = 6;
15096 gain_delta[1] = 6;
15097 } else {
15098
15099 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15100 gain_delta[0] =
15101 (s16)
15102 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15103 curr_channel) +
15104 nphy_lnagain_est0[1]), 13);
15105 gain_delta[1] =
15106 (s16)
15107 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15108 curr_channel) +
15109 nphy_lnagain_est1[1]), 13);
15110 }
15111 } else {
15112
15113 gain_delta[0] = 0;
15114 gain_delta[1] = 0;
15115 }
15116
15117 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15118 if (pi->nphy_elna_gain_config) {
15119
15120 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15121 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15122 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15123 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15124 } else {
15125 for (ctr = 0; ctr < 4; ctr++)
15126 regval[ctr] =
15127 nphy_def_lnagains[ctr] +
15128 gain_delta[core];
15129 }
15130 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15131
15132 minmax_gain[core] =
15133 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15134 }
15135
15136 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15137 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15138
15139 if (pi->phyhang_avoid)
15140 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15141 }
15142
15143 static void
15144 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15145 {
15146 if (core == PHY_CORE_0) {
15147 write_phy_reg(pi, 0x38, 0x4);
15148 if (CHSPEC_IS2G(pi->radio_chanspec))
15149 write_phy_reg(pi, 0x37, 0x0060);
15150 else
15151 write_phy_reg(pi, 0x37, 0x1080);
15152 } else if (core == PHY_CORE_1) {
15153 write_phy_reg(pi, 0x2ae, 0x4);
15154 if (CHSPEC_IS2G(pi->radio_chanspec))
15155 write_phy_reg(pi, 0x2ad, 0x0060);
15156 else
15157 write_phy_reg(pi, 0x2ad, 0x1080);
15158 }
15159 }
15160
15161 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15162 {
15163 u8 txchain0, txchain1;
15164
15165 txchain0 = txchain & 0x1;
15166 txchain1 = (txchain & 0x2) >> 1;
15167 if (!txchain0)
15168 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15169
15170 if (!txchain1)
15171 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15172 }
15173
15174 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15175 {
15176 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15177 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15178 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15179 s8 tia_gainbits[] = {
15180 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15181
15182 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15183 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15184
15185 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15186
15187 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15188 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15189
15190 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15191 lna1_gain_db);
15192 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15193 lna1_gain_db);
15194
15195 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15196 lna2_gain_db);
15197 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15198 lna2_gain_db);
15199
15200 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15201 tia_gain_db);
15202 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15203 tia_gain_db);
15204
15205 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15206 tia_gainbits);
15207 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15208 tia_gainbits);
15209
15210 write_phy_reg(pi, 0x37, 0x74);
15211 write_phy_reg(pi, 0x2ad, 0x74);
15212 write_phy_reg(pi, 0x38, 0x18);
15213 write_phy_reg(pi, 0x2ae, 0x18);
15214
15215 write_phy_reg(pi, 0x2b, 0xe8);
15216 write_phy_reg(pi, 0x41, 0xe8);
15217
15218 if (CHSPEC_IS20(pi->radio_chanspec)) {
15219
15220 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15221 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15222 } else {
15223
15224 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15225 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15226 }
15227 }
15228
15229 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15230 {
15231 u16 currband;
15232 static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15233 const s8 *lna1_gain_db = NULL;
15234 const s8 *lna1_gain_db_2 = NULL;
15235 const s8 *lna2_gain_db = NULL;
15236 static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15237 const s8 *tia_gain_db;
15238 static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15239 const s8 *tia_gainbits;
15240 static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15241 const u16 *rfseq_init_gain;
15242 u16 init_gaincode;
15243 u16 clip1hi_gaincode;
15244 u16 clip1md_gaincode = 0;
15245 u16 clip1md_gaincode_B;
15246 u16 clip1lo_gaincode;
15247 u16 clip1lo_gaincode_B;
15248 u8 crsminl_th = 0;
15249 u8 crsminu_th;
15250 u16 nbclip_th = 0;
15251 u8 w1clip_th;
15252 u16 freq;
15253 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15254 u8 chg_nbclip_th = 0;
15255
15256 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15257 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15258
15259 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15260 if (currband == 0) {
15261
15262 lna1_gain_db = lna1G_gain_db_rev7;
15263
15264 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15265 lna1_gain_db);
15266 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15267 lna1_gain_db);
15268
15269 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15270
15271 if (CHSPEC_IS40(pi->radio_chanspec)) {
15272 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15273 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15274 }
15275
15276 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15277
15278 if (CHSPEC_IS20(pi->radio_chanspec)) {
15279 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15280 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15281 }
15282 } else {
15283
15284 init_gaincode = 0x9e;
15285 clip1hi_gaincode = 0x9e;
15286 clip1md_gaincode_B = 0x24;
15287 clip1lo_gaincode = 0x8a;
15288 clip1lo_gaincode_B = 8;
15289 rfseq_init_gain = rfseqA_init_gain_rev7;
15290
15291 tia_gain_db = tiaA_gain_db_rev7;
15292 tia_gainbits = tiaA_gainbits_rev7;
15293
15294 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15295 if (CHSPEC_IS20(pi->radio_chanspec)) {
15296
15297 w1clip_th = 25;
15298 clip1md_gaincode = 0x82;
15299
15300 if ((freq <= 5080) || (freq == 5825)) {
15301
15302 static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15303 static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15304 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15305
15306 crsminu_th = 0x3e;
15307 lna1_gain_db = lna1A_gain_db_rev7;
15308 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15309 lna2_gain_db = lna2A_gain_db_rev7;
15310 } else if ((freq >= 5500) && (freq <= 5700)) {
15311
15312 static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15313 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15314 static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15315
15316 crsminu_th = 0x45;
15317 clip1md_gaincode_B = 0x14;
15318 nbclip_th = 0xff;
15319 chg_nbclip_th = 1;
15320 lna1_gain_db = lna1A_gain_db_rev7;
15321 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15322 lna2_gain_db = lna2A_gain_db_rev7;
15323 } else {
15324
15325 static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15326 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15327 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15328
15329 crsminu_th = 0x41;
15330 lna1_gain_db = lna1A_gain_db_rev7;
15331 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15332 lna2_gain_db = lna2A_gain_db_rev7;
15333 }
15334
15335 if (freq <= 4920) {
15336 nvar_baseline_offset0 = 5;
15337 nvar_baseline_offset1 = 5;
15338 } else if ((freq > 4920) && (freq <= 5320)) {
15339 nvar_baseline_offset0 = 3;
15340 nvar_baseline_offset1 = 5;
15341 } else if ((freq > 5320) && (freq <= 5700)) {
15342 nvar_baseline_offset0 = 3;
15343 nvar_baseline_offset1 = 2;
15344 } else {
15345 nvar_baseline_offset0 = 4;
15346 nvar_baseline_offset1 = 0;
15347 }
15348 } else {
15349
15350 crsminu_th = 0x3a;
15351 crsminl_th = 0x3a;
15352 w1clip_th = 20;
15353
15354 if ((freq >= 4920) && (freq <= 5320)) {
15355 nvar_baseline_offset0 = 4;
15356 nvar_baseline_offset1 = 5;
15357 } else if ((freq > 5320) && (freq <= 5550)) {
15358 nvar_baseline_offset0 = 4;
15359 nvar_baseline_offset1 = 2;
15360 } else {
15361 nvar_baseline_offset0 = 5;
15362 nvar_baseline_offset1 = 3;
15363 }
15364 }
15365
15366 write_phy_reg(pi, 0x20, init_gaincode);
15367 write_phy_reg(pi, 0x2a7, init_gaincode);
15368
15369 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15370 pi->pubpi.phy_corenum, 0x106, 16,
15371 rfseq_init_gain);
15372
15373 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15374 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15375
15376 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15377 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15378
15379 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15380 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15381 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15382 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15383
15384 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15385 tia_gain_db);
15386 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15387 tia_gain_db);
15388
15389 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15390 tia_gainbits);
15391 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15392 tia_gainbits);
15393
15394 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15395
15396 if (chg_nbclip_th == 1) {
15397 write_phy_reg(pi, 0x2b, nbclip_th);
15398 write_phy_reg(pi, 0x41, nbclip_th);
15399 }
15400
15401 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15402 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15403
15404 mod_phy_reg(pi, 0x2e4,
15405 (0x3f << 0), (nvar_baseline_offset0 << 0));
15406
15407 mod_phy_reg(pi, 0x2e4,
15408 (0x3f << 6), (nvar_baseline_offset1 << 6));
15409
15410 if (CHSPEC_IS20(pi->radio_chanspec)) {
15411
15412 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15413 lna1_gain_db);
15414 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15415 lna1_gain_db_2);
15416
15417 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15418 8, lna2_gain_db);
15419 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15420 8, lna2_gain_db);
15421
15422 write_phy_reg(pi, 0x24, clip1md_gaincode);
15423 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15424 } else {
15425 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15426 }
15427 }
15428 }
15429
15430 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15431 {
15432 u16 w1th, hpf_code, currband;
15433 int ctr;
15434 u8 rfseq_updategainu_events[] = {
15435 NPHY_RFSEQ_CMD_RX_GAIN,
15436 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15437 NPHY_RFSEQ_CMD_SET_HPF_BW
15438 };
15439 static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15440 static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15441 static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15442 static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15443 static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15444 static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15445 static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15446 static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15447 static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15448 static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15449 const s8 *lna1_gain_db = NULL;
15450 static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15451 static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15452 static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15453 static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15454 static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15455 static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15456 static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15457 static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15458 const s8 *lna2_gain_db = NULL;
15459 static const s8 tiaG_gain_db[] = {
15460 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15461 static const s8 tiaA_gain_db[] = {
15462 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15463 static const s8 tiaA_gain_db_rev4[] = {
15464 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15465 static const s8 tiaA_gain_db_rev5[] = {
15466 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15467 static const s8 tiaA_gain_db_rev6[] = {
15468 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15469 const s8 *tia_gain_db;
15470 static const s8 tiaG_gainbits[] = {
15471 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15472 static const s8 tiaA_gainbits[] = {
15473 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15474 static const s8 tiaA_gainbits_rev4[] = {
15475 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15476 static const s8 tiaA_gainbits_rev5[] = {
15477 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15478 static const s8 tiaA_gainbits_rev6[] = {
15479 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15480 const s8 *tia_gainbits;
15481 static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15482 static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15483 static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15484 static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15485 static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15486 static const u16 rfseqG_init_gain_rev5_elna[] = {
15487 0x013f, 0x013f, 0x013f, 0x013f };
15488 static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15489 static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15490 static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15491 static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15492 static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15493 static const u16 rfseqA_init_gain_rev4_elna[] = {
15494 0x314f, 0x314f, 0x314f, 0x314f };
15495 static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15496 static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15497 const u16 *rfseq_init_gain;
15498 u16 initG_gaincode = 0x627e;
15499 u16 initG_gaincode_rev4 = 0x527e;
15500 u16 initG_gaincode_rev5 = 0x427e;
15501 u16 initG_gaincode_rev5_elna = 0x027e;
15502 u16 initG_gaincode_rev6 = 0x527e;
15503 u16 initG_gaincode_rev6_224B0 = 0x427e;
15504 u16 initG_gaincode_rev6_elna = 0x127e;
15505 u16 initA_gaincode = 0x52de;
15506 u16 initA_gaincode_rev4 = 0x629e;
15507 u16 initA_gaincode_rev4_elna = 0x329e;
15508 u16 initA_gaincode_rev5 = 0x729e;
15509 u16 initA_gaincode_rev6 = 0x729e;
15510 u16 init_gaincode;
15511 u16 clip1hiG_gaincode = 0x107e;
15512 u16 clip1hiG_gaincode_rev4 = 0x007e;
15513 u16 clip1hiG_gaincode_rev5 = 0x1076;
15514 u16 clip1hiG_gaincode_rev6 = 0x007e;
15515 u16 clip1hiA_gaincode = 0x00de;
15516 u16 clip1hiA_gaincode_rev4 = 0x029e;
15517 u16 clip1hiA_gaincode_rev5 = 0x029e;
15518 u16 clip1hiA_gaincode_rev6 = 0x029e;
15519 u16 clip1hi_gaincode;
15520 u16 clip1mdG_gaincode = 0x0066;
15521 u16 clip1mdA_gaincode = 0x00ca;
15522 u16 clip1mdA_gaincode_rev4 = 0x1084;
15523 u16 clip1mdA_gaincode_rev5 = 0x2084;
15524 u16 clip1mdA_gaincode_rev6 = 0x2084;
15525 u16 clip1md_gaincode = 0;
15526 u16 clip1loG_gaincode = 0x0074;
15527 static const u16 clip1loG_gaincode_rev5[] = {
15528 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15529 };
15530 static const u16 clip1loG_gaincode_rev6[] = {
15531 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15532 };
15533 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15534 u16 clip1loA_gaincode = 0x00cc;
15535 u16 clip1loA_gaincode_rev4 = 0x0086;
15536 u16 clip1loA_gaincode_rev5 = 0x2086;
15537 u16 clip1loA_gaincode_rev6 = 0x2086;
15538 u16 clip1lo_gaincode;
15539 u8 crsminG_th = 0x18;
15540 u8 crsminG_th_rev5 = 0x18;
15541 u8 crsminG_th_rev6 = 0x18;
15542 u8 crsminA_th = 0x1e;
15543 u8 crsminA_th_rev4 = 0x24;
15544 u8 crsminA_th_rev5 = 0x24;
15545 u8 crsminA_th_rev6 = 0x24;
15546 u8 crsmin_th;
15547 u8 crsminlG_th = 0x18;
15548 u8 crsminlG_th_rev5 = 0x18;
15549 u8 crsminlG_th_rev6 = 0x18;
15550 u8 crsminlA_th = 0x1e;
15551 u8 crsminlA_th_rev4 = 0x24;
15552 u8 crsminlA_th_rev5 = 0x24;
15553 u8 crsminlA_th_rev6 = 0x24;
15554 u8 crsminl_th = 0;
15555 u8 crsminuG_th = 0x18;
15556 u8 crsminuG_th_rev5 = 0x18;
15557 u8 crsminuG_th_rev6 = 0x18;
15558 u8 crsminuA_th = 0x1e;
15559 u8 crsminuA_th_rev4 = 0x24;
15560 u8 crsminuA_th_rev5 = 0x24;
15561 u8 crsminuA_th_rev6 = 0x24;
15562 u8 crsminuA_th_rev6_224B0 = 0x2d;
15563 u8 crsminu_th;
15564 u16 nbclipG_th = 0x20d;
15565 u16 nbclipG_th_rev4 = 0x1a1;
15566 u16 nbclipG_th_rev5 = 0x1d0;
15567 u16 nbclipG_th_rev6 = 0x1d0;
15568 u16 nbclipA_th = 0x1a1;
15569 u16 nbclipA_th_rev4 = 0x107;
15570 u16 nbclipA_th_rev5 = 0x0a9;
15571 u16 nbclipA_th_rev6 = 0x0f0;
15572 u16 nbclip_th = 0;
15573 u8 w1clipG_th = 5;
15574 u8 w1clipG_th_rev5 = 9;
15575 u8 w1clipG_th_rev6 = 5;
15576 u8 w1clipA_th = 25, w1clip_th;
15577 u8 rssi_gain_default = 0x50;
15578 u8 rssiG_gain_rev6_224B0 = 0x50;
15579 u8 rssiA_gain_rev5 = 0x90;
15580 u8 rssiA_gain_rev6 = 0x90;
15581 u8 rssi_gain;
15582 u16 regval[21];
15583 u8 triso;
15584
15585 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15586 pi->srom_fem2g.triso;
15587
15588 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15589 if (pi->pubpi.radiorev == 5) {
15590 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15591 } else if (pi->pubpi.radiorev == 7) {
15592 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15593
15594 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15595 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15596
15597 } else if ((pi->pubpi.radiorev == 3)
15598 || (pi->pubpi.radiorev == 8)) {
15599 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15600
15601 if (pi->pubpi.radiorev == 8) {
15602 mod_phy_reg(pi, 0x283,
15603 (0xff << 0), (0x44 << 0));
15604 mod_phy_reg(pi, 0x280,
15605 (0xff << 0), (0x44 << 0));
15606 }
15607 } else {
15608 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15609 }
15610 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15611
15612 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15613
15614 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15615 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15616
15617 currband =
15618 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15619 if (currband == 0) {
15620 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15621 if (pi->pubpi.radiorev == 11) {
15622 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15623 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15624 rfseq_init_gain =
15625 rfseqG_init_gain_rev6_224B0;
15626 init_gaincode =
15627 initG_gaincode_rev6_224B0;
15628 clip1hi_gaincode =
15629 clip1hiG_gaincode_rev6;
15630 clip1lo_gaincode =
15631 clip1loG_gaincode_rev6_224B0;
15632 nbclip_th = nbclipG_th_rev6;
15633 w1clip_th = w1clipG_th_rev6;
15634 crsmin_th = crsminG_th_rev6;
15635 crsminl_th = crsminlG_th_rev6;
15636 crsminu_th = crsminuG_th_rev6;
15637 rssi_gain = rssiG_gain_rev6_224B0;
15638 } else {
15639 lna1_gain_db = lna1G_gain_db_rev6;
15640 lna2_gain_db = lna2G_gain_db_rev6;
15641 if (pi->sh->boardflags & BFL_EXTLNA) {
15642
15643 rfseq_init_gain =
15644 rfseqG_init_gain_rev6_elna;
15645 init_gaincode =
15646 initG_gaincode_rev6_elna;
15647 } else {
15648 rfseq_init_gain =
15649 rfseqG_init_gain_rev6;
15650 init_gaincode =
15651 initG_gaincode_rev6;
15652 }
15653 clip1hi_gaincode =
15654 clip1hiG_gaincode_rev6;
15655 switch (triso) {
15656 case 0:
15657 clip1lo_gaincode =
15658 clip1loG_gaincode_rev6
15659 [0];
15660 break;
15661 case 1:
15662 clip1lo_gaincode =
15663 clip1loG_gaincode_rev6
15664 [1];
15665 break;
15666 case 2:
15667 clip1lo_gaincode =
15668 clip1loG_gaincode_rev6
15669 [2];
15670 break;
15671 case 3:
15672 default:
15673
15674 clip1lo_gaincode =
15675 clip1loG_gaincode_rev6
15676 [3];
15677 break;
15678 case 4:
15679 clip1lo_gaincode =
15680 clip1loG_gaincode_rev6
15681 [4];
15682 break;
15683 case 5:
15684 clip1lo_gaincode =
15685 clip1loG_gaincode_rev6
15686 [5];
15687 break;
15688 case 6:
15689 clip1lo_gaincode =
15690 clip1loG_gaincode_rev6
15691 [6];
15692 break;
15693 case 7:
15694 clip1lo_gaincode =
15695 clip1loG_gaincode_rev6
15696 [7];
15697 break;
15698 }
15699 nbclip_th = nbclipG_th_rev6;
15700 w1clip_th = w1clipG_th_rev6;
15701 crsmin_th = crsminG_th_rev6;
15702 crsminl_th = crsminlG_th_rev6;
15703 crsminu_th = crsminuG_th_rev6;
15704 rssi_gain = rssi_gain_default;
15705 }
15706 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15707 lna1_gain_db = lna1G_gain_db_rev5;
15708 lna2_gain_db = lna2G_gain_db_rev5;
15709 if (pi->sh->boardflags & BFL_EXTLNA) {
15710
15711 rfseq_init_gain =
15712 rfseqG_init_gain_rev5_elna;
15713 init_gaincode =
15714 initG_gaincode_rev5_elna;
15715 } else {
15716 rfseq_init_gain = rfseqG_init_gain_rev5;
15717 init_gaincode = initG_gaincode_rev5;
15718 }
15719 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15720 switch (triso) {
15721 case 0:
15722 clip1lo_gaincode =
15723 clip1loG_gaincode_rev5[0];
15724 break;
15725 case 1:
15726 clip1lo_gaincode =
15727 clip1loG_gaincode_rev5[1];
15728 break;
15729 case 2:
15730 clip1lo_gaincode =
15731 clip1loG_gaincode_rev5[2];
15732 break;
15733 case 3:
15734
15735 clip1lo_gaincode =
15736 clip1loG_gaincode_rev5[3];
15737 break;
15738 case 4:
15739 clip1lo_gaincode =
15740 clip1loG_gaincode_rev5[4];
15741 break;
15742 case 5:
15743 clip1lo_gaincode =
15744 clip1loG_gaincode_rev5[5];
15745 break;
15746 case 6:
15747 clip1lo_gaincode =
15748 clip1loG_gaincode_rev5[6];
15749 break;
15750 case 7:
15751 clip1lo_gaincode =
15752 clip1loG_gaincode_rev5[7];
15753 break;
15754 default:
15755 clip1lo_gaincode =
15756 clip1loG_gaincode_rev5[3];
15757 break;
15758 }
15759 nbclip_th = nbclipG_th_rev5;
15760 w1clip_th = w1clipG_th_rev5;
15761 crsmin_th = crsminG_th_rev5;
15762 crsminl_th = crsminlG_th_rev5;
15763 crsminu_th = crsminuG_th_rev5;
15764 rssi_gain = rssi_gain_default;
15765 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15766 lna1_gain_db = lna1G_gain_db_rev4;
15767 lna2_gain_db = lna2G_gain_db;
15768 rfseq_init_gain = rfseqG_init_gain_rev4;
15769 init_gaincode = initG_gaincode_rev4;
15770 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15771 clip1lo_gaincode = clip1loG_gaincode;
15772 nbclip_th = nbclipG_th_rev4;
15773 w1clip_th = w1clipG_th;
15774 crsmin_th = crsminG_th;
15775 crsminl_th = crsminlG_th;
15776 crsminu_th = crsminuG_th;
15777 rssi_gain = rssi_gain_default;
15778 } else {
15779 lna1_gain_db = lna1G_gain_db;
15780 lna2_gain_db = lna2G_gain_db;
15781 rfseq_init_gain = rfseqG_init_gain;
15782 init_gaincode = initG_gaincode;
15783 clip1hi_gaincode = clip1hiG_gaincode;
15784 clip1lo_gaincode = clip1loG_gaincode;
15785 nbclip_th = nbclipG_th;
15786 w1clip_th = w1clipG_th;
15787 crsmin_th = crsminG_th;
15788 crsminl_th = crsminlG_th;
15789 crsminu_th = crsminuG_th;
15790 rssi_gain = rssi_gain_default;
15791 }
15792 tia_gain_db = tiaG_gain_db;
15793 tia_gainbits = tiaG_gainbits;
15794 clip1md_gaincode = clip1mdG_gaincode;
15795 } else {
15796 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15797 lna1_gain_db = lna1A_gain_db_rev6;
15798 lna2_gain_db = lna2A_gain_db_rev6;
15799 tia_gain_db = tiaA_gain_db_rev6;
15800 tia_gainbits = tiaA_gainbits_rev6;
15801 rfseq_init_gain = rfseqA_init_gain_rev6;
15802 init_gaincode = initA_gaincode_rev6;
15803 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15804 clip1md_gaincode = clip1mdA_gaincode_rev6;
15805 clip1lo_gaincode = clip1loA_gaincode_rev6;
15806 crsmin_th = crsminA_th_rev6;
15807 crsminl_th = crsminlA_th_rev6;
15808 if ((pi->pubpi.radiorev == 11) &&
15809 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15810 crsminu_th = crsminuA_th_rev6_224B0;
15811 else
15812 crsminu_th = crsminuA_th_rev6;
15813
15814 nbclip_th = nbclipA_th_rev6;
15815 rssi_gain = rssiA_gain_rev6;
15816 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15817 lna1_gain_db = lna1A_gain_db_rev5;
15818 lna2_gain_db = lna2A_gain_db_rev5;
15819 tia_gain_db = tiaA_gain_db_rev5;
15820 tia_gainbits = tiaA_gainbits_rev5;
15821 rfseq_init_gain = rfseqA_init_gain_rev5;
15822 init_gaincode = initA_gaincode_rev5;
15823 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15824 clip1md_gaincode = clip1mdA_gaincode_rev5;
15825 clip1lo_gaincode = clip1loA_gaincode_rev5;
15826 crsmin_th = crsminA_th_rev5;
15827 crsminl_th = crsminlA_th_rev5;
15828 crsminu_th = crsminuA_th_rev5;
15829 nbclip_th = nbclipA_th_rev5;
15830 rssi_gain = rssiA_gain_rev5;
15831 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15832 lna1_gain_db = lna1A_gain_db_rev4;
15833 lna2_gain_db = lna2A_gain_db_rev4;
15834 tia_gain_db = tiaA_gain_db_rev4;
15835 tia_gainbits = tiaA_gainbits_rev4;
15836 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15837
15838 rfseq_init_gain =
15839 rfseqA_init_gain_rev4_elna;
15840 init_gaincode =
15841 initA_gaincode_rev4_elna;
15842 } else {
15843 rfseq_init_gain = rfseqA_init_gain_rev4;
15844 init_gaincode = initA_gaincode_rev4;
15845 }
15846 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15847 clip1md_gaincode = clip1mdA_gaincode_rev4;
15848 clip1lo_gaincode = clip1loA_gaincode_rev4;
15849 crsmin_th = crsminA_th_rev4;
15850 crsminl_th = crsminlA_th_rev4;
15851 crsminu_th = crsminuA_th_rev4;
15852 nbclip_th = nbclipA_th_rev4;
15853 rssi_gain = rssi_gain_default;
15854 } else {
15855 lna1_gain_db = lna1A_gain_db;
15856 lna2_gain_db = lna2A_gain_db;
15857 tia_gain_db = tiaA_gain_db;
15858 tia_gainbits = tiaA_gainbits;
15859 rfseq_init_gain = rfseqA_init_gain;
15860 init_gaincode = initA_gaincode;
15861 clip1hi_gaincode = clip1hiA_gaincode;
15862 clip1md_gaincode = clip1mdA_gaincode;
15863 clip1lo_gaincode = clip1loA_gaincode;
15864 crsmin_th = crsminA_th;
15865 crsminl_th = crsminlA_th;
15866 crsminu_th = crsminuA_th;
15867 nbclip_th = nbclipA_th;
15868 rssi_gain = rssi_gain_default;
15869 }
15870 w1clip_th = w1clipA_th;
15871 }
15872
15873 write_radio_reg(pi,
15874 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15875 RADIO_2056_RX0), 0x17);
15876 write_radio_reg(pi,
15877 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15878 RADIO_2056_RX1), 0x17);
15879
15880 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15881 0xf0);
15882 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15883 0xf0);
15884
15885 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15886 0x0);
15887 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15888 0x0);
15889
15890 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15891 rssi_gain);
15892 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15893 rssi_gain);
15894
15895 write_radio_reg(pi,
15896 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15897 RADIO_2056_RX0), 0x17);
15898 write_radio_reg(pi,
15899 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15900 RADIO_2056_RX1), 0x17);
15901
15902 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15903 0xFF);
15904 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15905 0xFF);
15906
15907 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15908 8, lna1_gain_db);
15909 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15910 8, lna1_gain_db);
15911
15912 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15913 8, lna2_gain_db);
15914 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15915 8, lna2_gain_db);
15916
15917 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15918 8, tia_gain_db);
15919 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15920 8, tia_gain_db);
15921
15922 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15923 8, tia_gainbits);
15924 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15925 8, tia_gainbits);
15926
15927 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15928 8, &lpf_gain_db);
15929 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15930 8, &lpf_gain_db);
15931 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15932 8, &lpf_gainbits);
15933 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15934 8, &lpf_gainbits);
15935
15936 write_phy_reg(pi, 0x20, init_gaincode);
15937 write_phy_reg(pi, 0x2a7, init_gaincode);
15938
15939 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15940 pi->pubpi.phy_corenum, 0x106, 16,
15941 rfseq_init_gain);
15942
15943 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15944 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15945
15946 write_phy_reg(pi, 0x24, clip1md_gaincode);
15947 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15948
15949 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15950 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15951
15952 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15953 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15954 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15955
15956 write_phy_reg(pi, 0x2b, nbclip_th);
15957 write_phy_reg(pi, 0x41, nbclip_th);
15958
15959 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15960 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15961
15962 write_phy_reg(pi, 0x150, 0x809c);
15963
15964 } else {
15965
15966 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15967 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15968
15969 write_phy_reg(pi, 0x2b, 0x84);
15970 write_phy_reg(pi, 0x41, 0x84);
15971
15972 if (CHSPEC_IS20(pi->radio_chanspec)) {
15973 write_phy_reg(pi, 0x6b, 0x2b);
15974 write_phy_reg(pi, 0x6c, 0x2b);
15975 write_phy_reg(pi, 0x6d, 0x9);
15976 write_phy_reg(pi, 0x6e, 0x9);
15977 }
15978
15979 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15980 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15981 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15982
15983 if (CHSPEC_IS20(pi->radio_chanspec)) {
15984 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15985 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15986
15987 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15988 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
15989 }
15990
15991 write_phy_reg(pi, 0x150, 0x809c);
15992
15993 if (pi->nphy_gain_boost)
15994 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
15995 (CHSPEC_IS40(pi->radio_chanspec)))
15996 hpf_code = 4;
15997 else
15998 hpf_code = 5;
15999 else if (CHSPEC_IS40(pi->radio_chanspec))
16000 hpf_code = 6;
16001 else
16002 hpf_code = 7;
16003
16004 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16005 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16006
16007 for (ctr = 0; ctr < 4; ctr++)
16008 regval[ctr] = (hpf_code << 8) | 0x7c;
16009 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16010
16011 wlc_phy_adjust_lnagaintbl_nphy(pi);
16012
16013 if (pi->nphy_elna_gain_config) {
16014 regval[0] = 0;
16015 regval[1] = 1;
16016 regval[2] = 1;
16017 regval[3] = 1;
16018 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16019 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16020
16021 for (ctr = 0; ctr < 4; ctr++)
16022 regval[ctr] = (hpf_code << 8) | 0x74;
16023 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024 }
16025
16026 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16027 for (ctr = 0; ctr < 21; ctr++)
16028 regval[ctr] = 3 * ctr;
16029 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16030 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16031
16032 for (ctr = 0; ctr < 21; ctr++)
16033 regval[ctr] = (u16) ctr;
16034 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16035 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16036 }
16037
16038 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16039 rfseq_updategainu_events,
16040 rfseq_updategainu_dlys,
16041 ARRAY_SIZE(rfseq_updategainu_events));
16042
16043 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16044
16045 if (CHSPEC_IS2G(pi->radio_chanspec))
16046 mod_phy_reg(pi,
16047 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16048 0x7f, 0x4);
16049 }
16050 }
16051
16052 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16053 {
16054 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16055 NPHY_REV3_RFSEQ_CMD_NOP,
16056 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16057 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16058 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16059 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16060 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16061 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16062 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16063 NPHY_REV3_RFSEQ_CMD_END
16064 };
16065 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16066 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16067 static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16068 u32 leg_data_weights;
16069 u8 chan_freq_range = 0;
16070 static const u16 dac_control = 0x0002;
16071 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16072 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16073 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16074 s32 min_nvar_val = 0x18d;
16075 s32 min_nvar_offset_6mbps = 20;
16076 u8 pdetrange;
16077 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16078 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16079 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16080 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16081 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16082 static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16083 static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16084 static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16085 u16 ipalvlshift_3p3_war_en = 0;
16086 u16 rccal_bcap_val, rccal_scap_val;
16087 u16 rccal_tx20_11b_bcap = 0;
16088 u16 rccal_tx20_11b_scap = 0;
16089 u16 rccal_tx20_11n_bcap = 0;
16090 u16 rccal_tx20_11n_scap = 0;
16091 u16 rccal_tx40_11n_bcap = 0;
16092 u16 rccal_tx40_11n_scap = 0;
16093 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16094 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16095 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16096 u16 tx_lpf_bw_ofdm_20mhz = 0;
16097 u16 tx_lpf_bw_ofdm_40mhz = 0;
16098 u16 tx_lpf_bw_11b = 0;
16099 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16100 u16 txgm_idac_bleed = 0;
16101 bool rccal_ovrd = false;
16102 u16 freq;
16103 int coreNum;
16104
16105
16106 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16107 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16108
16109 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16110 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16111 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16112 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16113 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16114 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16115 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16116 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16117 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16118 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16119 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16120 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16121 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16122 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16123 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16124 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16125 }
16126
16127 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16128 write_phy_reg(pi, 0x23f, 0x1b0);
16129 write_phy_reg(pi, 0x240, 0x1b0);
16130 }
16131
16132 if (NREV_GE(pi->pubpi.phy_rev, 8))
16133 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16134
16135 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16136 &dac_control);
16137 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16138 &dac_control);
16139
16140 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16141 1, 0, 32, &leg_data_weights);
16142 leg_data_weights = leg_data_weights & 0xffffff;
16143 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16144 1, 0, 32, &leg_data_weights);
16145
16146 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16147 2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16149 rfseq_rx2tx_dacbufpu_rev7);
16150
16151 if (PHY_IPA(pi))
16152 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16153 rfseq_rx2tx_events_rev3_ipa,
16154 rfseq_rx2tx_dlys_rev3_ipa,
16155 ARRAY_SIZE
16156 (rfseq_rx2tx_events_rev3_ipa));
16157
16158 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16159 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16160
16161 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16162 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16163 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16164
16165 if (PHY_IPA(pi)) {
16166
16167 if (((pi->pubpi.radiorev == 5)
16168 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16169 || (pi->pubpi.radiorev == 7)
16170 || (pi->pubpi.radiorev == 8)) {
16171
16172 rccal_bcap_val =
16173 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16174 rccal_scap_val =
16175 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16176
16177 rccal_tx20_11b_bcap = rccal_bcap_val;
16178 rccal_tx20_11b_scap = rccal_scap_val;
16179
16180 if ((pi->pubpi.radiorev == 5) &&
16181 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16182
16183 rccal_tx20_11n_bcap = rccal_bcap_val;
16184 rccal_tx20_11n_scap = rccal_scap_val;
16185 rccal_tx40_11n_bcap = 0xc;
16186 rccal_tx40_11n_scap = 0xc;
16187
16188 rccal_ovrd = true;
16189
16190 } else if ((pi->pubpi.radiorev == 7)
16191 || (pi->pubpi.radiorev == 8)) {
16192
16193 tx_lpf_bw_ofdm_20mhz = 4;
16194 tx_lpf_bw_11b = 1;
16195
16196 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16197 rccal_tx20_11n_bcap = 0xc;
16198 rccal_tx20_11n_scap = 0xc;
16199 rccal_tx40_11n_bcap = 0xa;
16200 rccal_tx40_11n_scap = 0xa;
16201 } else {
16202 rccal_tx20_11n_bcap = 0x14;
16203 rccal_tx20_11n_scap = 0x14;
16204 rccal_tx40_11n_bcap = 0xf;
16205 rccal_tx40_11n_scap = 0xf;
16206 }
16207
16208 rccal_ovrd = true;
16209 }
16210 }
16211
16212 } else {
16213
16214 if (pi->pubpi.radiorev == 5) {
16215
16216 tx_lpf_bw_ofdm_20mhz = 1;
16217 tx_lpf_bw_ofdm_40mhz = 3;
16218
16219 rccal_bcap_val =
16220 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16221 rccal_scap_val =
16222 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16223
16224 rccal_tx20_11b_bcap = rccal_bcap_val;
16225 rccal_tx20_11b_scap = rccal_scap_val;
16226
16227 rccal_tx20_11n_bcap = 0x13;
16228 rccal_tx20_11n_scap = 0x11;
16229 rccal_tx40_11n_bcap = 0x13;
16230 rccal_tx40_11n_scap = 0x11;
16231
16232 rccal_ovrd = true;
16233 }
16234 }
16235
16236 if (rccal_ovrd) {
16237
16238 rx2tx_lpf_rc_lut_tx20_11b =
16239 (rccal_tx20_11b_bcap << 8) |
16240 (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16241 rx2tx_lpf_rc_lut_tx20_11n =
16242 (rccal_tx20_11n_bcap << 8) |
16243 (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16244 rx2tx_lpf_rc_lut_tx40_11n =
16245 (rccal_tx40_11n_bcap << 8) |
16246 (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16247
16248 for (coreNum = 0; coreNum <= 1; coreNum++) {
16249 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16250 0x152 + coreNum * 0x10, 16,
16251 &rx2tx_lpf_rc_lut_tx20_11b);
16252 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16253 0x153 + coreNum * 0x10, 16,
16254 &rx2tx_lpf_rc_lut_tx20_11n);
16255 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16256 0x154 + coreNum * 0x10, 16,
16257 &rx2tx_lpf_rc_lut_tx20_11n);
16258 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16259 0x155 + coreNum * 0x10, 16,
16260 &rx2tx_lpf_rc_lut_tx40_11n);
16261 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16262 0x156 + coreNum * 0x10, 16,
16263 &rx2tx_lpf_rc_lut_tx40_11n);
16264 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16265 0x157 + coreNum * 0x10, 16,
16266 &rx2tx_lpf_rc_lut_tx40_11n);
16267 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16268 0x158 + coreNum * 0x10, 16,
16269 &rx2tx_lpf_rc_lut_tx40_11n);
16270 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16271 0x159 + coreNum * 0x10, 16,
16272 &rx2tx_lpf_rc_lut_tx40_11n);
16273 }
16274
16275 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16276 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16277 }
16278
16279 write_phy_reg(pi, 0x32f, 0x3);
16280
16281 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16282 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16283 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16284
16285 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16286 (pi->pubpi.radiorev == 6)) {
16287 if ((pi->sh->sromrev >= 8)
16288 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16289 ipalvlshift_3p3_war_en = 1;
16290
16291 if (ipalvlshift_3p3_war_en) {
16292 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16293 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16294 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16295 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16296 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16297
16298 ipa2g_mainbias = 0x1f;
16299
16300 ipa2g_casconv = 0x6f;
16301
16302 ipa2g_biasfilt = 0xaa;
16303 } else {
16304
16305 ipa2g_mainbias = 0x2b;
16306
16307 ipa2g_casconv = 0x7f;
16308
16309 ipa2g_biasfilt = 0xee;
16310 }
16311
16312 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16313 for (coreNum = 0; coreNum <= 1; coreNum++) {
16314 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16315 coreNum, IPA2G_IMAIN,
16316 ipa2g_mainbias);
16317 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16318 coreNum, IPA2G_CASCONV,
16319 ipa2g_casconv);
16320 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16321 coreNum,
16322 IPA2G_BIAS_FILTER,
16323 ipa2g_biasfilt);
16324 }
16325 }
16326 }
16327
16328 if (PHY_IPA(pi)) {
16329 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16330 if ((pi->pubpi.radiorev == 3)
16331 || (pi->pubpi.radiorev == 4)
16332 || (pi->pubpi.radiorev == 6))
16333 txgm_idac_bleed = 0x7f;
16334
16335 for (coreNum = 0; coreNum <= 1; coreNum++) {
16336 if (txgm_idac_bleed != 0)
16337 WRITE_RADIO_REG4(pi, RADIO_2057,
16338 CORE, coreNum,
16339 TXGM_IDAC_BLEED,
16340 txgm_idac_bleed);
16341 }
16342
16343 if (pi->pubpi.radiorev == 5) {
16344 for (coreNum = 0; coreNum <= 1; coreNum++) {
16345 WRITE_RADIO_REG4(pi, RADIO_2057,
16346 CORE, coreNum,
16347 IPA2G_CASCONV,
16348 0x13);
16349 WRITE_RADIO_REG4(pi, RADIO_2057,
16350 CORE, coreNum,
16351 IPA2G_IMAIN,
16352 0x1f);
16353 WRITE_RADIO_REG4(pi, RADIO_2057,
16354 CORE, coreNum,
16355 IPA2G_BIAS_FILTER,
16356 0xee);
16357 WRITE_RADIO_REG4(pi, RADIO_2057,
16358 CORE, coreNum,
16359 PAD2G_IDACS,
16360 0x8a);
16361 WRITE_RADIO_REG4(pi, RADIO_2057,
16362 CORE, coreNum,
16363 PAD_BIAS_FILTER_BWS,
16364 0x3e);
16365 }
16366 } else if ((pi->pubpi.radiorev == 7) ||
16367 (pi->pubpi.radiorev == 8)) {
16368
16369 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16370 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16371 0, IPA2G_IMAIN, 0x14);
16372 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16373 1, IPA2G_IMAIN, 0x12);
16374 } else {
16375 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16376 0, IPA2G_IMAIN, 0x16);
16377 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16378 1, IPA2G_IMAIN, 0x16);
16379 }
16380 }
16381
16382 } else {
16383 freq =
16384 CHAN5G_FREQ(CHSPEC_CHANNEL
16385 (pi->radio_chanspec));
16386 if (((freq >= 5180) && (freq <= 5230))
16387 || ((freq >= 5745) && (freq <= 5805))) {
16388 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16389 0, IPA5G_BIAS_FILTER, 0xff);
16390 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16391 1, IPA5G_BIAS_FILTER, 0xff);
16392 }
16393 }
16394 } else {
16395
16396 if (pi->pubpi.radiorev != 5) {
16397 for (coreNum = 0; coreNum <= 1; coreNum++) {
16398 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16399 TXMIX2G_TUNE_BOOST_PU, 0x61);
16400 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16401 TXGM_IDAC_BLEED, 0x70);
16402 }
16403 }
16404 }
16405
16406 if (pi->pubpi.radiorev == 4) {
16407 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16408 &afectrl_adc_ctrl1_rev7);
16409 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16410 &afectrl_adc_ctrl1_rev7);
16411
16412 for (coreNum = 0; coreNum <= 1; coreNum++) {
16413 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16414 AFE_VCM_CAL_MASTER, 0x0);
16415 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16416 AFE_SET_VCM_I, 0x3f);
16417 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16418 AFE_SET_VCM_Q, 0x3f);
16419 }
16420 } else {
16421 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16422 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16423 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16424 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16425
16426 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16427 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16428 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16429 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16430
16431 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16432 &afectrl_adc_ctrl2_rev7);
16433 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16434 &afectrl_adc_ctrl2_rev7);
16435
16436 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16437 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16438 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16439 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16440 }
16441
16442 write_phy_reg(pi, 0x6a, 0x2);
16443
16444 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16445 &min_nvar_offset_6mbps);
16446
16447 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16448 &rfseq_pktgn_lpf_hpc_rev7);
16449
16450 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16451 &rfseq_pktgn_lpf_h_hpc_rev7);
16452
16453 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16454 &rfseq_htpktgn_lpf_hpc_rev7);
16455
16456 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16457 &rfseq_cckpktgn_lpf_hpc_rev7);
16458
16459 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16460 &rfseq_tx2rx_lpf_h_hpc_rev7);
16461
16462 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16463 &rfseq_rx2tx_lpf_h_hpc_rev7);
16464
16465 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16466 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16467 32, &min_nvar_val);
16468 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16469 127, 32, &min_nvar_val);
16470 } else {
16471 min_nvar_val = noise_var_tbl_rev7[3];
16472 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16473 32, &min_nvar_val);
16474
16475 min_nvar_val = noise_var_tbl_rev7[127];
16476 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16477 127, 32, &min_nvar_val);
16478 }
16479
16480 wlc_phy_workarounds_nphy_gainctrl(pi);
16481
16482 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16483 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16484
16485 if (pdetrange == 0) {
16486 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16487 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16488 aux_adc_vmid_rev7_core0[3] = 0x70;
16489 aux_adc_vmid_rev7_core1[3] = 0x70;
16490 aux_adc_gain_rev7[3] = 2;
16491 } else {
16492 aux_adc_vmid_rev7_core0[3] = 0x80;
16493 aux_adc_vmid_rev7_core1[3] = 0x80;
16494 aux_adc_gain_rev7[3] = 3;
16495 }
16496 } else if (pdetrange == 1) {
16497 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16498 aux_adc_vmid_rev7_core0[3] = 0x7c;
16499 aux_adc_vmid_rev7_core1[3] = 0x7c;
16500 aux_adc_gain_rev7[3] = 2;
16501 } else {
16502 aux_adc_vmid_rev7_core0[3] = 0x8c;
16503 aux_adc_vmid_rev7_core1[3] = 0x8c;
16504 aux_adc_gain_rev7[3] = 1;
16505 }
16506 } else if (pdetrange == 2) {
16507 if (pi->pubpi.radioid == BCM2057_ID) {
16508 if ((pi->pubpi.radiorev == 5)
16509 || (pi->pubpi.radiorev == 7)
16510 || (pi->pubpi.radiorev == 8)) {
16511 if (chan_freq_range ==
16512 WL_CHAN_FREQ_RANGE_2G) {
16513 aux_adc_vmid_rev7_core0[3] = 0x8c;
16514 aux_adc_vmid_rev7_core1[3] = 0x8c;
16515 aux_adc_gain_rev7[3] = 0;
16516 } else {
16517 aux_adc_vmid_rev7_core0[3] = 0x96;
16518 aux_adc_vmid_rev7_core1[3] = 0x96;
16519 aux_adc_gain_rev7[3] = 0;
16520 }
16521 }
16522 }
16523
16524 } else if (pdetrange == 3) {
16525 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16526 aux_adc_vmid_rev7_core0[3] = 0x89;
16527 aux_adc_vmid_rev7_core1[3] = 0x89;
16528 aux_adc_gain_rev7[3] = 0;
16529 }
16530
16531 } else if (pdetrange == 5) {
16532
16533 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16534 aux_adc_vmid_rev7_core0[3] = 0x80;
16535 aux_adc_vmid_rev7_core1[3] = 0x80;
16536 aux_adc_gain_rev7[3] = 3;
16537 } else {
16538 aux_adc_vmid_rev7_core0[3] = 0x70;
16539 aux_adc_vmid_rev7_core1[3] = 0x70;
16540 aux_adc_gain_rev7[3] = 2;
16541 }
16542 }
16543
16544 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16545 &aux_adc_vmid_rev7_core0);
16546 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16547 &aux_adc_vmid_rev7_core1);
16548 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16549 &aux_adc_gain_rev7);
16550 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16551 &aux_adc_gain_rev7);
16552 }
16553
16554 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16555 {
16556 static const u8 rfseq_tx2rx_events_rev3[] = {
16557 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16558 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16559 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16560 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16561 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16562 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16563 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16564 NPHY_REV3_RFSEQ_CMD_END
16565 };
16566 static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16567 u8 rfseq_rx2tx_events_rev3[] = {
16568 NPHY_REV3_RFSEQ_CMD_NOP,
16569 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16570 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16571 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16572 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16573 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16574 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16575 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16576 NPHY_REV3_RFSEQ_CMD_END
16577 };
16578 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16579 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16580 NPHY_REV3_RFSEQ_CMD_NOP,
16581 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16582 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16583 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16584 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16585 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16586 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16587 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16588 NPHY_REV3_RFSEQ_CMD_END
16589 };
16590 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16591 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16592 s16 alpha0, alpha1, alpha2;
16593 s16 beta0, beta1, beta2;
16594 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16595 stbc_data_weights;
16596 u8 chan_freq_range = 0;
16597 static const u16 dac_control = 0x0002;
16598 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16599 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16600 u16 *aux_adc_vmid;
16601 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16602 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16603 u16 *aux_adc_gain;
16604 static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16605 static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16606 s32 min_nvar_val = 0x18d;
16607 u8 pdetrange;
16608 u8 triso;
16609
16610 write_phy_reg(pi, 0x23f, 0x1f8);
16611 write_phy_reg(pi, 0x240, 0x1f8);
16612
16613 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16614 1, 0, 32, &leg_data_weights);
16615 leg_data_weights = leg_data_weights & 0xffffff;
16616 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16617 1, 0, 32, &leg_data_weights);
16618
16619 alpha0 = 293;
16620 alpha1 = 435;
16621 alpha2 = 261;
16622 beta0 = 366;
16623 beta1 = 205;
16624 beta2 = 32;
16625 write_phy_reg(pi, 0x145, alpha0);
16626 write_phy_reg(pi, 0x146, alpha1);
16627 write_phy_reg(pi, 0x147, alpha2);
16628 write_phy_reg(pi, 0x148, beta0);
16629 write_phy_reg(pi, 0x149, beta1);
16630 write_phy_reg(pi, 0x14a, beta2);
16631
16632 write_phy_reg(pi, 0x38, 0xC);
16633 write_phy_reg(pi, 0x2ae, 0xC);
16634
16635 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16636 rfseq_tx2rx_events_rev3,
16637 rfseq_tx2rx_dlys_rev3,
16638 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16639
16640 if (PHY_IPA(pi))
16641 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16642 rfseq_rx2tx_events_rev3_ipa,
16643 rfseq_rx2tx_dlys_rev3_ipa,
16644 ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16645
16646 if ((pi->sh->hw_phyrxchain != 0x3) &&
16647 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16648
16649 if (PHY_IPA(pi)) {
16650 rfseq_rx2tx_dlys_rev3[5] = 59;
16651 rfseq_rx2tx_dlys_rev3[6] = 1;
16652 rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16653 }
16654
16655 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16656 rfseq_rx2tx_events_rev3,
16657 rfseq_rx2tx_dlys_rev3,
16658 ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16659 }
16660
16661 if (CHSPEC_IS2G(pi->radio_chanspec))
16662 write_phy_reg(pi, 0x6a, 0x2);
16663 else
16664 write_phy_reg(pi, 0x6a, 0x9c40);
16665
16666 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16667
16668 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16669 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16670 32, &min_nvar_val);
16671 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16672 127, 32, &min_nvar_val);
16673 } else {
16674 min_nvar_val = noise_var_tbl_rev3[3];
16675 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16676 32, &min_nvar_val);
16677
16678 min_nvar_val = noise_var_tbl_rev3[127];
16679 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16680 127, 32, &min_nvar_val);
16681 }
16682
16683 wlc_phy_workarounds_nphy_gainctrl(pi);
16684
16685 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16686 &dac_control);
16687 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16688 &dac_control);
16689
16690 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16691 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16692
16693 if (pdetrange == 0) {
16694 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16695 aux_adc_vmid = aux_adc_vmid_rev4;
16696 aux_adc_gain = aux_adc_gain_rev4;
16697 } else {
16698 aux_adc_vmid = aux_adc_vmid_rev3;
16699 aux_adc_gain = aux_adc_gain_rev3;
16700 }
16701 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16702 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16703 switch (chan_freq_range) {
16704 case WL_CHAN_FREQ_RANGE_5GL:
16705 aux_adc_vmid[3] = 0x89;
16706 aux_adc_gain[3] = 0;
16707 break;
16708 case WL_CHAN_FREQ_RANGE_5GM:
16709 aux_adc_vmid[3] = 0x89;
16710 aux_adc_gain[3] = 0;
16711 break;
16712 case WL_CHAN_FREQ_RANGE_5GH:
16713 aux_adc_vmid[3] = 0x89;
16714 aux_adc_gain[3] = 0;
16715 break;
16716 default:
16717 break;
16718 }
16719 }
16720 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16721 0x08, 16, aux_adc_vmid);
16722 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16723 0x18, 16, aux_adc_vmid);
16724 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16725 0x0c, 16, aux_adc_gain);
16726 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16727 0x1c, 16, aux_adc_gain);
16728 } else if (pdetrange == 1) {
16729 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16730 0x08, 16, sk_adc_vmid);
16731 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16732 0x18, 16, sk_adc_vmid);
16733 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16734 0x0c, 16, sk_adc_gain);
16735 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16736 0x1c, 16, sk_adc_gain);
16737 } else if (pdetrange == 2) {
16738
16739 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16740 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16741
16742 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16743 chan_freq_range =
16744 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16745 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16746 bcm_adc_vmid[3] = 0x8e;
16747 bcm_adc_gain[3] = 0x03;
16748 } else {
16749 bcm_adc_vmid[3] = 0x94;
16750 bcm_adc_gain[3] = 0x03;
16751 }
16752 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16753 bcm_adc_vmid[3] = 0x84;
16754 bcm_adc_gain[3] = 0x02;
16755 }
16756
16757 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16758 0x08, 16, bcm_adc_vmid);
16759 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16760 0x18, 16, bcm_adc_vmid);
16761 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16762 0x0c, 16, bcm_adc_gain);
16763 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16764 0x1c, 16, bcm_adc_gain);
16765 } else if (pdetrange == 3) {
16766 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16767 if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16768 (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16769 u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16770 u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16771
16772 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16773 0x08, 16, auxadc_vmid);
16774 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16775 0x18, 16, auxadc_vmid);
16776 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16777 0x0c, 16, auxadc_gain);
16778 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16779 0x1c, 16, auxadc_gain);
16780 }
16781 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16782 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16783 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16784 u16 Vmid[2], Av[2];
16785
16786 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16787 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16788 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16789 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16790 Av[0] = (pdetrange == 4) ? 2 : 0;
16791 Av[1] = (pdetrange == 4) ? 2 : 0;
16792 } else {
16793 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16794 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16795 Av[0] = (pdetrange == 4) ? 2 : 0;
16796 Av[1] = (pdetrange == 4) ? 2 : 0;
16797 }
16798
16799 bcm_adc_vmid[3] = Vmid[0];
16800 bcm_adc_gain[3] = Av[0];
16801 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16802 0x08, 16, bcm_adc_vmid);
16803 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16804 0x0c, 16, bcm_adc_gain);
16805
16806 bcm_adc_vmid[3] = Vmid[1];
16807 bcm_adc_gain[3] = Av[1];
16808 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16809 0x18, 16, bcm_adc_vmid);
16810 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16811 0x1c, 16, bcm_adc_gain);
16812 }
16813
16814 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16815 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16816
16817 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16818 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16819
16820 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16821 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16822
16823 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16824 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16825
16826 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16827 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16828
16829 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16830 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16831
16832 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16833 pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16834 if (triso == 7) {
16835 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16836 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16837 }
16838
16839 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16840
16841 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16842 (CHSPEC_IS5G(pi->radio_chanspec))) ||
16843 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16844 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16845 (CHSPEC_IS2G(pi->radio_chanspec)))) {
16846 nss1_data_weights = 0x00088888;
16847 ht_data_weights = 0x00088888;
16848 stbc_data_weights = 0x00088888;
16849 } else {
16850 nss1_data_weights = 0x88888888;
16851 ht_data_weights = 0x88888888;
16852 stbc_data_weights = 0x88888888;
16853 }
16854 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16855 1, 1, 32, &nss1_data_weights);
16856 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16857 1, 2, 32, &ht_data_weights);
16858 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16859 1, 3, 32, &stbc_data_weights);
16860
16861 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16862 if (CHSPEC_IS5G(pi->radio_chanspec)) {
16863 write_radio_reg(pi,
16864 RADIO_2056_TX_GMBB_IDAC |
16865 RADIO_2056_TX0, 0x70);
16866 write_radio_reg(pi,
16867 RADIO_2056_TX_GMBB_IDAC |
16868 RADIO_2056_TX1, 0x70);
16869 }
16870 }
16871
16872 if (!pi->edcrs_threshold_lock) {
16873 write_phy_reg(pi, 0x224, 0x3eb);
16874 write_phy_reg(pi, 0x225, 0x3eb);
16875 write_phy_reg(pi, 0x226, 0x341);
16876 write_phy_reg(pi, 0x227, 0x341);
16877 write_phy_reg(pi, 0x228, 0x42b);
16878 write_phy_reg(pi, 0x229, 0x42b);
16879 write_phy_reg(pi, 0x22a, 0x381);
16880 write_phy_reg(pi, 0x22b, 0x381);
16881 write_phy_reg(pi, 0x22c, 0x42b);
16882 write_phy_reg(pi, 0x22d, 0x42b);
16883 write_phy_reg(pi, 0x22e, 0x381);
16884 write_phy_reg(pi, 0x22f, 0x381);
16885 }
16886
16887 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16888
16889 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16890 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16891 MHF4_BPHY_TXCORE0,
16892 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16893 }
16894 }
16895
16896 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16897 {
16898 static const u8 rfseq_rx2tx_events[] = {
16899 NPHY_RFSEQ_CMD_NOP,
16900 NPHY_RFSEQ_CMD_RXG_FBW,
16901 NPHY_RFSEQ_CMD_TR_SWITCH,
16902 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16903 NPHY_RFSEQ_CMD_RXPD_TXPD,
16904 NPHY_RFSEQ_CMD_TX_GAIN,
16905 NPHY_RFSEQ_CMD_EXT_PA
16906 };
16907 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16908 static const u8 rfseq_tx2rx_events[] = {
16909 NPHY_RFSEQ_CMD_NOP,
16910 NPHY_RFSEQ_CMD_EXT_PA,
16911 NPHY_RFSEQ_CMD_TX_GAIN,
16912 NPHY_RFSEQ_CMD_RXPD_TXPD,
16913 NPHY_RFSEQ_CMD_TR_SWITCH,
16914 NPHY_RFSEQ_CMD_RXG_FBW,
16915 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16916 };
16917 static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16918 s16 alpha0, alpha1, alpha2;
16919 s16 beta0, beta1, beta2;
16920 u16 regval;
16921
16922 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16923 (pi->sh->boardtype == 0x8b)) {
16924 uint i;
16925 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16926 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16927 rfseq_rx2tx_dlys[i] = war_dlys[i];
16928 }
16929
16930 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16931 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16932 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16933 } else {
16934 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16935 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16936 }
16937
16938 regval = 0x000a;
16939 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, ®val);
16940 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, ®val);
16941
16942 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16943 regval = 0xcdaa;
16944 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, ®val);
16945 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, ®val);
16946 }
16947
16948 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16949 regval = 0x0000;
16950 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, ®val);
16951 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, ®val);
16952
16953 regval = 0x7aab;
16954 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, ®val);
16955 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, ®val);
16956
16957 regval = 0x0800;
16958 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, ®val);
16959 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, ®val);
16960 }
16961
16962 write_phy_reg(pi, 0xf8, 0x02d8);
16963 write_phy_reg(pi, 0xf9, 0x0301);
16964 write_phy_reg(pi, 0xfa, 0x02d8);
16965 write_phy_reg(pi, 0xfb, 0x0301);
16966
16967 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16968 rfseq_rx2tx_dlys,
16969 ARRAY_SIZE(rfseq_rx2tx_events));
16970
16971 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16972 rfseq_tx2rx_dlys,
16973 ARRAY_SIZE(rfseq_tx2rx_events));
16974
16975 wlc_phy_workarounds_nphy_gainctrl(pi);
16976
16977 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16978
16979 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16980 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16981 MHF3_NPHY_MLADV_WAR,
16982 MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
16983
16984 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16985 write_phy_reg(pi, 0x1e3, 0x0);
16986 write_phy_reg(pi, 0x1e4, 0x0);
16987 }
16988
16989 if (NREV_LT(pi->pubpi.phy_rev, 2))
16990 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16991
16992 alpha0 = 293;
16993 alpha1 = 435;
16994 alpha2 = 261;
16995 beta0 = 366;
16996 beta1 = 205;
16997 beta2 = 32;
16998 write_phy_reg(pi, 0x145, alpha0);
16999 write_phy_reg(pi, 0x146, alpha1);
17000 write_phy_reg(pi, 0x147, alpha2);
17001 write_phy_reg(pi, 0x148, beta0);
17002 write_phy_reg(pi, 0x149, beta1);
17003 write_phy_reg(pi, 0x14a, beta2);
17004
17005 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17006 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17007
17008 write_phy_reg(pi, 0x192, 0xb5);
17009 write_phy_reg(pi, 0x193, 0xa4);
17010 write_phy_reg(pi, 0x194, 0x0);
17011 }
17012
17013 if (NREV_IS(pi->pubpi.phy_rev, 2))
17014 mod_phy_reg(pi, 0x221,
17015 NPHY_FORCESIG_DECODEGATEDCLKS,
17016 NPHY_FORCESIG_DECODEGATEDCLKS);
17017 }
17018
17019 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17020 {
17021 if (CHSPEC_IS5G(pi->radio_chanspec))
17022 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17023 else
17024 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17025
17026 if (pi->phyhang_avoid)
17027 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17028
17029 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17030
17031 if (NREV_GE(pi->pubpi.phy_rev, 7))
17032 wlc_phy_workarounds_nphy_rev7(pi);
17033 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17034 wlc_phy_workarounds_nphy_rev3(pi);
17035 else
17036 wlc_phy_workarounds_nphy_rev1(pi);
17037
17038 if (pi->phyhang_avoid)
17039 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17040 }
17041
17042 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17043 {
17044 int j, type = 2;
17045 u16 addr_offset = 0x2c5;
17046
17047 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17048 write_phy_reg(pi, addr_offset + j,
17049 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17050 }
17051
17052 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17053 {
17054
17055 if (write == 0) {
17056 vals[0] = read_phy_reg(pi, 0x2c);
17057 vals[1] = read_phy_reg(pi, 0x42);
17058 } else {
17059 write_phy_reg(pi, 0x2c, vals[0]);
17060 write_phy_reg(pi, 0x42, vals[1]);
17061 }
17062 }
17063
17064 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17065 {
17066 u8 core;
17067
17068 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17069 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17070 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17071 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17072 TX_SSI_MASTER, 0x5);
17073 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17074 TX_SSI_MUX, 0xe);
17075
17076 if (pi->pubpi.radiorev != 5)
17077 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17078 core, TSSIA, 0);
17079
17080 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17081 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17082 core, TSSIG, 0x1);
17083 else
17084 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17085 core, TSSIG, 0x31);
17086 } else {
17087 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17088 TX_SSI_MASTER, 0x9);
17089 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17090 TX_SSI_MUX, 0xc);
17091 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17092 TSSIG, 0);
17093
17094 if (pi->pubpi.radiorev != 5) {
17095 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17096 WRITE_RADIO_REG3(pi, RADIO_2057,
17097 TX, core,
17098 TSSIA, 0x1);
17099 else
17100 WRITE_RADIO_REG3(pi, RADIO_2057,
17101 TX, core,
17102 TSSIA, 0x31);
17103 }
17104 }
17105 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17106 0);
17107 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17108 0);
17109 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17110 0x3);
17111 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17112 0x0);
17113 }
17114 } else {
17115 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17116 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17117 0x80);
17118 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17119 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17120
17121 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17122 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17123 0x0);
17124 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17125 0x0);
17126 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17127 0x3);
17128 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17129 0x0);
17130 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17131 0x8);
17132 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17133 0x0);
17134 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17135 0x0);
17136
17137 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17138 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17139 TX_SSI_MASTER, 0x5);
17140
17141 if (pi->pubpi.radiorev != 5)
17142 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17143 core, TSSIA, 0x0);
17144 if (NREV_GE(pi->pubpi.phy_rev, 5))
17145 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17146 core, TSSIG, 0x31);
17147 else
17148 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17149 core, TSSIG, 0x11);
17150 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17151 TX_SSI_MUX, 0xe);
17152 } else {
17153 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17154 TX_SSI_MASTER, 0x9);
17155 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17156 TSSIA, 0x31);
17157 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17158 TSSIG, 0x0);
17159 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17160 TX_SSI_MUX, 0xc);
17161 }
17162 }
17163 }
17164 }
17165
17166 static void
17167 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17168 u8 core_mask, u8 off)
17169 {
17170 u8 core_num;
17171 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17172 0, val_mask = 0;
17173 u8 shift = 0, val_shift = 0;
17174
17175 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17176
17177 en_mask = field;
17178 for (core_num = 0; core_num < 2; core_num++) {
17179
17180 switch (field) {
17181 case (0x1 << 1):
17182 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17183 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17184 val_mask = (0x1 << 0);
17185 val_shift = 0;
17186 break;
17187 case (0x1 << 2):
17188 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17189 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17190 val_mask = (0x1 << 1);
17191 val_shift = 1;
17192 break;
17193 case (0x1 << 3):
17194 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17195 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17196 val_mask = (0x1 << 2);
17197 val_shift = 2;
17198 break;
17199 case (0x1 << 4):
17200 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17201 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17202 val_mask = (0x1 << 4);
17203 val_shift = 4;
17204 break;
17205 case (0x1 << 5):
17206 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17207 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17208 val_mask = (0x1 << 5);
17209 val_shift = 5;
17210 break;
17211 case (0x1 << 6):
17212 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17213 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17214 val_mask = (0x1 << 6);
17215 val_shift = 6;
17216 break;
17217 case (0x1 << 7):
17218 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17219 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17220 val_mask = (0x1 << 7);
17221 val_shift = 7;
17222 break;
17223 case (0x1 << 8):
17224 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17225 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17226 val_mask = (0x7 << 8);
17227 val_shift = 8;
17228 break;
17229 case (0x1 << 11):
17230 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17231 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17232 val_mask = (0x7 << 13);
17233 val_shift = 13;
17234 break;
17235
17236 case (0x1 << 9):
17237 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17238 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17239 val_mask = (0x7 << 0);
17240 val_shift = 0;
17241 break;
17242
17243 case (0x1 << 10):
17244 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17245 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17246 val_mask = (0x7 << 4);
17247 val_shift = 4;
17248 break;
17249
17250 case (0x1 << 12):
17251 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17252 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17253 val_mask = (0xffff << 0);
17254 val_shift = 0;
17255 break;
17256 case (0x1 << 13):
17257 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17258 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17259 val_mask = (0xffff << 0);
17260 val_shift = 0;
17261 break;
17262 case (0x1 << 14):
17263 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17264 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17265 val_mask = (0x3 << 6);
17266 val_shift = 6;
17267 break;
17268 case (0x1 << 0):
17269 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17270 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17271 val_mask = (0x1 << 15);
17272 val_shift = 15;
17273 break;
17274 default:
17275 addr = 0xffff;
17276 break;
17277 }
17278
17279 if (off) {
17280 and_phy_reg(pi, en_addr, ~en_mask);
17281 and_phy_reg(pi, val_addr, ~val_mask);
17282 } else {
17283
17284 if ((core_mask == 0)
17285 || (core_mask & (1 << core_num))) {
17286 or_phy_reg(pi, en_addr, en_mask);
17287
17288 if (addr != 0xffff)
17289 mod_phy_reg(pi, val_addr,
17290 val_mask,
17291 (value <<
17292 val_shift));
17293 }
17294 }
17295 }
17296 } else {
17297
17298 if (off) {
17299 and_phy_reg(pi, 0xec, ~field);
17300 value = 0x0;
17301 } else {
17302 or_phy_reg(pi, 0xec, field);
17303 }
17304
17305 for (core_num = 0; core_num < 2; core_num++) {
17306
17307 switch (field) {
17308 case (0x1 << 1):
17309 case (0x1 << 9):
17310 case (0x1 << 12):
17311 case (0x1 << 13):
17312 case (0x1 << 14):
17313 addr = 0x78;
17314
17315 core_mask = 0x1;
17316 break;
17317 case (0x1 << 2):
17318 case (0x1 << 3):
17319 case (0x1 << 4):
17320 case (0x1 << 5):
17321 case (0x1 << 6):
17322 case (0x1 << 7):
17323 case (0x1 << 8):
17324 addr = (core_num == 0) ? 0x7a : 0x7d;
17325 break;
17326 case (0x1 << 10):
17327 addr = (core_num == 0) ? 0x7b : 0x7e;
17328 break;
17329 case (0x1 << 11):
17330 addr = (core_num == 0) ? 0x7c : 0x7f;
17331 break;
17332 default:
17333 addr = 0xffff;
17334 }
17335
17336 switch (field) {
17337 case (0x1 << 1):
17338 mask = (0x7 << 3);
17339 shift = 3;
17340 break;
17341 case (0x1 << 9):
17342 mask = (0x1 << 2);
17343 shift = 2;
17344 break;
17345 case (0x1 << 12):
17346 mask = (0x1 << 8);
17347 shift = 8;
17348 break;
17349 case (0x1 << 13):
17350 mask = (0x1 << 9);
17351 shift = 9;
17352 break;
17353 case (0x1 << 14):
17354 mask = (0xf << 12);
17355 shift = 12;
17356 break;
17357 case (0x1 << 2):
17358 mask = (0x1 << 0);
17359 shift = 0;
17360 break;
17361 case (0x1 << 3):
17362 mask = (0x1 << 1);
17363 shift = 1;
17364 break;
17365 case (0x1 << 4):
17366 mask = (0x1 << 2);
17367 shift = 2;
17368 break;
17369 case (0x1 << 5):
17370 mask = (0x3 << 4);
17371 shift = 4;
17372 break;
17373 case (0x1 << 6):
17374 mask = (0x3 << 6);
17375 shift = 6;
17376 break;
17377 case (0x1 << 7):
17378 mask = (0x1 << 8);
17379 shift = 8;
17380 break;
17381 case (0x1 << 8):
17382 mask = (0x1 << 9);
17383 shift = 9;
17384 break;
17385 case (0x1 << 10):
17386 mask = 0x1fff;
17387 shift = 0x0;
17388 break;
17389 case (0x1 << 11):
17390 mask = 0x1fff;
17391 shift = 0x0;
17392 break;
17393 default:
17394 mask = 0x0;
17395 shift = 0x0;
17396 break;
17397 }
17398
17399 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17400 mod_phy_reg(pi, addr, mask, (value << shift));
17401 }
17402
17403 or_phy_reg(pi, 0xec, (0x1 << 0));
17404 or_phy_reg(pi, 0x78, (0x1 << 0));
17405 udelay(1);
17406 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17407 }
17408 }
17409
17410 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17411 {
17412 s32 rssi_buf[4];
17413 s32 int_val;
17414
17415 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17416
17417 return;
17418
17419 if (PHY_IPA(pi))
17420 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17421
17422 if (NREV_GE(pi->pubpi.phy_rev, 7))
17423 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17424 0, 0x3, 0,
17425 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17426 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17427 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17428
17429 wlc_phy_stopplayback_nphy(pi);
17430
17431 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17432
17433 udelay(20);
17434 int_val =
17435 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17436 1);
17437 wlc_phy_stopplayback_nphy(pi);
17438 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17439
17440 if (NREV_GE(pi->pubpi.phy_rev, 7))
17441 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17442 0, 0x3, 1,
17443 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17444 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17445 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17446
17447 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17448
17449 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17450 (u8) ((int_val >> 24) & 0xff);
17451 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17452 (u8) ((int_val >> 24) & 0xff);
17453
17454 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17455 (u8) ((int_val >> 8) & 0xff);
17456 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17457 (u8) ((int_val >> 8) & 0xff);
17458 } else {
17459 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17460 (u8) ((int_val >> 24) & 0xff);
17461
17462 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17463 (u8) ((int_val >> 8) & 0xff);
17464
17465 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17466 (u8) ((int_val >> 16) & 0xff);
17467 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17468 (u8) ((int_val) & 0xff);
17469 }
17470
17471 }
17472
17473 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17474 {
17475 u8 idx, idx2, i, delta_ind;
17476
17477 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17478 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17479
17480 for (i = 0; i < 4; i++) {
17481 idx2 = 0;
17482
17483 delta_ind = 0;
17484
17485 switch (i) {
17486 case 0:
17487
17488 if (CHSPEC_IS40(pi->radio_chanspec)
17489 && NPHY_IS_SROM_REINTERPRET) {
17490 idx = TXP_FIRST_MCS_40_SISO;
17491 } else {
17492 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17493 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17494 delta_ind = 1;
17495 }
17496 break;
17497
17498 case 1:
17499
17500 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17501 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17502 break;
17503
17504 case 2:
17505
17506 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17507 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17508 break;
17509
17510 case 3:
17511
17512 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17513 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17514 break;
17515 }
17516
17517 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17518 pi->tx_power_offset[idx];
17519 idx = idx + delta_ind;
17520 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17521 pi->tx_power_offset[idx];
17522 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17523 pi->tx_power_offset[idx];
17524 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17525 pi->tx_power_offset[idx++];
17526
17527 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17528 pi->tx_power_offset[idx++];
17529 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17530 pi->tx_power_offset[idx];
17531 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17532 pi->tx_power_offset[idx];
17533 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17534 pi->tx_power_offset[idx++];
17535
17536 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17537 pi->tx_power_offset[idx++];
17538 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17539 pi->tx_power_offset[idx];
17540 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17541 pi->tx_power_offset[idx];
17542 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17543 pi->tx_power_offset[idx++];
17544
17545 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17546 pi->tx_power_offset[idx];
17547 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548 pi->tx_power_offset[idx++];
17549 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17550 pi->tx_power_offset[idx];
17551 idx = idx + 1 - delta_ind;
17552 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17553 pi->tx_power_offset[idx];
17554
17555 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17556 pi->tx_power_offset[idx];
17557 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17558 pi->tx_power_offset[idx];
17559 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17560 pi->tx_power_offset[idx];
17561 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17562 pi->tx_power_offset[idx];
17563 }
17564 }
17565
17566 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17567 {
17568 u32 idx;
17569 s16 a1[2], b0[2], b1[2];
17570 s8 target_pwr_qtrdbm[2];
17571 s32 num, den, pwr_est;
17572 u8 chan_freq_range;
17573 u8 idle_tssi[2];
17574 u32 tbl_id, tbl_len, tbl_offset;
17575 u32 regval[64];
17576 u8 core;
17577
17578 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17579 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17580 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17581 udelay(1);
17582 }
17583
17584 if (pi->phyhang_avoid)
17585 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17586
17587 or_phy_reg(pi, 0x122, (0x1 << 0));
17588
17589 if (NREV_GE(pi->pubpi.phy_rev, 3))
17590 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17591 else
17592 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17593
17594 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17595 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17596
17597 if (pi->sh->sromrev < 4) {
17598 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17599 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17600 a1[0] = -424;
17601 a1[1] = -424;
17602 b0[0] = 5612;
17603 b0[1] = 5612;
17604 b1[1] = -1393;
17605 b1[0] = -1393;
17606 } else {
17607
17608 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17609 switch (chan_freq_range) {
17610 case WL_CHAN_FREQ_RANGE_2G:
17611 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17612 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17613 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17614 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17615 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17616 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17617 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17618 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17619 break;
17620 case WL_CHAN_FREQ_RANGE_5GL:
17621 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17622 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17623 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17624 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17625 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17626 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17627 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17628 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17629 break;
17630 case WL_CHAN_FREQ_RANGE_5GM:
17631 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17632 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17633 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17634 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17635 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17636 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17637 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17638 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17639 break;
17640 case WL_CHAN_FREQ_RANGE_5GH:
17641 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17642 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17643 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17644 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17645 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17646 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17647 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17648 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17649 break;
17650 default:
17651 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17652 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17653 a1[0] = -424;
17654 a1[1] = -424;
17655 b0[0] = 5612;
17656 b0[1] = 5612;
17657 b1[1] = -1393;
17658 b1[0] = -1393;
17659 break;
17660 }
17661 }
17662
17663
17664 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17665 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17666
17667 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17668 if (pi->srom_fem2g.tssipos)
17669 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17670
17671 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17672 for (core = 0; core <= 1; core++) {
17673 if (PHY_IPA(pi)) {
17674 if (CHSPEC_IS2G(pi->radio_chanspec))
17675 WRITE_RADIO_REG3(pi, RADIO_2057,
17676 TX, core,
17677 TX_SSI_MUX,
17678 0xe);
17679 else
17680 WRITE_RADIO_REG3(pi, RADIO_2057,
17681 TX, core,
17682 TX_SSI_MUX,
17683 0xc);
17684 }
17685 }
17686 } else {
17687 if (PHY_IPA(pi)) {
17688
17689 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17690 RADIO_2056_TX0,
17691 (CHSPEC_IS5G
17692 (pi->radio_chanspec)) ?
17693 0xc : 0xe);
17694 write_radio_reg(pi,
17695 RADIO_2056_TX_TX_SSI_MUX |
17696 RADIO_2056_TX1,
17697 (CHSPEC_IS5G
17698 (pi->radio_chanspec)) ?
17699 0xc : 0xe);
17700 } else {
17701
17702 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17703 RADIO_2056_TX0, 0x11);
17704 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17705 RADIO_2056_TX1, 0x11);
17706 }
17707 }
17708 }
17709
17710 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17711 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17712 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17713 udelay(1);
17714 }
17715
17716 if (NREV_GE(pi->pubpi.phy_rev, 7))
17717 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17718 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17719 else
17720 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17721 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17722
17723 if (NREV_GE(pi->pubpi.phy_rev, 7))
17724 mod_phy_reg(pi, 0x222, (0xff << 0),
17725 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17726 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17727 mod_phy_reg(pi, 0x222, (0xff << 0),
17728 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17729
17730 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17731 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17732
17733 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17734
17735 write_phy_reg(pi, 0x1e9,
17736 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17737
17738 write_phy_reg(pi, 0x1ea,
17739 (target_pwr_qtrdbm[0] << 0) |
17740 (target_pwr_qtrdbm[1] << 8));
17741
17742 tbl_len = 64;
17743 tbl_offset = 0;
17744 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17745 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17746
17747 for (idx = 0; idx < tbl_len; idx++) {
17748 num = 8 *
17749 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17750 den = 32768 + a1[tbl_id - 26] * idx;
17751 pwr_est = max(DIV_ROUND_CLOSEST(4 * num, den), -8);
17752 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17753 if (idx <=
17754 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17755 pwr_est =
17756 max(pwr_est,
17757 target_pwr_qtrdbm
17758 [tbl_id - 26] + 1);
17759 }
17760 regval[idx] = (u32) pwr_est;
17761 }
17762 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17763 regval);
17764 }
17765
17766 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17767 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17768 pi->adj_pwr_tbl_nphy);
17769 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17770 pi->adj_pwr_tbl_nphy);
17771
17772 if (pi->phyhang_avoid)
17773 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17774 }
17775
17776 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17777 {
17778 u32 *tx_pwrctrl_tbl = NULL;
17779
17780 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17781 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17782 if ((pi->pubpi.radiorev == 4)
17783 || (pi->pubpi.radiorev == 6))
17784 tx_pwrctrl_tbl =
17785 nphy_tpc_txgain_ipa_2g_2057rev4n6;
17786 else if (pi->pubpi.radiorev == 3)
17787 tx_pwrctrl_tbl =
17788 nphy_tpc_txgain_ipa_2g_2057rev3;
17789 else if (pi->pubpi.radiorev == 5)
17790 tx_pwrctrl_tbl =
17791 nphy_tpc_txgain_ipa_2g_2057rev5;
17792 else if ((pi->pubpi.radiorev == 7)
17793 || (pi->pubpi.radiorev == 8))
17794 tx_pwrctrl_tbl =
17795 nphy_tpc_txgain_ipa_2g_2057rev7;
17796 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17797 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17798 if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17799 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17800 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17801 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17802 } else {
17803 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17804 }
17805 } else {
17806
17807 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17808 if ((pi->pubpi.radiorev == 3) ||
17809 (pi->pubpi.radiorev == 4) ||
17810 (pi->pubpi.radiorev == 6))
17811 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17812 else if ((pi->pubpi.radiorev == 7)
17813 || (pi->pubpi.radiorev == 8))
17814 tx_pwrctrl_tbl =
17815 nphy_tpc_txgain_ipa_5g_2057rev7;
17816 } else {
17817 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17818 }
17819 }
17820
17821 return tx_pwrctrl_tbl;
17822 }
17823
17824 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17825 {
17826 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17827 if (pi->nphy_rssical_chanspec_2G == 0)
17828 return;
17829
17830 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17831 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17832 RADIO_2057_VCM_MASK,
17833 pi->rssical_cache.
17834 rssical_radio_regs_2G[0]);
17835 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17836 RADIO_2057_VCM_MASK,
17837 pi->rssical_cache.
17838 rssical_radio_regs_2G[1]);
17839 } else {
17840 mod_radio_reg(pi,
17841 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17842 RADIO_2056_VCM_MASK,
17843 pi->rssical_cache.
17844 rssical_radio_regs_2G[0]);
17845 mod_radio_reg(pi,
17846 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17847 RADIO_2056_VCM_MASK,
17848 pi->rssical_cache.
17849 rssical_radio_regs_2G[1]);
17850 }
17851
17852 write_phy_reg(pi, 0x1a6,
17853 pi->rssical_cache.rssical_phyregs_2G[0]);
17854 write_phy_reg(pi, 0x1ac,
17855 pi->rssical_cache.rssical_phyregs_2G[1]);
17856 write_phy_reg(pi, 0x1b2,
17857 pi->rssical_cache.rssical_phyregs_2G[2]);
17858 write_phy_reg(pi, 0x1b8,
17859 pi->rssical_cache.rssical_phyregs_2G[3]);
17860 write_phy_reg(pi, 0x1a4,
17861 pi->rssical_cache.rssical_phyregs_2G[4]);
17862 write_phy_reg(pi, 0x1aa,
17863 pi->rssical_cache.rssical_phyregs_2G[5]);
17864 write_phy_reg(pi, 0x1b0,
17865 pi->rssical_cache.rssical_phyregs_2G[6]);
17866 write_phy_reg(pi, 0x1b6,
17867 pi->rssical_cache.rssical_phyregs_2G[7]);
17868 write_phy_reg(pi, 0x1a5,
17869 pi->rssical_cache.rssical_phyregs_2G[8]);
17870 write_phy_reg(pi, 0x1ab,
17871 pi->rssical_cache.rssical_phyregs_2G[9]);
17872 write_phy_reg(pi, 0x1b1,
17873 pi->rssical_cache.rssical_phyregs_2G[10]);
17874 write_phy_reg(pi, 0x1b7,
17875 pi->rssical_cache.rssical_phyregs_2G[11]);
17876
17877 } else {
17878 if (pi->nphy_rssical_chanspec_5G == 0)
17879 return;
17880
17881 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17882 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17883 RADIO_2057_VCM_MASK,
17884 pi->rssical_cache.
17885 rssical_radio_regs_5G[0]);
17886 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17887 RADIO_2057_VCM_MASK,
17888 pi->rssical_cache.
17889 rssical_radio_regs_5G[1]);
17890 } else {
17891 mod_radio_reg(pi,
17892 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17893 RADIO_2056_VCM_MASK,
17894 pi->rssical_cache.
17895 rssical_radio_regs_5G[0]);
17896 mod_radio_reg(pi,
17897 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17898 RADIO_2056_VCM_MASK,
17899 pi->rssical_cache.
17900 rssical_radio_regs_5G[1]);
17901 }
17902
17903 write_phy_reg(pi, 0x1a6,
17904 pi->rssical_cache.rssical_phyregs_5G[0]);
17905 write_phy_reg(pi, 0x1ac,
17906 pi->rssical_cache.rssical_phyregs_5G[1]);
17907 write_phy_reg(pi, 0x1b2,
17908 pi->rssical_cache.rssical_phyregs_5G[2]);
17909 write_phy_reg(pi, 0x1b8,
17910 pi->rssical_cache.rssical_phyregs_5G[3]);
17911 write_phy_reg(pi, 0x1a4,
17912 pi->rssical_cache.rssical_phyregs_5G[4]);
17913 write_phy_reg(pi, 0x1aa,
17914 pi->rssical_cache.rssical_phyregs_5G[5]);
17915 write_phy_reg(pi, 0x1b0,
17916 pi->rssical_cache.rssical_phyregs_5G[6]);
17917 write_phy_reg(pi, 0x1b6,
17918 pi->rssical_cache.rssical_phyregs_5G[7]);
17919 write_phy_reg(pi, 0x1a5,
17920 pi->rssical_cache.rssical_phyregs_5G[8]);
17921 write_phy_reg(pi, 0x1ab,
17922 pi->rssical_cache.rssical_phyregs_5G[9]);
17923 write_phy_reg(pi, 0x1b1,
17924 pi->rssical_cache.rssical_phyregs_5G[10]);
17925 write_phy_reg(pi, 0x1b7,
17926 pi->rssical_cache.rssical_phyregs_5G[11]);
17927 }
17928 }
17929
17930 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17931 {
17932 u16 txcal_gain[2];
17933
17934 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17935 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17936 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17937 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17938
17939 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17940 txcal_gain);
17941
17942 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17943 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17944 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17945 } else {
17946 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17947 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17948 }
17949
17950 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17951 txcal_gain);
17952 }
17953
17954 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17955 {
17956 bool save_bbmult = false;
17957 u8 txcal_index_2057_rev5n7 = 0;
17958 u8 txcal_index_2057_rev3n4n6 = 10;
17959
17960 if (pi->use_int_tx_iqlo_cal_nphy) {
17961 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17962 if ((pi->pubpi.radiorev == 3) ||
17963 (pi->pubpi.radiorev == 4) ||
17964 (pi->pubpi.radiorev == 6)) {
17965
17966 pi->nphy_txcal_pwr_idx[0] =
17967 txcal_index_2057_rev3n4n6;
17968 pi->nphy_txcal_pwr_idx[1] =
17969 txcal_index_2057_rev3n4n6;
17970 wlc_phy_txpwr_index_nphy(
17971 pi, 3,
17972 txcal_index_2057_rev3n4n6,
17973 false);
17974 } else {
17975
17976 pi->nphy_txcal_pwr_idx[0] =
17977 txcal_index_2057_rev5n7;
17978 pi->nphy_txcal_pwr_idx[1] =
17979 txcal_index_2057_rev5n7;
17980 wlc_phy_txpwr_index_nphy(
17981 pi, 3,
17982 txcal_index_2057_rev5n7,
17983 false);
17984 }
17985 save_bbmult = true;
17986
17987 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17988 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
17989 if (pi->sh->hw_phytxchain != 3) {
17990 pi->nphy_txcal_pwr_idx[1] =
17991 pi->nphy_txcal_pwr_idx[0];
17992 wlc_phy_txpwr_index_nphy(pi, 3,
17993 pi->
17994 nphy_txcal_pwr_idx[0],
17995 true);
17996 save_bbmult = true;
17997 }
17998
17999 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18000 if (PHY_IPA(pi)) {
18001 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18002 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18003 false);
18004 } else {
18005 pi->nphy_txcal_pwr_idx[0] = 80;
18006 pi->nphy_txcal_pwr_idx[1] = 80;
18007 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18008 false);
18009 save_bbmult = true;
18010 }
18011 } else {
18012 wlc_phy_internal_cal_txgain_nphy(pi);
18013 save_bbmult = true;
18014 }
18015
18016 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18017 if (PHY_IPA(pi)) {
18018 if (CHSPEC_IS2G(pi->radio_chanspec))
18019 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18020 false);
18021 else
18022 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18023 false);
18024 } else {
18025 wlc_phy_internal_cal_txgain_nphy(pi);
18026 save_bbmult = true;
18027 }
18028 }
18029
18030 } else {
18031 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18032 }
18033
18034 if (save_bbmult)
18035 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18036 &pi->nphy_txcal_bbmult);
18037 }
18038
18039 static void
18040 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18041 u8 core_code)
18042 {
18043 u16 mask;
18044 u16 val;
18045 u8 core;
18046
18047 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18048 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18049 if (core_code == RADIO_MIMO_CORESEL_CORE1
18050 && core == PHY_CORE_1)
18051 continue;
18052 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18053 && core == PHY_CORE_0)
18054 continue;
18055
18056 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18057
18058 mask = (0x1 << 10);
18059 val = 1 << 10;
18060 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18061 0x92, mask, val);
18062 }
18063
18064 if (field == NPHY_RfctrlIntc_override_OFF) {
18065
18066 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18067 0x92, 0);
18068
18069 wlc_phy_force_rfseq_nphy(pi,
18070 NPHY_RFSEQ_RESET2RX);
18071 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18072
18073 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18074
18075 mask = (0x1 << 6) | (0x1 << 7);
18076
18077 val = value << 6;
18078 mod_phy_reg(pi,
18079 (core ==
18080 PHY_CORE_0) ? 0x91 : 0x92,
18081 mask, val);
18082
18083 or_phy_reg(pi,
18084 (core ==
18085 PHY_CORE_0) ? 0x91 : 0x92,
18086 (0x1 << 10));
18087
18088 and_phy_reg(pi, 0x2ff, (u16)
18089 ~(0x3 << 14));
18090 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18091 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18092 } else {
18093
18094 mask = (0x1 << 6) |
18095 (0x1 << 7) |
18096 (0x1 << 8) | (0x1 << 9);
18097 val = value << 6;
18098 mod_phy_reg(pi,
18099 (core ==
18100 PHY_CORE_0) ? 0x91 : 0x92,
18101 mask, val);
18102
18103 mask = (0x1 << 0);
18104 val = 1 << 0;
18105 mod_phy_reg(pi,
18106 (core ==
18107 PHY_CORE_0) ? 0xe7 : 0xec,
18108 mask, val);
18109
18110 mask = (core == PHY_CORE_0) ?
18111 (0x1 << 0) : (0x1 << 1);
18112 val = 1 << ((core == PHY_CORE_0) ?
18113 0 : 1);
18114 mod_phy_reg(pi, 0x78, mask, val);
18115
18116 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18117 != 0), 10000);
18118 if (WARN(read_phy_reg(pi, 0x78) & val,
18119 "HW error: override failed"))
18120 return;
18121
18122 mask = (0x1 << 0);
18123 val = 0 << 0;
18124 mod_phy_reg(pi,
18125 (core ==
18126 PHY_CORE_0) ? 0xe7 : 0xec,
18127 mask, val);
18128 }
18129 } else if (field == NPHY_RfctrlIntc_override_PA) {
18130 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18131
18132 mask = (0x1 << 4) | (0x1 << 5);
18133
18134 if (CHSPEC_IS5G(pi->radio_chanspec))
18135 val = value << 5;
18136 else
18137 val = value << 4;
18138
18139 mod_phy_reg(pi,
18140 (core ==
18141 PHY_CORE_0) ? 0x91 : 0x92,
18142 mask, val);
18143
18144 or_phy_reg(pi,
18145 (core ==
18146 PHY_CORE_0) ? 0x91 : 0x92,
18147 (0x1 << 12));
18148 } else {
18149
18150 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18151 mask = (0x1 << 5);
18152 val = value << 5;
18153 } else {
18154 mask = (0x1 << 4);
18155 val = value << 4;
18156 }
18157 mod_phy_reg(pi,
18158 (core ==
18159 PHY_CORE_0) ? 0x91 : 0x92,
18160 mask, val);
18161 }
18162 } else if (field ==
18163 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18164 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18165 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18166
18167 mask = (0x1 << 0);
18168 val = value << 0;
18169 mod_phy_reg(pi,
18170 (core ==
18171 PHY_CORE_0) ? 0x91
18172 : 0x92, mask, val);
18173
18174 mask = (0x1 << 2);
18175 mod_phy_reg(pi,
18176 (core ==
18177 PHY_CORE_0) ? 0x91
18178 : 0x92, mask, 0);
18179 } else {
18180
18181 mask = (0x1 << 2);
18182 val = value << 2;
18183 mod_phy_reg(pi,
18184 (core ==
18185 PHY_CORE_0) ? 0x91
18186 : 0x92, mask, val);
18187
18188 mask = (0x1 << 0);
18189 mod_phy_reg(pi,
18190 (core ==
18191 PHY_CORE_0) ? 0x91
18192 : 0x92, mask, 0);
18193 }
18194
18195 mask = (0x1 << 11);
18196 val = 1 << 11;
18197 mod_phy_reg(pi,
18198 (core ==
18199 PHY_CORE_0) ? 0x91 : 0x92,
18200 mask, val);
18201 } else {
18202
18203 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18204 mask = (0x1 << 0);
18205 val = value << 0;
18206 } else {
18207 mask = (0x1 << 2);
18208 val = value << 2;
18209 }
18210 mod_phy_reg(pi,
18211 (core ==
18212 PHY_CORE_0) ? 0x91 : 0x92,
18213 mask, val);
18214 }
18215 } else if (field ==
18216 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18217 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18218 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18219
18220 mask = (0x1 << 1);
18221 val = value << 1;
18222 mod_phy_reg(pi,
18223 (core ==
18224 PHY_CORE_0) ? 0x91
18225 : 0x92, mask, val);
18226
18227 mask = (0x1 << 3);
18228 mod_phy_reg(pi,
18229 (core ==
18230 PHY_CORE_0) ? 0x91
18231 : 0x92, mask, 0);
18232 } else {
18233
18234 mask = (0x1 << 3);
18235 val = value << 3;
18236 mod_phy_reg(pi,
18237 (core ==
18238 PHY_CORE_0) ? 0x91
18239 : 0x92, mask, val);
18240
18241 mask = (0x1 << 1);
18242 mod_phy_reg(pi,
18243 (core ==
18244 PHY_CORE_0) ? 0x91
18245 : 0x92, mask, 0);
18246 }
18247
18248 mask = (0x1 << 11);
18249 val = 1 << 11;
18250 mod_phy_reg(pi,
18251 (core ==
18252 PHY_CORE_0) ? 0x91 : 0x92,
18253 mask, val);
18254 } else {
18255
18256 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18257 mask = (0x1 << 1);
18258 val = value << 1;
18259 } else {
18260 mask = (0x1 << 3);
18261 val = value << 3;
18262 }
18263 mod_phy_reg(pi,
18264 (core ==
18265 PHY_CORE_0) ? 0x91 : 0x92,
18266 mask, val);
18267 }
18268 }
18269 }
18270 }
18271 }
18272
18273 void
18274 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18275 bool debug)
18276 {
18277 int gainctrl_loopidx;
18278 uint core;
18279 u16 m0m1, curr_m0m1;
18280 s32 delta_power;
18281 s32 txpwrindex;
18282 s32 qdBm_power[2];
18283 u16 orig_BBConfig;
18284 u16 phy_saveregs[4];
18285 u32 freq_test;
18286 u16 ampl_test = 250;
18287 uint stepsize;
18288 bool phyhang_avoid_state = false;
18289
18290 if (NREV_GE(pi->pubpi.phy_rev, 7))
18291 stepsize = 2;
18292 else
18293 stepsize = 1;
18294
18295 if (CHSPEC_IS40(pi->radio_chanspec))
18296 freq_test = 5000;
18297 else
18298 freq_test = 2500;
18299
18300 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18301 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18302
18303 if (pi->phyhang_avoid)
18304 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18305
18306 phyhang_avoid_state = pi->phyhang_avoid;
18307 pi->phyhang_avoid = false;
18308
18309 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18310 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18311 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18312 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18313 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18314 RADIO_MIMO_CORESEL_CORE1 |
18315 RADIO_MIMO_CORESEL_CORE2);
18316
18317 if (!debug) {
18318 wlc_phy_rfctrlintc_override_nphy(pi,
18319 NPHY_RfctrlIntc_override_TRSW,
18320 0x2, RADIO_MIMO_CORESEL_CORE1);
18321 wlc_phy_rfctrlintc_override_nphy(pi,
18322 NPHY_RfctrlIntc_override_TRSW,
18323 0x8, RADIO_MIMO_CORESEL_CORE2);
18324 } else {
18325 wlc_phy_rfctrlintc_override_nphy(pi,
18326 NPHY_RfctrlIntc_override_TRSW,
18327 0x1, RADIO_MIMO_CORESEL_CORE1);
18328 wlc_phy_rfctrlintc_override_nphy(pi,
18329 NPHY_RfctrlIntc_override_TRSW,
18330 0x7, RADIO_MIMO_CORESEL_CORE2);
18331 }
18332
18333 orig_BBConfig = read_phy_reg(pi, 0x01);
18334 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18335
18336 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18337
18338 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18339 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18340
18341 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18342 gainctrl_loopidx++) {
18343 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18344 false);
18345
18346 if (core == PHY_CORE_0)
18347 curr_m0m1 = m0m1 & 0xff00;
18348 else
18349 curr_m0m1 = m0m1 & 0x00ff;
18350
18351 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18352 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18353
18354 udelay(50);
18355
18356 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18357 NPHY_CAL_TSSISAMPS);
18358
18359 pi->nphy_bb_mult_save = 0;
18360 wlc_phy_stopplayback_nphy(pi);
18361
18362 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18363
18364 txpwrindex -= stepsize * delta_power;
18365 if (txpwrindex < 0)
18366 txpwrindex = 0;
18367 else if (txpwrindex > 127)
18368 txpwrindex = 127;
18369
18370 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18371 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18372 (pi->srom_fem5g.extpagain == 3)) {
18373 if (txpwrindex < 30)
18374 txpwrindex = 30;
18375 }
18376 } else {
18377 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18378 (pi->srom_fem2g.extpagain == 3)) {
18379 if (txpwrindex < 50)
18380 txpwrindex = 50;
18381 }
18382 }
18383
18384 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18385 (u8) txpwrindex, true);
18386 }
18387
18388 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18389
18390 if (debug) {
18391 u16 radio_gain;
18392 u16 dbg_m0m1;
18393
18394 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18395
18396 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18397 false);
18398
18399 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18400 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18401
18402 udelay(100);
18403
18404 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18405 NPHY_CAL_TSSISAMPS);
18406
18407 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18408 &radio_gain);
18409
18410 mdelay(4000);
18411 pi->nphy_bb_mult_save = 0;
18412 wlc_phy_stopplayback_nphy(pi);
18413 }
18414 }
18415
18416 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18417 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18418
18419 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18420
18421 write_phy_reg(pi, 0x01, orig_BBConfig);
18422
18423 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18424 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18425 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18426 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18427
18428 pi->phyhang_avoid = phyhang_avoid_state;
18429
18430 if (pi->phyhang_avoid)
18431 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18432 }
18433
18434 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18435 {
18436 void *tbl_ptr;
18437 int coreNum;
18438 u16 *txcal_radio_regs = NULL;
18439
18440 if (pi->phyhang_avoid)
18441 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18442
18443 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18444
18445 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18446 &pi->calibration_cache.
18447 rxcal_coeffs_2G);
18448
18449 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18450 txcal_radio_regs =
18451 pi->calibration_cache.txcal_radio_regs_2G;
18452 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18453
18454 pi->calibration_cache.txcal_radio_regs_2G[0] =
18455 read_radio_reg(pi,
18456 RADIO_2056_TX_LOFT_FINE_I |
18457 RADIO_2056_TX0);
18458 pi->calibration_cache.txcal_radio_regs_2G[1] =
18459 read_radio_reg(pi,
18460 RADIO_2056_TX_LOFT_FINE_Q |
18461 RADIO_2056_TX0);
18462 pi->calibration_cache.txcal_radio_regs_2G[2] =
18463 read_radio_reg(pi,
18464 RADIO_2056_TX_LOFT_FINE_I |
18465 RADIO_2056_TX1);
18466 pi->calibration_cache.txcal_radio_regs_2G[3] =
18467 read_radio_reg(pi,
18468 RADIO_2056_TX_LOFT_FINE_Q |
18469 RADIO_2056_TX1);
18470
18471 pi->calibration_cache.txcal_radio_regs_2G[4] =
18472 read_radio_reg(pi,
18473 RADIO_2056_TX_LOFT_COARSE_I |
18474 RADIO_2056_TX0);
18475 pi->calibration_cache.txcal_radio_regs_2G[5] =
18476 read_radio_reg(pi,
18477 RADIO_2056_TX_LOFT_COARSE_Q |
18478 RADIO_2056_TX0);
18479 pi->calibration_cache.txcal_radio_regs_2G[6] =
18480 read_radio_reg(pi,
18481 RADIO_2056_TX_LOFT_COARSE_I |
18482 RADIO_2056_TX1);
18483 pi->calibration_cache.txcal_radio_regs_2G[7] =
18484 read_radio_reg(pi,
18485 RADIO_2056_TX_LOFT_COARSE_Q |
18486 RADIO_2056_TX1);
18487 } else {
18488 pi->calibration_cache.txcal_radio_regs_2G[0] =
18489 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18490 pi->calibration_cache.txcal_radio_regs_2G[1] =
18491 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18492 pi->calibration_cache.txcal_radio_regs_2G[2] =
18493 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18494 pi->calibration_cache.txcal_radio_regs_2G[3] =
18495 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18496 }
18497
18498 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18499 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18500 } else {
18501
18502 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18503 &pi->calibration_cache.
18504 rxcal_coeffs_5G);
18505
18506 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18507 txcal_radio_regs =
18508 pi->calibration_cache.txcal_radio_regs_5G;
18509 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18510
18511 pi->calibration_cache.txcal_radio_regs_5G[0] =
18512 read_radio_reg(pi,
18513 RADIO_2056_TX_LOFT_FINE_I |
18514 RADIO_2056_TX0);
18515 pi->calibration_cache.txcal_radio_regs_5G[1] =
18516 read_radio_reg(pi,
18517 RADIO_2056_TX_LOFT_FINE_Q |
18518 RADIO_2056_TX0);
18519 pi->calibration_cache.txcal_radio_regs_5G[2] =
18520 read_radio_reg(pi,
18521 RADIO_2056_TX_LOFT_FINE_I |
18522 RADIO_2056_TX1);
18523 pi->calibration_cache.txcal_radio_regs_5G[3] =
18524 read_radio_reg(pi,
18525 RADIO_2056_TX_LOFT_FINE_Q |
18526 RADIO_2056_TX1);
18527
18528 pi->calibration_cache.txcal_radio_regs_5G[4] =
18529 read_radio_reg(pi,
18530 RADIO_2056_TX_LOFT_COARSE_I |
18531 RADIO_2056_TX0);
18532 pi->calibration_cache.txcal_radio_regs_5G[5] =
18533 read_radio_reg(pi,
18534 RADIO_2056_TX_LOFT_COARSE_Q |
18535 RADIO_2056_TX0);
18536 pi->calibration_cache.txcal_radio_regs_5G[6] =
18537 read_radio_reg(pi,
18538 RADIO_2056_TX_LOFT_COARSE_I |
18539 RADIO_2056_TX1);
18540 pi->calibration_cache.txcal_radio_regs_5G[7] =
18541 read_radio_reg(pi,
18542 RADIO_2056_TX_LOFT_COARSE_Q |
18543 RADIO_2056_TX1);
18544 } else {
18545 pi->calibration_cache.txcal_radio_regs_5G[0] =
18546 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18547 pi->calibration_cache.txcal_radio_regs_5G[1] =
18548 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18549 pi->calibration_cache.txcal_radio_regs_5G[2] =
18550 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18551 pi->calibration_cache.txcal_radio_regs_5G[3] =
18552 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18553 }
18554
18555 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18556 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18557 }
18558 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18559 for (coreNum = 0; coreNum <= 1; coreNum++) {
18560
18561 txcal_radio_regs[2 * coreNum] =
18562 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18563 LOFT_FINE_I);
18564 txcal_radio_regs[2 * coreNum + 1] =
18565 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18566 LOFT_FINE_Q);
18567
18568 txcal_radio_regs[2 * coreNum + 4] =
18569 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18570 LOFT_COARSE_I);
18571 txcal_radio_regs[2 * coreNum + 5] =
18572 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18573 LOFT_COARSE_Q);
18574 }
18575 }
18576
18577 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18578
18579 if (pi->phyhang_avoid)
18580 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18581 }
18582
18583 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18584 {
18585 struct nphy_iq_comp tx_comp;
18586
18587 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18588
18589 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18590 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18591 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18592 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18593 }
18594
18595 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18596 {
18597 u16 *loft_comp;
18598 u16 txcal_coeffs_bphy[4];
18599 u16 *tbl_ptr;
18600 int coreNum;
18601 u16 *txcal_radio_regs = NULL;
18602
18603 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18604 if (pi->nphy_iqcal_chanspec_2G == 0)
18605 return;
18606
18607 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18608 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18609 } else {
18610 if (pi->nphy_iqcal_chanspec_5G == 0)
18611 return;
18612
18613 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18614 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18615 }
18616
18617 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18618
18619 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18620 txcal_coeffs_bphy[0] = tbl_ptr[0];
18621 txcal_coeffs_bphy[1] = tbl_ptr[1];
18622 txcal_coeffs_bphy[2] = tbl_ptr[2];
18623 txcal_coeffs_bphy[3] = tbl_ptr[3];
18624 } else {
18625 txcal_coeffs_bphy[0] = 0;
18626 txcal_coeffs_bphy[1] = 0;
18627 txcal_coeffs_bphy[2] = 0;
18628 txcal_coeffs_bphy[3] = 0;
18629 }
18630
18631 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18632 txcal_coeffs_bphy);
18633
18634 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18635
18636 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18637
18638 if (NREV_LT(pi->pubpi.phy_rev, 2))
18639 wlc_phy_tx_iq_war_nphy(pi);
18640
18641 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18642 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18643 txcal_radio_regs =
18644 pi->calibration_cache.txcal_radio_regs_2G;
18645 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18646
18647 write_radio_reg(pi,
18648 RADIO_2056_TX_LOFT_FINE_I |
18649 RADIO_2056_TX0,
18650 pi->calibration_cache.
18651 txcal_radio_regs_2G[0]);
18652 write_radio_reg(pi,
18653 RADIO_2056_TX_LOFT_FINE_Q |
18654 RADIO_2056_TX0,
18655 pi->calibration_cache.
18656 txcal_radio_regs_2G[1]);
18657 write_radio_reg(pi,
18658 RADIO_2056_TX_LOFT_FINE_I |
18659 RADIO_2056_TX1,
18660 pi->calibration_cache.
18661 txcal_radio_regs_2G[2]);
18662 write_radio_reg(pi,
18663 RADIO_2056_TX_LOFT_FINE_Q |
18664 RADIO_2056_TX1,
18665 pi->calibration_cache.
18666 txcal_radio_regs_2G[3]);
18667
18668 write_radio_reg(pi,
18669 RADIO_2056_TX_LOFT_COARSE_I |
18670 RADIO_2056_TX0,
18671 pi->calibration_cache.
18672 txcal_radio_regs_2G[4]);
18673 write_radio_reg(pi,
18674 RADIO_2056_TX_LOFT_COARSE_Q |
18675 RADIO_2056_TX0,
18676 pi->calibration_cache.
18677 txcal_radio_regs_2G[5]);
18678 write_radio_reg(pi,
18679 RADIO_2056_TX_LOFT_COARSE_I |
18680 RADIO_2056_TX1,
18681 pi->calibration_cache.
18682 txcal_radio_regs_2G[6]);
18683 write_radio_reg(pi,
18684 RADIO_2056_TX_LOFT_COARSE_Q |
18685 RADIO_2056_TX1,
18686 pi->calibration_cache.
18687 txcal_radio_regs_2G[7]);
18688 } else {
18689 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18690 pi->calibration_cache.
18691 txcal_radio_regs_2G[0]);
18692 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18693 pi->calibration_cache.
18694 txcal_radio_regs_2G[1]);
18695 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18696 pi->calibration_cache.
18697 txcal_radio_regs_2G[2]);
18698 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18699 pi->calibration_cache.
18700 txcal_radio_regs_2G[3]);
18701 }
18702
18703 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18704 &pi->calibration_cache.
18705 rxcal_coeffs_2G);
18706 } else {
18707 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18708 txcal_radio_regs =
18709 pi->calibration_cache.txcal_radio_regs_5G;
18710 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18711
18712 write_radio_reg(pi,
18713 RADIO_2056_TX_LOFT_FINE_I |
18714 RADIO_2056_TX0,
18715 pi->calibration_cache.
18716 txcal_radio_regs_5G[0]);
18717 write_radio_reg(pi,
18718 RADIO_2056_TX_LOFT_FINE_Q |
18719 RADIO_2056_TX0,
18720 pi->calibration_cache.
18721 txcal_radio_regs_5G[1]);
18722 write_radio_reg(pi,
18723 RADIO_2056_TX_LOFT_FINE_I |
18724 RADIO_2056_TX1,
18725 pi->calibration_cache.
18726 txcal_radio_regs_5G[2]);
18727 write_radio_reg(pi,
18728 RADIO_2056_TX_LOFT_FINE_Q |
18729 RADIO_2056_TX1,
18730 pi->calibration_cache.
18731 txcal_radio_regs_5G[3]);
18732
18733 write_radio_reg(pi,
18734 RADIO_2056_TX_LOFT_COARSE_I |
18735 RADIO_2056_TX0,
18736 pi->calibration_cache.
18737 txcal_radio_regs_5G[4]);
18738 write_radio_reg(pi,
18739 RADIO_2056_TX_LOFT_COARSE_Q |
18740 RADIO_2056_TX0,
18741 pi->calibration_cache.
18742 txcal_radio_regs_5G[5]);
18743 write_radio_reg(pi,
18744 RADIO_2056_TX_LOFT_COARSE_I |
18745 RADIO_2056_TX1,
18746 pi->calibration_cache.
18747 txcal_radio_regs_5G[6]);
18748 write_radio_reg(pi,
18749 RADIO_2056_TX_LOFT_COARSE_Q |
18750 RADIO_2056_TX1,
18751 pi->calibration_cache.
18752 txcal_radio_regs_5G[7]);
18753 } else {
18754 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18755 pi->calibration_cache.
18756 txcal_radio_regs_5G[0]);
18757 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18758 pi->calibration_cache.
18759 txcal_radio_regs_5G[1]);
18760 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18761 pi->calibration_cache.
18762 txcal_radio_regs_5G[2]);
18763 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18764 pi->calibration_cache.
18765 txcal_radio_regs_5G[3]);
18766 }
18767
18768 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18769 &pi->calibration_cache.
18770 rxcal_coeffs_5G);
18771 }
18772
18773 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18774 for (coreNum = 0; coreNum <= 1; coreNum++) {
18775
18776 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18777 LOFT_FINE_I,
18778 txcal_radio_regs[2 * coreNum]);
18779 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18780 LOFT_FINE_Q,
18781 txcal_radio_regs[2 * coreNum + 1]);
18782
18783 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18784 LOFT_COARSE_I,
18785 txcal_radio_regs[2 * coreNum + 4]);
18786 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18787 LOFT_COARSE_Q,
18788 txcal_radio_regs[2 * coreNum + 5]);
18789 }
18790 }
18791 }
18792
18793 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18794 {
18795 u32 idx;
18796 u16 iqloCalbuf[7];
18797 u32 iqcomp, locomp, curr_locomp;
18798 s8 locomp_i, locomp_q;
18799 s8 curr_locomp_i, curr_locomp_q;
18800 u32 tbl_id, tbl_len, tbl_offset;
18801 u32 regval[128];
18802
18803 if (pi->phyhang_avoid)
18804 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18805
18806 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18807
18808 tbl_len = 128;
18809 tbl_offset = 320;
18810 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18811 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18812 iqcomp =
18813 (tbl_id ==
18814 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18815 (iqloCalbuf[1] & 0x3ff)
18816 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18817 (iqloCalbuf[3] & 0x3ff);
18818
18819 for (idx = 0; idx < tbl_len; idx++)
18820 regval[idx] = iqcomp;
18821 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18822 regval);
18823 }
18824
18825 tbl_offset = 448;
18826 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18827 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18828
18829 locomp =
18830 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18831 locomp_i = (s8) ((locomp >> 8) & 0xff);
18832 locomp_q = (s8) ((locomp) & 0xff);
18833 for (idx = 0; idx < tbl_len; idx++) {
18834 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18835 curr_locomp_i = locomp_i;
18836 curr_locomp_q = locomp_q;
18837 } else {
18838 curr_locomp_i = (s8) ((locomp_i *
18839 nphy_tpc_loscale[idx] +
18840 128) >> 8);
18841 curr_locomp_q =
18842 (s8) ((locomp_q *
18843 nphy_tpc_loscale[idx] +
18844 128) >> 8);
18845 }
18846 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18847 curr_locomp |= (u32) (curr_locomp_q & 0xff);
18848 regval[idx] = curr_locomp;
18849 }
18850 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18851 regval);
18852 }
18853
18854 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18855
18856 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18857 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18858 }
18859
18860 if (pi->phyhang_avoid)
18861 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18862 }
18863
18864 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18865 {
18866 u8 tx_lpf_bw = 0;
18867
18868 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18869 if (CHSPEC_IS40(pi->radio_chanspec))
18870 tx_lpf_bw = 3;
18871 else
18872 tx_lpf_bw = 1;
18873
18874 if (PHY_IPA(pi)) {
18875 if (CHSPEC_IS40(pi->radio_chanspec))
18876 tx_lpf_bw = 5;
18877 else
18878 tx_lpf_bw = 4;
18879 }
18880
18881 write_phy_reg(pi, 0xe8,
18882 (tx_lpf_bw << 0) |
18883 (tx_lpf_bw << 3) |
18884 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18885
18886 if (PHY_IPA(pi)) {
18887
18888 if (CHSPEC_IS40(pi->radio_chanspec))
18889 tx_lpf_bw = 4;
18890 else
18891 tx_lpf_bw = 1;
18892
18893 write_phy_reg(pi, 0xe9,
18894 (tx_lpf_bw << 0) |
18895 (tx_lpf_bw << 3) |
18896 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18897 }
18898 }
18899 }
18900
18901 static void
18902 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18903 {
18904 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18905 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18906 CHSPEC_IS40(pi->radio_chanspec)) {
18907 if (!pi->nphy_anarxlpf_adjusted) {
18908 write_radio_reg(pi,
18909 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18910 RADIO_2056_RX0),
18911 ((pi->nphy_rccal_value +
18912 reduction_factr) | 0x80));
18913
18914 pi->nphy_anarxlpf_adjusted = true;
18915 }
18916 } else {
18917 if (pi->nphy_anarxlpf_adjusted) {
18918 write_radio_reg(pi,
18919 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18920 RADIO_2056_RX0),
18921 (pi->nphy_rccal_value | 0x80));
18922
18923 pi->nphy_anarxlpf_adjusted = false;
18924 }
18925 }
18926 }
18927 }
18928
18929 static void
18930 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18931 int *tone_id_buf, u32 *noise_var_buf)
18932 {
18933 int i;
18934 u32 offset;
18935 int tone_id;
18936 int tbllen =
18937 CHSPEC_IS40(pi->radio_chanspec) ?
18938 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18939
18940 if (pi->nphy_noisevars_adjusted) {
18941 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18942 tone_id = pi->nphy_saved_noisevars.tone_id[i];
18943 offset = (tone_id >= 0) ?
18944 ((tone_id *
18945 2) + 1) : (tbllen + (tone_id * 2) + 1);
18946 wlc_phy_table_write_nphy(
18947 pi, NPHY_TBL_ID_NOISEVAR, 1,
18948 offset, 32,
18949 &pi->nphy_saved_noisevars.min_noise_vars[i]);
18950 }
18951
18952 pi->nphy_saved_noisevars.bufcount = 0;
18953 pi->nphy_noisevars_adjusted = false;
18954 }
18955
18956 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18957 pi->nphy_saved_noisevars.bufcount = 0;
18958
18959 for (i = 0; i < ntones; i++) {
18960 tone_id = tone_id_buf[i];
18961 offset = (tone_id >= 0) ?
18962 ((tone_id * 2) + 1) :
18963 (tbllen + (tone_id * 2) + 1);
18964 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18965 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18966 offset, 32,
18967 &pi->nphy_saved_noisevars.
18968 min_noise_vars[i]);
18969 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18970 offset, 32, &noise_var_buf[i]);
18971 pi->nphy_saved_noisevars.bufcount++;
18972 }
18973
18974 pi->nphy_noisevars_adjusted = true;
18975 }
18976 }
18977
18978 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18979 {
18980 u16 regval;
18981
18982 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18983 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18984 CHSPEC_IS40(pi->radio_chanspec)) {
18985 if (!pi->nphy_crsminpwr_adjusted) {
18986 regval = read_phy_reg(pi, 0x27d);
18987 pi->nphy_crsminpwr[0] = regval & 0xff;
18988 regval &= 0xff00;
18989 regval |= (u16) minpwr;
18990 write_phy_reg(pi, 0x27d, regval);
18991
18992 regval = read_phy_reg(pi, 0x280);
18993 pi->nphy_crsminpwr[1] = regval & 0xff;
18994 regval &= 0xff00;
18995 regval |= (u16) minpwr;
18996 write_phy_reg(pi, 0x280, regval);
18997
18998 regval = read_phy_reg(pi, 0x283);
18999 pi->nphy_crsminpwr[2] = regval & 0xff;
19000 regval &= 0xff00;
19001 regval |= (u16) minpwr;
19002 write_phy_reg(pi, 0x283, regval);
19003
19004 pi->nphy_crsminpwr_adjusted = true;
19005 }
19006 } else {
19007 if (pi->nphy_crsminpwr_adjusted) {
19008 regval = read_phy_reg(pi, 0x27d);
19009 regval &= 0xff00;
19010 regval |= pi->nphy_crsminpwr[0];
19011 write_phy_reg(pi, 0x27d, regval);
19012
19013 regval = read_phy_reg(pi, 0x280);
19014 regval &= 0xff00;
19015 regval |= pi->nphy_crsminpwr[1];
19016 write_phy_reg(pi, 0x280, regval);
19017
19018 regval = read_phy_reg(pi, 0x283);
19019 regval &= 0xff00;
19020 regval |= pi->nphy_crsminpwr[2];
19021 write_phy_reg(pi, 0x283, regval);
19022
19023 pi->nphy_crsminpwr_adjusted = false;
19024 }
19025 }
19026 }
19027 }
19028
19029 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19030 {
19031 u16 cur_channel = 0;
19032 int nphy_adj_tone_id_buf[] = { 57, 58 };
19033 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19034 bool isAdjustNoiseVar = false;
19035 uint numTonesAdjust = 0;
19036 u32 tempval = 0;
19037
19038 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19039 if (pi->phyhang_avoid)
19040 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19041
19042 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19043
19044 if (pi->nphy_gband_spurwar_en) {
19045
19046 wlc_phy_adjust_rx_analpfbw_nphy(
19047 pi,
19048 NPHY_ANARXLPFBW_REDUCTIONFACT);
19049
19050 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19051 if ((cur_channel == 11)
19052 && CHSPEC_IS40(pi->radio_chanspec))
19053 wlc_phy_adjust_min_noisevar_nphy(
19054 pi, 2,
19055 nphy_adj_tone_id_buf,
19056 nphy_adj_noise_var_buf);
19057 else
19058 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19059 NULL,
19060 NULL);
19061 }
19062
19063 wlc_phy_adjust_crsminpwr_nphy(pi,
19064 NPHY_ADJUSTED_MINCRSPOWER);
19065 }
19066
19067 if ((pi->nphy_gband_spurwar2_en)
19068 && CHSPEC_IS2G(pi->radio_chanspec)) {
19069
19070 if (CHSPEC_IS40(pi->radio_chanspec)) {
19071 switch (cur_channel) {
19072 case 3:
19073 nphy_adj_tone_id_buf[0] = 57;
19074 nphy_adj_tone_id_buf[1] = 58;
19075 nphy_adj_noise_var_buf[0] = 0x22f;
19076 nphy_adj_noise_var_buf[1] = 0x25f;
19077 isAdjustNoiseVar = true;
19078 break;
19079 case 4:
19080 nphy_adj_tone_id_buf[0] = 41;
19081 nphy_adj_tone_id_buf[1] = 42;
19082 nphy_adj_noise_var_buf[0] = 0x22f;
19083 nphy_adj_noise_var_buf[1] = 0x25f;
19084 isAdjustNoiseVar = true;
19085 break;
19086 case 5:
19087 nphy_adj_tone_id_buf[0] = 25;
19088 nphy_adj_tone_id_buf[1] = 26;
19089 nphy_adj_noise_var_buf[0] = 0x24f;
19090 nphy_adj_noise_var_buf[1] = 0x25f;
19091 isAdjustNoiseVar = true;
19092 break;
19093 case 6:
19094 nphy_adj_tone_id_buf[0] = 9;
19095 nphy_adj_tone_id_buf[1] = 10;
19096 nphy_adj_noise_var_buf[0] = 0x22f;
19097 nphy_adj_noise_var_buf[1] = 0x24f;
19098 isAdjustNoiseVar = true;
19099 break;
19100 case 7:
19101 nphy_adj_tone_id_buf[0] = 121;
19102 nphy_adj_tone_id_buf[1] = 122;
19103 nphy_adj_noise_var_buf[0] = 0x18f;
19104 nphy_adj_noise_var_buf[1] = 0x24f;
19105 isAdjustNoiseVar = true;
19106 break;
19107 case 8:
19108 nphy_adj_tone_id_buf[0] = 105;
19109 nphy_adj_tone_id_buf[1] = 106;
19110 nphy_adj_noise_var_buf[0] = 0x22f;
19111 nphy_adj_noise_var_buf[1] = 0x25f;
19112 isAdjustNoiseVar = true;
19113 break;
19114 case 9:
19115 nphy_adj_tone_id_buf[0] = 89;
19116 nphy_adj_tone_id_buf[1] = 90;
19117 nphy_adj_noise_var_buf[0] = 0x22f;
19118 nphy_adj_noise_var_buf[1] = 0x24f;
19119 isAdjustNoiseVar = true;
19120 break;
19121 case 10:
19122 nphy_adj_tone_id_buf[0] = 73;
19123 nphy_adj_tone_id_buf[1] = 74;
19124 nphy_adj_noise_var_buf[0] = 0x22f;
19125 nphy_adj_noise_var_buf[1] = 0x24f;
19126 isAdjustNoiseVar = true;
19127 break;
19128 default:
19129 isAdjustNoiseVar = false;
19130 break;
19131 }
19132 }
19133
19134 if (isAdjustNoiseVar) {
19135 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19136
19137 wlc_phy_adjust_min_noisevar_nphy(
19138 pi,
19139 numTonesAdjust,
19140 nphy_adj_tone_id_buf,
19141 nphy_adj_noise_var_buf);
19142
19143 tempval = 0;
19144
19145 } else {
19146 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19147 NULL);
19148 }
19149 }
19150
19151 if ((pi->nphy_aband_spurwar_en) &&
19152 (CHSPEC_IS5G(pi->radio_chanspec))) {
19153 switch (cur_channel) {
19154 case 54:
19155 nphy_adj_tone_id_buf[0] = 32;
19156 nphy_adj_noise_var_buf[0] = 0x25f;
19157 break;
19158 case 38:
19159 case 102:
19160 case 118:
19161 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19162 (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19163 nphy_adj_tone_id_buf[0] = 32;
19164 nphy_adj_noise_var_buf[0] = 0x21f;
19165 } else {
19166 nphy_adj_tone_id_buf[0] = 0;
19167 nphy_adj_noise_var_buf[0] = 0x0;
19168 }
19169 break;
19170 case 134:
19171 nphy_adj_tone_id_buf[0] = 32;
19172 nphy_adj_noise_var_buf[0] = 0x21f;
19173 break;
19174 case 151:
19175 nphy_adj_tone_id_buf[0] = 16;
19176 nphy_adj_noise_var_buf[0] = 0x23f;
19177 break;
19178 case 153:
19179 case 161:
19180 nphy_adj_tone_id_buf[0] = 48;
19181 nphy_adj_noise_var_buf[0] = 0x23f;
19182 break;
19183 default:
19184 nphy_adj_tone_id_buf[0] = 0;
19185 nphy_adj_noise_var_buf[0] = 0x0;
19186 break;
19187 }
19188
19189 if (nphy_adj_tone_id_buf[0]
19190 && nphy_adj_noise_var_buf[0])
19191 wlc_phy_adjust_min_noisevar_nphy(
19192 pi, 1,
19193 nphy_adj_tone_id_buf,
19194 nphy_adj_noise_var_buf);
19195 else
19196 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19197 NULL);
19198 }
19199
19200 if (pi->phyhang_avoid)
19201 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19202 }
19203 }
19204
19205 void wlc_phy_init_nphy(struct brcms_phy *pi)
19206 {
19207 u16 val;
19208 u16 clip1_ths[2];
19209 struct nphy_txgains target_gain;
19210 u8 tx_pwr_ctrl_state;
19211 bool do_nphy_cal = false;
19212 uint core;
19213 u32 d11_clk_ctl_st;
19214 bool do_rssi_cal = false;
19215
19216 core = 0;
19217
19218 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19219 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19220
19221 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19222 ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19223 (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19224 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19225 (CHSPEC_IS2G(pi->radio_chanspec)))
19226 bcma_cc_set32(&pi->d11core->bus->drv_cc,
19227 BCMA_CC_CHIPCTL, 0x40);
19228 }
19229
19230 if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19231 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19232 ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19233
19234 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19235 CHSPEC_IS40(pi->radio_chanspec)) {
19236
19237 d11_clk_ctl_st = bcma_read32(pi->d11core,
19238 D11REGOFFS(clk_ctl_st));
19239 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19240 ~(CCS_FORCEHT | CCS_HTAREQ));
19241
19242 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19243 d11_clk_ctl_st);
19244 }
19245
19246 pi->use_int_tx_iqlo_cal_nphy =
19247 (PHY_IPA(pi) ||
19248 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19249 (NREV_GE(pi->pubpi.phy_rev, 5)
19250 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19251
19252 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19253
19254 pi->nphy_deaf_count = 0;
19255
19256 wlc_phy_tbl_init_nphy(pi);
19257
19258 pi->nphy_crsminpwr_adjusted = false;
19259 pi->nphy_noisevars_adjusted = false;
19260
19261 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19262 write_phy_reg(pi, 0xe7, 0);
19263 write_phy_reg(pi, 0xec, 0);
19264 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19265 write_phy_reg(pi, 0x342, 0);
19266 write_phy_reg(pi, 0x343, 0);
19267 write_phy_reg(pi, 0x346, 0);
19268 write_phy_reg(pi, 0x347, 0);
19269 }
19270 write_phy_reg(pi, 0xe5, 0);
19271 write_phy_reg(pi, 0xe6, 0);
19272 } else {
19273 write_phy_reg(pi, 0xec, 0);
19274 }
19275
19276 write_phy_reg(pi, 0x91, 0);
19277 write_phy_reg(pi, 0x92, 0);
19278 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19279 write_phy_reg(pi, 0x93, 0);
19280 write_phy_reg(pi, 0x94, 0);
19281 }
19282
19283 and_phy_reg(pi, 0xa1, ~3);
19284
19285 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19286 write_phy_reg(pi, 0x8f, 0);
19287 write_phy_reg(pi, 0xa5, 0);
19288 } else {
19289 write_phy_reg(pi, 0xa5, 0);
19290 }
19291
19292 if (NREV_IS(pi->pubpi.phy_rev, 2))
19293 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19294 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19295 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19296
19297 write_phy_reg(pi, 0x203, 32);
19298 write_phy_reg(pi, 0x201, 32);
19299
19300 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19301 write_phy_reg(pi, 0x20d, 160);
19302 else
19303 write_phy_reg(pi, 0x20d, 184);
19304
19305 write_phy_reg(pi, 0x13a, 200);
19306
19307 write_phy_reg(pi, 0x70, 80);
19308
19309 write_phy_reg(pi, 0x1ff, 48);
19310
19311 if (NREV_LT(pi->pubpi.phy_rev, 8))
19312 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19313
19314 wlc_phy_stf_chain_upd_nphy(pi);
19315
19316 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19317 write_phy_reg(pi, 0x180, 0xaa8);
19318 write_phy_reg(pi, 0x181, 0x9a4);
19319 }
19320
19321 if (PHY_IPA(pi)) {
19322 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19323
19324 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19325 0x29b, (0x1 << 0), (1) << 0);
19326
19327 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19328 0x29c, (0x1ff << 7),
19329 (pi->nphy_papd_epsilon_offset[core]) << 7);
19330
19331 }
19332
19333 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19334 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19335 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19336 }
19337
19338 wlc_phy_workarounds_nphy(pi);
19339
19340 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19341
19342 val = read_phy_reg(pi, 0x01);
19343 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19344 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19345 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19346
19347 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19348
19349 wlc_phy_pa_override_nphy(pi, OFF);
19350 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19351 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19352 wlc_phy_pa_override_nphy(pi, ON);
19353
19354 wlc_phy_classifier_nphy(pi, 0, 0);
19355 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19356
19357 if (CHSPEC_IS2G(pi->radio_chanspec))
19358 wlc_phy_bphy_init_nphy(pi);
19359
19360 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19361 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19362
19363 wlc_phy_txpwr_fixpower_nphy(pi);
19364
19365 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19366
19367 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19368
19369 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19370 u32 *tx_pwrctrl_tbl = NULL;
19371 u16 idx;
19372 s16 pga_gn = 0;
19373 s16 pad_gn = 0;
19374 s32 rfpwr_offset;
19375
19376 if (PHY_IPA(pi)) {
19377 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19378 } else {
19379 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19380 if (NREV_IS(pi->pubpi.phy_rev, 3))
19381 tx_pwrctrl_tbl =
19382 nphy_tpc_5GHz_txgain_rev3;
19383 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19384 tx_pwrctrl_tbl =
19385 (pi->srom_fem5g.extpagain ==
19386 3) ?
19387 nphy_tpc_5GHz_txgain_HiPwrEPA :
19388 nphy_tpc_5GHz_txgain_rev4;
19389 else
19390 tx_pwrctrl_tbl =
19391 nphy_tpc_5GHz_txgain_rev5;
19392 } else {
19393 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19394 if (pi->pubpi.radiorev == 5)
19395 tx_pwrctrl_tbl =
19396 nphy_tpc_txgain_epa_2057rev5;
19397 else if (pi->pubpi.radiorev == 3)
19398 tx_pwrctrl_tbl =
19399 nphy_tpc_txgain_epa_2057rev3;
19400 } else {
19401 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19402 (pi->srom_fem2g.extpagain == 3))
19403 tx_pwrctrl_tbl =
19404 nphy_tpc_txgain_HiPwrEPA;
19405 else
19406 tx_pwrctrl_tbl =
19407 nphy_tpc_txgain_rev3;
19408 }
19409 }
19410 }
19411
19412 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19413 192, 32, tx_pwrctrl_tbl);
19414 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19415 192, 32, tx_pwrctrl_tbl);
19416
19417 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19418
19419 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19420
19421 for (idx = 0; idx < 128; idx++) {
19422 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19423 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19424 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19425 pad_gn);
19426 wlc_phy_table_write_nphy(
19427 pi,
19428 NPHY_TBL_ID_CORE1TXPWRCTL,
19429 1, 576 + idx, 32,
19430 &rfpwr_offset);
19431 wlc_phy_table_write_nphy(
19432 pi,
19433 NPHY_TBL_ID_CORE2TXPWRCTL,
19434 1, 576 + idx, 32,
19435 &rfpwr_offset);
19436 }
19437 } else {
19438
19439 for (idx = 0; idx < 128; idx++) {
19440 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19441 if (CHSPEC_IS2G(pi->radio_chanspec))
19442 rfpwr_offset = (s16)
19443 nphy_papd_pga_gain_delta_ipa_2g
19444 [pga_gn];
19445 else
19446 rfpwr_offset = (s16)
19447 nphy_papd_pga_gain_delta_ipa_5g
19448 [pga_gn];
19449
19450 wlc_phy_table_write_nphy(
19451 pi,
19452 NPHY_TBL_ID_CORE1TXPWRCTL,
19453 1, 576 + idx, 32,
19454 &rfpwr_offset);
19455 wlc_phy_table_write_nphy(
19456 pi,
19457 NPHY_TBL_ID_CORE2TXPWRCTL,
19458 1, 576 + idx, 32,
19459 &rfpwr_offset);
19460 }
19461
19462 }
19463 } else {
19464
19465 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19466 192, 32, nphy_tpc_txgain);
19467 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19468 192, 32, nphy_tpc_txgain);
19469 }
19470
19471 if (pi->sh->phyrxchain != 0x3)
19472 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19473 pi->sh->phyrxchain);
19474
19475 if (PHY_PERICAL_MPHASE_PENDING(pi))
19476 wlc_phy_cal_perical_mphase_restart(pi);
19477
19478 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19479 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19480 (pi->nphy_rssical_chanspec_2G == 0) :
19481 (pi->nphy_rssical_chanspec_5G == 0);
19482
19483 if (do_rssi_cal)
19484 wlc_phy_rssi_cal_nphy(pi);
19485 else
19486 wlc_phy_restore_rssical_nphy(pi);
19487 } else {
19488 wlc_phy_rssi_cal_nphy(pi);
19489 }
19490
19491 if (!SCAN_RM_IN_PROGRESS(pi))
19492 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19493 (pi->nphy_iqcal_chanspec_2G == 0) :
19494 (pi->nphy_iqcal_chanspec_5G == 0);
19495
19496 if (!pi->do_initcal)
19497 do_nphy_cal = false;
19498
19499 if (do_nphy_cal) {
19500
19501 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19502
19503 if (pi->antsel_type == ANTSEL_2x3)
19504 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19505 true);
19506
19507 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19508 wlc_phy_rssi_cal_nphy(pi);
19509
19510 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19511 pi->nphy_cal_orig_pwr_idx[0] =
19512 pi->nphy_txpwrindex[PHY_CORE_0]
19513 .
19514 index_internal;
19515 pi->nphy_cal_orig_pwr_idx[1] =
19516 pi->nphy_txpwrindex[PHY_CORE_1]
19517 .
19518 index_internal;
19519
19520 wlc_phy_precal_txgain_nphy(pi);
19521 target_gain =
19522 wlc_phy_get_tx_gain_nphy(pi);
19523 }
19524
19525 if (wlc_phy_cal_txiqlo_nphy
19526 (pi, target_gain, true,
19527 false) == 0) {
19528 if (wlc_phy_cal_rxiq_nphy
19529 (pi, target_gain, 2,
19530 false) == 0)
19531 wlc_phy_savecal_nphy(pi);
19532
19533 }
19534 } else if (pi->mphase_cal_phase_id ==
19535 MPHASE_CAL_STATE_IDLE) {
19536 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19537 PHY_PERICAL_PHYINIT);
19538 }
19539 } else {
19540 wlc_phy_restorecal_nphy(pi);
19541 }
19542
19543 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19544
19545 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19546
19547 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19548
19549 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19550
19551 write_phy_reg(pi, 0x70, 50);
19552
19553 wlc_phy_txlpfbw_nphy(pi);
19554
19555 wlc_phy_spurwar_nphy(pi);
19556
19557 }
19558
19559 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19560 {
19561 u16 val;
19562
19563 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19564
19565 val = read_phy_reg(pi, 0x01);
19566 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19567 udelay(1);
19568 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19569
19570 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19571
19572 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19573 }
19574
19575 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19576 {
19577 u16 rfctrlintc_override_val;
19578
19579 if (!en) {
19580
19581 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19582 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19583
19584 if (NREV_GE(pi->pubpi.phy_rev, 7))
19585 rfctrlintc_override_val = 0x1480;
19586 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19587 rfctrlintc_override_val =
19588 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19589 else
19590 rfctrlintc_override_val =
19591 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19592
19593 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19594 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19595 } else {
19596 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19597 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19598 }
19599
19600 }
19601
19602 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19603 {
19604
19605 u16 txrx_chain =
19606 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19607 bool CoreActv_override = false;
19608
19609 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19610 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19611 CoreActv_override = true;
19612
19613 if (NREV_LE(pi->pubpi.phy_rev, 2))
19614 and_phy_reg(pi, 0xa0, ~0x20);
19615 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19616 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19617 CoreActv_override = true;
19618
19619 if (NREV_LE(pi->pubpi.phy_rev, 2))
19620 or_phy_reg(pi, 0xa0, 0x20);
19621 }
19622
19623 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19624
19625 if (CoreActv_override) {
19626 pi->nphy_perical = PHY_PERICAL_DISABLE;
19627 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19628 } else {
19629 pi->nphy_perical = PHY_PERICAL_MPHASE;
19630 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19631 }
19632 }
19633
19634 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19635 {
19636 u16 regval;
19637 u16 tbl_buf[16];
19638 uint i;
19639 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19640 u16 tbl_opcode;
19641 bool suspend;
19642
19643 pi->sh->phyrxchain = rxcore_bitmask;
19644
19645 if (!pi->sh->clk)
19646 return;
19647
19648 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19649 MCTL_EN_MAC));
19650 if (!suspend)
19651 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19652
19653 if (pi->phyhang_avoid)
19654 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19655
19656 regval = read_phy_reg(pi, 0xa2);
19657 regval &= ~(0xf << 4);
19658 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19659 write_phy_reg(pi, 0xa2, regval);
19660
19661 if ((rxcore_bitmask & 0x3) != 0x3) {
19662
19663 write_phy_reg(pi, 0x20e, 1);
19664
19665 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19666 if (pi->rx2tx_biasentry == -1) {
19667 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19668 ARRAY_SIZE(tbl_buf), 80,
19669 16, tbl_buf);
19670
19671 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19672 if (tbl_buf[i] ==
19673 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19674 pi->rx2tx_biasentry = (u8) i;
19675 tbl_opcode =
19676 NPHY_REV3_RFSEQ_CMD_NOP;
19677 wlc_phy_table_write_nphy(
19678 pi,
19679 NPHY_TBL_ID_RFSEQ,
19680 1, i,
19681 16,
19682 &tbl_opcode);
19683 break;
19684 } else if (tbl_buf[i] ==
19685 NPHY_REV3_RFSEQ_CMD_END)
19686 break;
19687 }
19688 }
19689 }
19690 } else {
19691
19692 write_phy_reg(pi, 0x20e, 30);
19693
19694 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19695 if (pi->rx2tx_biasentry != -1) {
19696 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19697 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19698 1, pi->rx2tx_biasentry,
19699 16, &tbl_opcode);
19700 pi->rx2tx_biasentry = -1;
19701 }
19702 }
19703 }
19704
19705 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19706
19707 if (pi->phyhang_avoid)
19708 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19709
19710 if (!suspend)
19711 wlapi_enable_mac(pi->sh->physhim);
19712 }
19713
19714 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19715 {
19716 u16 regval, rxen_bits;
19717 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19718
19719 regval = read_phy_reg(pi, 0xa2);
19720 rxen_bits = (regval >> 4) & 0xf;
19721
19722 return (u8) rxen_bits;
19723 }
19724
19725 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19726 {
19727 return PHY_IPA(pi);
19728 }
19729
19730 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19731 {
19732 }
19733
19734 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19735 {
19736
19737 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19738 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19739
19740 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19741 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19742
19743 }
19744
19745 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19746 {
19747 struct radio_20xx_regs *regs_2057_ptr = NULL;
19748
19749 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19750 regs_2057_ptr = regs_2057_rev4;
19751 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19752 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19753 switch (pi->pubpi.radiorev) {
19754 case 5:
19755
19756 if (NREV_IS(pi->pubpi.phy_rev, 8))
19757 regs_2057_ptr = regs_2057_rev5;
19758 else if (NREV_IS(pi->pubpi.phy_rev, 9))
19759 regs_2057_ptr = regs_2057_rev5v1;
19760 break;
19761
19762 case 7:
19763
19764 regs_2057_ptr = regs_2057_rev7;
19765 break;
19766
19767 case 8:
19768
19769 regs_2057_ptr = regs_2057_rev8;
19770 break;
19771
19772 default:
19773 break;
19774 }
19775 }
19776
19777 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19778 }
19779
19780 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19781 {
19782 u16 rcal_reg = 0;
19783 int i;
19784
19785 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19786
19787 if (pi->pubpi.radiorev == 5) {
19788
19789 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19790
19791 udelay(10);
19792
19793 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19794 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19795 0x1);
19796 }
19797 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19798
19799 udelay(10);
19800
19801 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19802
19803 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19804 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19805 if (rcal_reg & 0x1)
19806 break;
19807
19808 udelay(100);
19809 }
19810
19811 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19812 "HW error: radio calib2"))
19813 return 0;
19814
19815 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19816
19817 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19818
19819 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19820 if (pi->pubpi.radiorev == 5) {
19821
19822 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19823 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19824 0x0);
19825 }
19826
19827 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19828
19829 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19830 rcal_reg);
19831 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19832 rcal_reg << 2);
19833 }
19834
19835 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19836 u16 savereg;
19837
19838 savereg =
19839 read_radio_reg(
19840 pi,
19841 RADIO_2056_SYN_PLL_MAST2 |
19842 RADIO_2056_SYN);
19843 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19844 savereg | 0x7);
19845 udelay(10);
19846
19847 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19848 0x1);
19849 udelay(10);
19850
19851 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19852 0x9);
19853
19854 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19855 rcal_reg = read_radio_reg(
19856 pi,
19857 RADIO_2056_SYN_RCAL_CODE_OUT |
19858 RADIO_2056_SYN);
19859 if (rcal_reg & 0x80)
19860 break;
19861
19862 udelay(100);
19863 }
19864
19865 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19866 "HW error: radio calib3"))
19867 return 0;
19868
19869 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19870 0x1);
19871
19872 rcal_reg =
19873 read_radio_reg(pi,
19874 RADIO_2056_SYN_RCAL_CODE_OUT |
19875 RADIO_2056_SYN);
19876
19877 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19878 0x0);
19879
19880 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19881 savereg);
19882
19883 return rcal_reg & 0x1f;
19884 }
19885 return rcal_reg & 0x3e;
19886 }
19887
19888 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19889 {
19890 u16 rccal_valid;
19891 int i;
19892 bool chip43226_6362A0;
19893
19894 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19895 || (pi->pubpi.radiorev == 4)
19896 || (pi->pubpi.radiorev == 6));
19897
19898 rccal_valid = 0;
19899 if (chip43226_6362A0) {
19900 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19901 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19902 } else {
19903 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19904
19905 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19906 }
19907 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19908 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19909
19910 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19911 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19912 if (rccal_valid & 0x2)
19913 break;
19914
19915 udelay(500);
19916 }
19917
19918 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19919
19920 rccal_valid = 0;
19921 if (chip43226_6362A0) {
19922 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19923 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19924 } else {
19925 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19926
19927 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19928 }
19929 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19930 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19931
19932 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19933 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19934 if (rccal_valid & 0x2)
19935 break;
19936
19937 udelay(500);
19938 }
19939
19940 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19941
19942 rccal_valid = 0;
19943 if (chip43226_6362A0) {
19944 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19945
19946 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19947 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19948 } else {
19949 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19950 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19951 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19952 }
19953 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19954
19955 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19956 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19957 if (rccal_valid & 0x2)
19958 break;
19959
19960 udelay(500);
19961 }
19962
19963 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19964 return 0;
19965
19966 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19967
19968 return rccal_valid;
19969 }
19970
19971 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19972 {
19973
19974 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19975
19976 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19977 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19978 mdelay(2);
19979 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19980 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19981
19982 if (pi->phy_init_por) {
19983 wlc_phy_radio205x_rcal(pi);
19984 wlc_phy_radio2057_rccal(pi);
19985 }
19986
19987 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19988 }
19989
19990 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19991 {
19992 const struct radio_regs *regs_SYN_2056_ptr = NULL;
19993 const struct radio_regs *regs_TX_2056_ptr = NULL;
19994 const struct radio_regs *regs_RX_2056_ptr = NULL;
19995
19996 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19997 regs_SYN_2056_ptr = regs_SYN_2056;
19998 regs_TX_2056_ptr = regs_TX_2056;
19999 regs_RX_2056_ptr = regs_RX_2056;
20000 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20001 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20002 regs_TX_2056_ptr = regs_TX_2056_A1;
20003 regs_RX_2056_ptr = regs_RX_2056_A1;
20004 } else {
20005 switch (pi->pubpi.radiorev) {
20006 case 5:
20007 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20008 regs_TX_2056_ptr = regs_TX_2056_rev5;
20009 regs_RX_2056_ptr = regs_RX_2056_rev5;
20010 break;
20011
20012 case 6:
20013 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20014 regs_TX_2056_ptr = regs_TX_2056_rev6;
20015 regs_RX_2056_ptr = regs_RX_2056_rev6;
20016 break;
20017
20018 case 7:
20019 case 9:
20020 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20021 regs_TX_2056_ptr = regs_TX_2056_rev7;
20022 regs_RX_2056_ptr = regs_RX_2056_rev7;
20023 break;
20024
20025 case 8:
20026 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20027 regs_TX_2056_ptr = regs_TX_2056_rev8;
20028 regs_RX_2056_ptr = regs_RX_2056_rev8;
20029 break;
20030
20031 case 11:
20032 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20033 regs_TX_2056_ptr = regs_TX_2056_rev11;
20034 regs_RX_2056_ptr = regs_RX_2056_rev11;
20035 break;
20036
20037 default:
20038 return;
20039 }
20040 }
20041
20042 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20043
20044 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20045
20046 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20047
20048 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20049
20050 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20051 }
20052
20053 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20054 {
20055 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20056
20057 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20058 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20059 udelay(1000);
20060 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20061
20062 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20063 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20064 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20065 else
20066 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20067
20068 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20069
20070 if (pi->phy_init_por)
20071 wlc_phy_radio205x_rcal(pi);
20072 }
20073
20074 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20075 {
20076
20077 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20078 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20079
20080 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20081 }
20082
20083 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20084 {
20085 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20086 }
20087
20088 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20089 {
20090
20091 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20092 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20093
20094 if (((pi->sh->sromrev >= 4)
20095 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20096 || ((pi->sh->sromrev < 4))) {
20097 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20098 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20099 }
20100
20101 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20102 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20103
20104 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20105 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20106
20107 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20108
20109 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20110
20111 udelay(1000);
20112
20113 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20114
20115 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20116 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20117
20118 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20119 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20120 "HW error: radio calibration1\n"))
20121 return;
20122
20123 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20124 ~(RADIO_2055_CAL_LPO_ENABLE));
20125
20126 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20127
20128 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20129 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20130
20131 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20132 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20133
20134 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20135 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20136 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20137 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20138 if (pi->nphy_gain_boost) {
20139 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20140 ~(RADIO_2055_GAINBST_DISABLE));
20141 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20142 ~(RADIO_2055_GAINBST_DISABLE));
20143 } else {
20144 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20145 RADIO_2055_GAINBST_DISABLE);
20146 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20147 RADIO_2055_GAINBST_DISABLE);
20148 }
20149
20150 udelay(2);
20151 }
20152
20153 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20154 {
20155 if (on) {
20156 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20157 if (!pi->radio_is_on) {
20158 wlc_phy_radio_preinit_205x(pi);
20159 wlc_phy_radio_init_2057(pi);
20160 wlc_phy_radio_postinit_2057(pi);
20161 }
20162
20163 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20164 pi->radio_chanspec);
20165 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20166 wlc_phy_radio_preinit_205x(pi);
20167 wlc_phy_radio_init_2056(pi);
20168 wlc_phy_radio_postinit_2056(pi);
20169
20170 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20171 pi->radio_chanspec);
20172 } else {
20173 wlc_phy_radio_preinit_2055(pi);
20174 wlc_phy_radio_init_2055(pi);
20175 wlc_phy_radio_postinit_2055(pi);
20176 }
20177
20178 pi->radio_is_on = true;
20179
20180 } else {
20181
20182 if (NREV_GE(pi->pubpi.phy_rev, 3)
20183 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20184 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20185 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20186
20187 write_radio_reg(pi,
20188 RADIO_2056_TX_PADA_BOOST_TUNE |
20189 RADIO_2056_TX0, 0);
20190 write_radio_reg(pi,
20191 RADIO_2056_TX_PADG_BOOST_TUNE |
20192 RADIO_2056_TX0, 0);
20193 write_radio_reg(pi,
20194 RADIO_2056_TX_PGAA_BOOST_TUNE |
20195 RADIO_2056_TX0, 0);
20196 write_radio_reg(pi,
20197 RADIO_2056_TX_PGAG_BOOST_TUNE |
20198 RADIO_2056_TX0, 0);
20199 mod_radio_reg(pi,
20200 RADIO_2056_TX_MIXA_BOOST_TUNE |
20201 RADIO_2056_TX0, 0xf0, 0);
20202 write_radio_reg(pi,
20203 RADIO_2056_TX_MIXG_BOOST_TUNE |
20204 RADIO_2056_TX0, 0);
20205
20206 write_radio_reg(pi,
20207 RADIO_2056_TX_PADA_BOOST_TUNE |
20208 RADIO_2056_TX1, 0);
20209 write_radio_reg(pi,
20210 RADIO_2056_TX_PADG_BOOST_TUNE |
20211 RADIO_2056_TX1, 0);
20212 write_radio_reg(pi,
20213 RADIO_2056_TX_PGAA_BOOST_TUNE |
20214 RADIO_2056_TX1, 0);
20215 write_radio_reg(pi,
20216 RADIO_2056_TX_PGAG_BOOST_TUNE |
20217 RADIO_2056_TX1, 0);
20218 mod_radio_reg(pi,
20219 RADIO_2056_TX_MIXA_BOOST_TUNE |
20220 RADIO_2056_TX1, 0xf0, 0);
20221 write_radio_reg(pi,
20222 RADIO_2056_TX_MIXG_BOOST_TUNE |
20223 RADIO_2056_TX1, 0);
20224
20225 pi->radio_is_on = false;
20226 }
20227
20228 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20229 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20230 pi->radio_is_on = false;
20231 }
20232
20233 }
20234 }
20235
20236 static bool
20237 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20238 const struct chan_info_nphy_radio2057 **t0,
20239 const struct chan_info_nphy_radio205x **t1,
20240 const struct chan_info_nphy_radio2057_rev5 **t2,
20241 const struct chan_info_nphy_2055 **t3)
20242 {
20243 uint i;
20244 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20245 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20246 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20247 u32 tbl_len = 0;
20248
20249 int freq = 0;
20250
20251 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20252
20253 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20254
20255 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20256 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20257
20258 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20259 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20260 switch (pi->pubpi.radiorev) {
20261
20262 case 5:
20263
20264 if (pi->pubpi.radiover == 0x0) {
20265
20266 chan_info_tbl_p_2 =
20267 chan_info_nphyrev8_2057_rev5;
20268 tbl_len = ARRAY_SIZE(
20269 chan_info_nphyrev8_2057_rev5);
20270
20271 } else if (pi->pubpi.radiover == 0x1) {
20272
20273 chan_info_tbl_p_2 =
20274 chan_info_nphyrev9_2057_rev5v1;
20275 tbl_len = ARRAY_SIZE(
20276 chan_info_nphyrev9_2057_rev5v1);
20277
20278 }
20279 break;
20280
20281 case 7:
20282 chan_info_tbl_p_0 =
20283 chan_info_nphyrev8_2057_rev7;
20284 tbl_len = ARRAY_SIZE(
20285 chan_info_nphyrev8_2057_rev7);
20286 break;
20287
20288 case 8:
20289 chan_info_tbl_p_0 =
20290 chan_info_nphyrev8_2057_rev8;
20291 tbl_len = ARRAY_SIZE(
20292 chan_info_nphyrev8_2057_rev8);
20293 break;
20294
20295 default:
20296 break;
20297 }
20298 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20299
20300 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20301 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20302 } else {
20303 goto fail;
20304 }
20305
20306 for (i = 0; i < tbl_len; i++) {
20307 if (pi->pubpi.radiorev == 5) {
20308
20309 if (chan_info_tbl_p_2[i].chan == channel)
20310 break;
20311 } else {
20312
20313 if (chan_info_tbl_p_0[i].chan == channel)
20314 break;
20315 }
20316 }
20317
20318 if (i >= tbl_len)
20319 goto fail;
20320
20321 if (pi->pubpi.radiorev == 5) {
20322 *t2 = &chan_info_tbl_p_2[i];
20323 freq = chan_info_tbl_p_2[i].freq;
20324 } else {
20325 *t0 = &chan_info_tbl_p_0[i];
20326 freq = chan_info_tbl_p_0[i].freq;
20327 }
20328
20329 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20330 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20331 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20332 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20333 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20334 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20335 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20336 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20337 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20338 switch (pi->pubpi.radiorev) {
20339 case 5:
20340 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20341 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20342 break;
20343 case 6:
20344 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20345 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20346 break;
20347 case 7:
20348 case 9:
20349 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20350 tbl_len =
20351 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20352 break;
20353 case 8:
20354 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20355 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20356 break;
20357 case 11:
20358 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20359 tbl_len = ARRAY_SIZE(
20360 chan_info_nphyrev6_2056v11);
20361 break;
20362 default:
20363 break;
20364 }
20365 }
20366
20367 for (i = 0; i < tbl_len; i++) {
20368 if (chan_info_tbl_p_1[i].chan == channel)
20369 break;
20370 }
20371
20372 if (i >= tbl_len)
20373 goto fail;
20374
20375 *t1 = &chan_info_tbl_p_1[i];
20376 freq = chan_info_tbl_p_1[i].freq;
20377
20378 } else {
20379 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20380 if (chan_info_nphy_2055[i].chan == channel)
20381 break;
20382
20383 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20384 goto fail;
20385
20386 *t3 = &chan_info_nphy_2055[i];
20387 freq = chan_info_nphy_2055[i].freq;
20388 }
20389
20390 *f = freq;
20391 return true;
20392
20393 fail:
20394 *f = WL_CHAN_FREQ_RANGE_2G;
20395 return false;
20396 }
20397
20398 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20399 {
20400 int freq;
20401 const struct chan_info_nphy_radio2057 *t0 = NULL;
20402 const struct chan_info_nphy_radio205x *t1 = NULL;
20403 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20404 const struct chan_info_nphy_2055 *t3 = NULL;
20405
20406 if (channel == 0)
20407 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20408
20409 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20410
20411 if (CHSPEC_IS2G(pi->radio_chanspec))
20412 return WL_CHAN_FREQ_RANGE_2G;
20413
20414 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20415 return WL_CHAN_FREQ_RANGE_5GL;
20416 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20417 return WL_CHAN_FREQ_RANGE_5GM;
20418 else
20419 return WL_CHAN_FREQ_RANGE_5GH;
20420 }
20421
20422 static void
20423 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20424 const struct chan_info_nphy_2055 *ci)
20425 {
20426
20427 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20428 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20429 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20430 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20431
20432 BRCMS_PHY_WAR_PR51571(pi);
20433
20434 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20435 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20436 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20437 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20438
20439 BRCMS_PHY_WAR_PR51571(pi);
20440
20441 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20442 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20443 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20444 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20445
20446 BRCMS_PHY_WAR_PR51571(pi);
20447
20448 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20449 ci->RF_core1_lgbuf_a_tune);
20450 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20451 ci->RF_core1_lgbuf_g_tune);
20452 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20453 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20454 ci->RF_core1_tx_pga_pad_tn);
20455
20456 BRCMS_PHY_WAR_PR51571(pi);
20457
20458 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20459 ci->RF_core1_tx_mx_bgtrim);
20460 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20461 ci->RF_core2_lgbuf_a_tune);
20462 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20463 ci->RF_core2_lgbuf_g_tune);
20464 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20465
20466 BRCMS_PHY_WAR_PR51571(pi);
20467
20468 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20469 ci->RF_core2_tx_pga_pad_tn);
20470 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20471 ci->RF_core2_tx_mx_bgtrim);
20472
20473 udelay(50);
20474
20475 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20476 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20477
20478 BRCMS_PHY_WAR_PR51571(pi);
20479
20480 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20481
20482 udelay(300);
20483 }
20484
20485 static void
20486 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20487 const struct chan_info_nphy_radio205x *ci)
20488 {
20489 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20490
20491 write_radio_reg(pi,
20492 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20493 ci->RF_SYN_pll_vcocal1);
20494 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20495 ci->RF_SYN_pll_vcocal2);
20496 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20497 ci->RF_SYN_pll_refdiv);
20498 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20499 ci->RF_SYN_pll_mmd2);
20500 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20501 ci->RF_SYN_pll_mmd1);
20502 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20503 ci->RF_SYN_pll_loopfilter1);
20504 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20505 ci->RF_SYN_pll_loopfilter2);
20506 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20507 ci->RF_SYN_pll_loopfilter3);
20508 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20509 ci->RF_SYN_pll_loopfilter4);
20510 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20511 ci->RF_SYN_pll_loopfilter5);
20512 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20513 ci->RF_SYN_reserved_addr27);
20514 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20515 ci->RF_SYN_reserved_addr28);
20516 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20517 ci->RF_SYN_reserved_addr29);
20518 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20519 ci->RF_SYN_logen_VCOBUF1);
20520 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20521 ci->RF_SYN_logen_MIXER2);
20522 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20523 ci->RF_SYN_logen_BUF3);
20524 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20525 ci->RF_SYN_logen_BUF4);
20526
20527 write_radio_reg(pi,
20528 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20529 ci->RF_RX0_lnaa_tune);
20530 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20531 ci->RF_RX0_lnag_tune);
20532 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20533 ci->RF_TX0_intpaa_boost_tune);
20534 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20535 ci->RF_TX0_intpag_boost_tune);
20536 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20537 ci->RF_TX0_pada_boost_tune);
20538 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20539 ci->RF_TX0_padg_boost_tune);
20540 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20541 ci->RF_TX0_pgaa_boost_tune);
20542 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20543 ci->RF_TX0_pgag_boost_tune);
20544 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20545 ci->RF_TX0_mixa_boost_tune);
20546 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20547 ci->RF_TX0_mixg_boost_tune);
20548
20549 write_radio_reg(pi,
20550 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20551 ci->RF_RX1_lnaa_tune);
20552 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20553 ci->RF_RX1_lnag_tune);
20554 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20555 ci->RF_TX1_intpaa_boost_tune);
20556 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20557 ci->RF_TX1_intpag_boost_tune);
20558 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20559 ci->RF_TX1_pada_boost_tune);
20560 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20561 ci->RF_TX1_padg_boost_tune);
20562 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20563 ci->RF_TX1_pgaa_boost_tune);
20564 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20565 ci->RF_TX1_pgag_boost_tune);
20566 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20567 ci->RF_TX1_mixa_boost_tune);
20568 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20569 ci->RF_TX1_mixg_boost_tune);
20570
20571 if (NREV_IS(pi->pubpi.phy_rev, 3))
20572 regs_SYN_2056_ptr = regs_SYN_2056;
20573 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20574 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20575 else {
20576 switch (pi->pubpi.radiorev) {
20577 case 5:
20578 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20579 break;
20580 case 6:
20581 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20582 break;
20583 case 7:
20584 case 9:
20585 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20586 break;
20587 case 8:
20588 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20589 break;
20590 case 11:
20591 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20592 break;
20593 }
20594 }
20595 if (CHSPEC_IS2G(pi->radio_chanspec))
20596 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20597 RADIO_2056_SYN,
20598 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20599 else
20600 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20601 RADIO_2056_SYN,
20602 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20603
20604 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20605 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20606 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20607 RADIO_2056_SYN, 0x1f);
20608 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20609 RADIO_2056_SYN, 0x1f);
20610
20611 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20612 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20613 write_radio_reg(pi,
20614 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20615 RADIO_2056_SYN, 0x14);
20616 write_radio_reg(pi,
20617 RADIO_2056_SYN_PLL_CP2 |
20618 RADIO_2056_SYN, 0x00);
20619 } else {
20620 write_radio_reg(pi,
20621 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20622 RADIO_2056_SYN, 0xb);
20623 write_radio_reg(pi,
20624 RADIO_2056_SYN_PLL_CP2 |
20625 RADIO_2056_SYN, 0x14);
20626 }
20627 }
20628 }
20629
20630 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20631 (CHSPEC_IS2G(pi->radio_chanspec))) {
20632 write_radio_reg(pi,
20633 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20634 0x1f);
20635 write_radio_reg(pi,
20636 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20637 0x1f);
20638 write_radio_reg(pi,
20639 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20640 0xb);
20641 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20642 0x20);
20643 }
20644
20645 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20646 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20647 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20648 RADIO_2056_SYN, 0x1f);
20649 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20650 RADIO_2056_SYN, 0x1f);
20651 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20652 RADIO_2056_SYN, 0x5);
20653 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20654 RADIO_2056_SYN, 0xc);
20655 }
20656 }
20657
20658 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20659 u16 pag_boost_tune;
20660 u16 padg_boost_tune;
20661 u16 pgag_boost_tune;
20662 u16 mixg_boost_tune;
20663 u16 bias, cascbias;
20664 uint core;
20665
20666 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20667
20668 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20669
20670 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20671 PADG_IDAC, 0xcc);
20672
20673 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20674 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20675 bias = 0x40;
20676 cascbias = 0x45;
20677 pag_boost_tune = 0x5;
20678 pgag_boost_tune = 0x33;
20679 padg_boost_tune = 0x77;
20680 mixg_boost_tune = 0x55;
20681 } else {
20682 bias = 0x25;
20683 cascbias = 0x20;
20684
20685 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20686 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20687 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20688 bias = 0x2a;
20689 cascbias = 0x38;
20690 }
20691
20692 pag_boost_tune = 0x4;
20693 pgag_boost_tune = 0x03;
20694 padg_boost_tune = 0x77;
20695 mixg_boost_tune = 0x65;
20696 }
20697
20698 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20699 INTPAG_IMAIN_STAT, bias);
20700 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20701 INTPAG_IAUX_STAT, bias);
20702 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20703 INTPAG_CASCBIAS, cascbias);
20704
20705 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20706 INTPAG_BOOST_TUNE,
20707 pag_boost_tune);
20708 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20709 PGAG_BOOST_TUNE,
20710 pgag_boost_tune);
20711 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20712 PADG_BOOST_TUNE,
20713 padg_boost_tune);
20714 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20715 MIXG_BOOST_TUNE,
20716 mixg_boost_tune);
20717 } else {
20718
20719 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20720 0x40 : 0x20;
20721
20722 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723 INTPAG_IMAIN_STAT, bias);
20724 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20725 INTPAG_IAUX_STAT, bias);
20726 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20727 INTPAG_CASCBIAS, 0x30);
20728 }
20729 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20730 0xee);
20731 }
20732 }
20733
20734 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20735 && CHSPEC_IS5G(pi->radio_chanspec)) {
20736 u16 paa_boost_tune;
20737 u16 pada_boost_tune;
20738 u16 pgaa_boost_tune;
20739 u16 mixa_boost_tune;
20740 u16 freq, pabias, cascbias;
20741 uint core;
20742
20743 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20744
20745 if (freq < 5150) {
20746
20747 paa_boost_tune = 0xa;
20748 pada_boost_tune = 0x77;
20749 pgaa_boost_tune = 0xf;
20750 mixa_boost_tune = 0xf;
20751 } else if (freq < 5340) {
20752
20753 paa_boost_tune = 0x8;
20754 pada_boost_tune = 0x77;
20755 pgaa_boost_tune = 0xfb;
20756 mixa_boost_tune = 0xf;
20757 } else if (freq < 5650) {
20758
20759 paa_boost_tune = 0x0;
20760 pada_boost_tune = 0x77;
20761 pgaa_boost_tune = 0xb;
20762 mixa_boost_tune = 0xf;
20763 } else {
20764
20765 paa_boost_tune = 0x0;
20766 pada_boost_tune = 0x77;
20767 if (freq != 5825)
20768 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20769 else
20770 pgaa_boost_tune = 6;
20771
20772 mixa_boost_tune = 0xf;
20773 }
20774
20775 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20776 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777 INTPAA_BOOST_TUNE, paa_boost_tune);
20778 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779 PADA_BOOST_TUNE, pada_boost_tune);
20780 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20781 PGAA_BOOST_TUNE, pgaa_boost_tune);
20782 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20783 MIXA_BOOST_TUNE, mixa_boost_tune);
20784
20785 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20786 TXSPARE1, 0x30);
20787 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20788 PA_SPARE2, 0xee);
20789
20790 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20791 PADA_CASCBIAS, 0x3);
20792
20793 cascbias = 0x30;
20794
20795 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20796 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20797 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20798 cascbias = 0x35;
20799
20800 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20801
20802 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20803 INTPAA_IAUX_STAT, pabias);
20804 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20805 INTPAA_IMAIN_STAT, pabias);
20806 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20807 INTPAA_CASCBIAS, cascbias);
20808 }
20809 }
20810
20811 udelay(50);
20812
20813 wlc_phy_radio205x_vcocal_nphy(pi);
20814 }
20815
20816 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20817 {
20818 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20819 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20820 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20821 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20822 (1 << 2));
20823 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20824 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20825 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20826 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20827 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20828 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20829 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20830 }
20831
20832 udelay(300);
20833 }
20834
20835 static void
20836 wlc_phy_chanspec_radio2057_setup(
20837 struct brcms_phy *pi,
20838 const struct chan_info_nphy_radio2057 *ci,
20839 const struct chan_info_nphy_radio2057_rev5 *
20840 ci2)
20841 {
20842 int coreNum;
20843 u16 txmix2g_tune_boost_pu = 0;
20844 u16 pad2g_tune_pus = 0;
20845
20846 if (pi->pubpi.radiorev == 5) {
20847
20848 write_radio_reg(pi,
20849 RADIO_2057_VCOCAL_COUNTVAL0,
20850 ci2->RF_vcocal_countval0);
20851 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20852 ci2->RF_vcocal_countval1);
20853 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20854 ci2->RF_rfpll_refmaster_sparextalsize);
20855 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20856 ci2->RF_rfpll_loopfilter_r1);
20857 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20858 ci2->RF_rfpll_loopfilter_c2);
20859 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20860 ci2->RF_rfpll_loopfilter_c1);
20861 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20862 ci2->RF_cp_kpd_idac);
20863 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20864 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20865 write_radio_reg(pi,
20866 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20867 write_radio_reg(pi,
20868 RADIO_2057_LOGEN_MX2G_TUNE,
20869 ci2->RF_logen_mx2g_tune);
20870 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20871 ci2->RF_logen_indbuf2g_tune);
20872
20873 write_radio_reg(pi,
20874 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20875 ci2->RF_txmix2g_tune_boost_pu_core0);
20876 write_radio_reg(pi,
20877 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20878 ci2->RF_pad2g_tune_pus_core0);
20879 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20880 ci2->RF_lna2g_tune_core0);
20881
20882 write_radio_reg(pi,
20883 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20884 ci2->RF_txmix2g_tune_boost_pu_core1);
20885 write_radio_reg(pi,
20886 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20887 ci2->RF_pad2g_tune_pus_core1);
20888 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20889 ci2->RF_lna2g_tune_core1);
20890
20891 } else {
20892
20893 write_radio_reg(pi,
20894 RADIO_2057_VCOCAL_COUNTVAL0,
20895 ci->RF_vcocal_countval0);
20896 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20897 ci->RF_vcocal_countval1);
20898 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20899 ci->RF_rfpll_refmaster_sparextalsize);
20900 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20901 ci->RF_rfpll_loopfilter_r1);
20902 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20903 ci->RF_rfpll_loopfilter_c2);
20904 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20905 ci->RF_rfpll_loopfilter_c1);
20906 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20907 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20908 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20909 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20910 write_radio_reg(pi,
20911 RADIO_2057_LOGEN_MX2G_TUNE,
20912 ci->RF_logen_mx2g_tune);
20913 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20914 ci->RF_logen_mx5g_tune);
20915 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20916 ci->RF_logen_indbuf2g_tune);
20917 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20918 ci->RF_logen_indbuf5g_tune);
20919
20920 write_radio_reg(pi,
20921 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20922 ci->RF_txmix2g_tune_boost_pu_core0);
20923 write_radio_reg(pi,
20924 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20925 ci->RF_pad2g_tune_pus_core0);
20926 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20927 ci->RF_pga_boost_tune_core0);
20928 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20929 ci->RF_txmix5g_boost_tune_core0);
20930 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20931 ci->RF_pad5g_tune_misc_pus_core0);
20932 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20933 ci->RF_lna2g_tune_core0);
20934 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20935 ci->RF_lna5g_tune_core0);
20936
20937 write_radio_reg(pi,
20938 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20939 ci->RF_txmix2g_tune_boost_pu_core1);
20940 write_radio_reg(pi,
20941 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20942 ci->RF_pad2g_tune_pus_core1);
20943 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20944 ci->RF_pga_boost_tune_core1);
20945 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20946 ci->RF_txmix5g_boost_tune_core1);
20947 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20948 ci->RF_pad5g_tune_misc_pus_core1);
20949 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20950 ci->RF_lna2g_tune_core1);
20951 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20952 ci->RF_lna5g_tune_core1);
20953 }
20954
20955 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20956
20957 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20958 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20959 0x3f);
20960 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20961 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20962 0x8);
20963 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20964 0x8);
20965 } else {
20966 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20967 0x1f);
20968 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20969 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20970 0x8);
20971 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20972 0x8);
20973 }
20974 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20975 (pi->pubpi.radiorev == 8)) {
20976
20977 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20978 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20979 0x1b);
20980 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20981 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20982 0xa);
20983 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20984 0xa);
20985 } else {
20986 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20987 0x1f);
20988 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20989 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20990 0x8);
20991 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20992 0x8);
20993 }
20994
20995 }
20996
20997 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20998 if (PHY_IPA(pi)) {
20999 if (pi->pubpi.radiorev == 3)
21000 txmix2g_tune_boost_pu = 0x6b;
21001
21002 if (pi->pubpi.radiorev == 5)
21003 pad2g_tune_pus = 0x73;
21004
21005 } else {
21006 if (pi->pubpi.radiorev != 5) {
21007 pad2g_tune_pus = 0x3;
21008
21009 txmix2g_tune_boost_pu = 0x61;
21010 }
21011 }
21012
21013 for (coreNum = 0; coreNum <= 1; coreNum++) {
21014
21015 if (txmix2g_tune_boost_pu != 0)
21016 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21017 TXMIX2G_TUNE_BOOST_PU,
21018 txmix2g_tune_boost_pu);
21019
21020 if (pad2g_tune_pus != 0)
21021 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21022 PAD2G_TUNE_PUS,
21023 pad2g_tune_pus);
21024 }
21025 }
21026
21027 udelay(50);
21028
21029 wlc_phy_radio205x_vcocal_nphy(pi);
21030 }
21031
21032 static void
21033 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21034 const struct nphy_sfo_cfg *ci)
21035 {
21036 u16 val;
21037
21038 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21039 if (CHSPEC_IS5G(chanspec) && !val) {
21040
21041 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21042 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21043 (val | MAC_PHY_FORCE_CLK));
21044
21045 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21046 (BBCFG_RESETCCA | BBCFG_RESETRX));
21047
21048 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21049
21050 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21051 } else if (!CHSPEC_IS5G(chanspec) && val) {
21052
21053 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21054
21055 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21056 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21057 (val | MAC_PHY_FORCE_CLK));
21058
21059 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21060 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21061
21062 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21063 }
21064
21065 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21066 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21067 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21068
21069 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21070 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21071 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21072
21073 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21074 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21075
21076 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21077 } else {
21078 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21079 NPHY_ClassifierCtrl_ofdm_en);
21080
21081 if (CHSPEC_IS2G(chanspec))
21082 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21083 }
21084
21085 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21086 wlc_phy_txpwr_fixpower_nphy(pi);
21087
21088 if (NREV_LT(pi->pubpi.phy_rev, 3))
21089 wlc_phy_adjust_lnagaintbl_nphy(pi);
21090
21091 wlc_phy_txlpfbw_nphy(pi);
21092
21093 if (NREV_GE(pi->pubpi.phy_rev, 3)
21094 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21095 u8 spuravoid = 0;
21096
21097 val = CHSPEC_CHANNEL(chanspec);
21098 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21099 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21100 if ((val == 13) || (val == 14) || (val == 153))
21101 spuravoid = 1;
21102 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21103 || (val == 14)) {
21104 spuravoid = 1;
21105 }
21106 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21107 if (val == 54)
21108 spuravoid = 1;
21109 } else if (pi->nphy_aband_spurwar_en &&
21110 ((val == 38) || (val == 102) || (val == 118))) {
21111 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21112 && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21113 spuravoid = 0;
21114 } else {
21115 spuravoid = 1;
21116 }
21117 }
21118
21119 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21120 spuravoid = 1;
21121
21122 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21123 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21124 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21125 spuravoid);
21126 } else {
21127 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21128 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21129 spuravoid);
21130 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21131 }
21132
21133 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21134 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21135 if (spuravoid == 1) {
21136 bcma_write16(pi->d11core,
21137 D11REGOFFS(tsf_clk_frac_l),
21138 0x5341);
21139 bcma_write16(pi->d11core,
21140 D11REGOFFS(tsf_clk_frac_h), 0x8);
21141 } else {
21142 bcma_write16(pi->d11core,
21143 D11REGOFFS(tsf_clk_frac_l),
21144 0x8889);
21145 bcma_write16(pi->d11core,
21146 D11REGOFFS(tsf_clk_frac_h), 0x8);
21147 }
21148 }
21149
21150 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21151 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21152 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21153
21154 mod_phy_reg(pi, 0x01, (0x1 << 15),
21155 ((spuravoid > 0) ? (0x1 << 15) : 0));
21156
21157 wlc_phy_resetcca_nphy(pi);
21158
21159 pi->phy_isspuravoid = (spuravoid > 0);
21160 }
21161
21162 if (NREV_LT(pi->pubpi.phy_rev, 7))
21163 write_phy_reg(pi, 0x17e, 0x3830);
21164
21165 wlc_phy_spurwar_nphy(pi);
21166 }
21167
21168 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21169 {
21170 int freq;
21171 const struct chan_info_nphy_radio2057 *t0 = NULL;
21172 const struct chan_info_nphy_radio205x *t1 = NULL;
21173 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21174 const struct chan_info_nphy_2055 *t3 = NULL;
21175
21176 if (!wlc_phy_chan2freq_nphy
21177 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21178 return;
21179
21180 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21181
21182 if (CHSPEC_BW(chanspec) != pi->bw)
21183 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21184
21185 if (CHSPEC_IS40(chanspec)) {
21186 if (CHSPEC_SB_UPPER(chanspec)) {
21187 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21188 if (NREV_GE(pi->pubpi.phy_rev, 7))
21189 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21190 } else {
21191 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21192 if (NREV_GE(pi->pubpi.phy_rev, 7))
21193 and_phy_reg(pi, 0x310,
21194 (~PRIM_SEL_UP20 & 0xffff));
21195 }
21196 }
21197
21198 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21199 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21200
21201 if ((pi->pubpi.radiorev <= 4)
21202 || (pi->pubpi.radiorev == 6)) {
21203 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21204 0x2,
21205 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21206 : 0));
21207 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21208 0x2,
21209 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21210 : 0));
21211 }
21212
21213 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21214 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21215 (pi->pubpi.radiorev == 5) ?
21216 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21217 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21218
21219 } else {
21220
21221 mod_radio_reg(pi,
21222 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21223 0x4,
21224 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21225 wlc_phy_chanspec_radio2056_setup(pi, t1);
21226
21227 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21228 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21229 }
21230
21231 } else {
21232
21233 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21234 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21235 : (0x05 << 4)));
21236
21237 wlc_phy_chanspec_radio2055_setup(pi, t3);
21238 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21239 (const struct nphy_sfo_cfg *)
21240 &(t3->PHY_BW1a));
21241 }
21242
21243 }
21244
21245 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21246 {
21247 struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21248 u16 mask = 0xfc00;
21249 u32 mc = 0;
21250
21251 if (NREV_GE(pi->pubpi.phy_rev, 7))
21252 return;
21253
21254 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21255 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21256
21257 if (!lut_init)
21258 return;
21259
21260 if (pi->srom_fem2g.antswctrllut == 0) {
21261 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21262 1, 0x02, 16, &v0);
21263 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264 1, 0x03, 16, &v1);
21265 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21266 1, 0x08, 16, &v2);
21267 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21268 1, 0x0C, 16, &v3);
21269 }
21270
21271 if (pi->srom_fem5g.antswctrllut == 0) {
21272 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273 1, 0x12, 16, &v0);
21274 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275 1, 0x13, 16, &v1);
21276 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21277 1, 0x18, 16, &v2);
21278 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21279 1, 0x1C, 16, &v3);
21280 }
21281 } else {
21282
21283 write_phy_reg(pi, 0xc8, 0x0);
21284 write_phy_reg(pi, 0xc9, 0x0);
21285
21286 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21287
21288 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21289 mc &= ~MCTL_GPOUT_SEL_MASK;
21290 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21291
21292 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21293
21294 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21295
21296 if (lut_init) {
21297 write_phy_reg(pi, 0xf8, 0x02d8);
21298 write_phy_reg(pi, 0xf9, 0x0301);
21299 write_phy_reg(pi, 0xfa, 0x02d8);
21300 write_phy_reg(pi, 0xfb, 0x0301);
21301 }
21302 }
21303 }
21304
21305 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21306 {
21307 u16 curr_ctl, new_ctl;
21308 bool suspended = false;
21309
21310 if (D11REV_IS(pi->sh->corerev, 16)) {
21311 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21312 MCTL_EN_MAC) ? false : true;
21313 if (!suspended)
21314 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21315 }
21316
21317 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21318
21319 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21320
21321 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21322
21323 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21324 wlapi_enable_mac(pi->sh->physhim);
21325
21326 return new_ctl;
21327 }
21328
21329 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21330 {
21331 u16 trigger_mask, status_mask;
21332 u16 orig_RfseqCoreActv;
21333
21334 switch (cmd) {
21335 case NPHY_RFSEQ_RX2TX:
21336 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21337 status_mask = NPHY_RfseqStatus_rx2tx;
21338 break;
21339 case NPHY_RFSEQ_TX2RX:
21340 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21341 status_mask = NPHY_RfseqStatus_tx2rx;
21342 break;
21343 case NPHY_RFSEQ_RESET2RX:
21344 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21345 status_mask = NPHY_RfseqStatus_reset2rx;
21346 break;
21347 case NPHY_RFSEQ_UPDATEGAINH:
21348 trigger_mask = NPHY_RfseqTrigger_updategainh;
21349 status_mask = NPHY_RfseqStatus_updategainh;
21350 break;
21351 case NPHY_RFSEQ_UPDATEGAINL:
21352 trigger_mask = NPHY_RfseqTrigger_updategainl;
21353 status_mask = NPHY_RfseqStatus_updategainl;
21354 break;
21355 case NPHY_RFSEQ_UPDATEGAINU:
21356 trigger_mask = NPHY_RfseqTrigger_updategainu;
21357 status_mask = NPHY_RfseqStatus_updategainu;
21358 break;
21359 default:
21360 return;
21361 }
21362
21363 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21364 or_phy_reg(pi, 0xa1,
21365 (NPHY_RfseqMode_CoreActv_override |
21366 NPHY_RfseqMode_Trigger_override));
21367 or_phy_reg(pi, 0xa3, trigger_mask);
21368 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21369 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21370 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21371 }
21372
21373 static void
21374 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21375 u8 core_mask, u8 off)
21376 {
21377 u16 rfmxgain = 0, lpfgain = 0;
21378 u16 tgain = 0;
21379
21380 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21381
21382 switch (cmd) {
21383 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21384 wlc_phy_rfctrl_override_nphy_rev7(
21385 pi, (0x1 << 5),
21386 value, core_mask, off,
21387 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388 wlc_phy_rfctrl_override_nphy_rev7(
21389 pi, (0x1 << 4), value,
21390 core_mask, off,
21391 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21392 wlc_phy_rfctrl_override_nphy_rev7(
21393 pi, (0x1 << 3), value,
21394 core_mask, off,
21395 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21396 break;
21397 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21398 wlc_phy_rfctrl_override_nphy_rev7(
21399 pi, (0x1 << 2),
21400 value, core_mask, off,
21401 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402 wlc_phy_rfctrl_override_nphy_rev7(
21403 pi, (0x1 << 1), value,
21404 core_mask, off,
21405 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21406 wlc_phy_rfctrl_override_nphy_rev7(
21407 pi, (0x1 << 0), value,
21408 core_mask, off,
21409 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21410 wlc_phy_rfctrl_override_nphy_rev7(
21411 pi, (0x1 << 1), value,
21412 core_mask, off,
21413 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21414 wlc_phy_rfctrl_override_nphy_rev7(
21415 pi, (0x1 << 11), 0,
21416 core_mask, off,
21417 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21418 break;
21419 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21420 wlc_phy_rfctrl_override_nphy_rev7(
21421 pi, (0x1 << 2),
21422 value, core_mask, off,
21423 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21424 wlc_phy_rfctrl_override_nphy_rev7(
21425 pi, (0x1 << 1), value,
21426 core_mask, off,
21427 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21428 wlc_phy_rfctrl_override_nphy_rev7(
21429 pi, (0x1 << 0), value,
21430 core_mask, off,
21431 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21432 wlc_phy_rfctrl_override_nphy_rev7(
21433 pi, (0x1 << 2), value,
21434 core_mask, off,
21435 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21436 wlc_phy_rfctrl_override_nphy_rev7(
21437 pi, (0x1 << 11), 1,
21438 core_mask, off,
21439 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21440 break;
21441 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21442 rfmxgain = value & 0x000ff;
21443 lpfgain = value & 0x0ff00;
21444 lpfgain = lpfgain >> 8;
21445
21446 wlc_phy_rfctrl_override_nphy_rev7(
21447 pi, (0x1 << 11),
21448 rfmxgain, core_mask,
21449 off,
21450 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21451 wlc_phy_rfctrl_override_nphy_rev7(
21452 pi, (0x3 << 13),
21453 lpfgain, core_mask,
21454 off,
21455 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21456 break;
21457 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21458 tgain = value & 0x7fff;
21459 lpfgain = value & 0x8000;
21460 lpfgain = lpfgain >> 14;
21461
21462 wlc_phy_rfctrl_override_nphy_rev7(
21463 pi, (0x1 << 12),
21464 tgain, core_mask, off,
21465 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21466 wlc_phy_rfctrl_override_nphy_rev7(
21467 pi, (0x1 << 13),
21468 lpfgain, core_mask,
21469 off,
21470 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21471 break;
21472 }
21473 }
21474 }
21475
21476 static void
21477 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21478 u8 coresel, u8 rail, u8 rssi_type)
21479 {
21480 u16 valuetostuff;
21481
21482 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21483 NPHY_RSSICAL_MAXREAD : offset;
21484 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21485 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21486
21487 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21488
21489 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21490 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21491 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21492 write_phy_reg(pi, 0x1a6, valuetostuff);
21493
21494 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21495 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21496 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21497 write_phy_reg(pi, 0x1ac, valuetostuff);
21498
21499 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21500 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21501 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21502 write_phy_reg(pi, 0x1b2, valuetostuff);
21503
21504 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21505 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21506 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21507 write_phy_reg(pi, 0x1b8, valuetostuff);
21508
21509 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21510 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21511 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21512 write_phy_reg(pi, 0x1a4, valuetostuff);
21513
21514 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21515 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21516 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21517 write_phy_reg(pi, 0x1aa, valuetostuff);
21518
21519 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21520 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21521 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21522 write_phy_reg(pi, 0x1b0, valuetostuff);
21523
21524 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21525 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21526 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21527 write_phy_reg(pi, 0x1b6, valuetostuff);
21528
21529 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21530 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21531 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21532 write_phy_reg(pi, 0x1a5, valuetostuff);
21533 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21534 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21535 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21536 write_phy_reg(pi, 0x1ab, valuetostuff);
21537
21538 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21539 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21540 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21541 write_phy_reg(pi, 0x1b1, valuetostuff);
21542
21543 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21544 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21545 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21546 write_phy_reg(pi, 0x1b7, valuetostuff);
21547
21548 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21549 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551 write_phy_reg(pi, 0x1a7, valuetostuff);
21552 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21553 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555 write_phy_reg(pi, 0x1ad, valuetostuff);
21556 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21557 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21558 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21559 write_phy_reg(pi, 0x1b3, valuetostuff);
21560 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21561 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21562 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21563 write_phy_reg(pi, 0x1b9, valuetostuff);
21564
21565 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21566 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21567 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21568 write_phy_reg(pi, 0x1a8, valuetostuff);
21569
21570 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21571 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21572 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21573 write_phy_reg(pi, 0x1ae, valuetostuff);
21574
21575 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21576 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21577 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21578 write_phy_reg(pi, 0x1b4, valuetostuff);
21579
21580 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21581 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21582 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21583 write_phy_reg(pi, 0x1ba, valuetostuff);
21584
21585 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21586 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21587 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21588 write_phy_reg(pi, 0x1a9, valuetostuff);
21589 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21590 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21591 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21592 write_phy_reg(pi, 0x1b5, valuetostuff);
21593
21594 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21595 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21596 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21597 write_phy_reg(pi, 0x1af, valuetostuff);
21598
21599 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21600 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21601 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21602 write_phy_reg(pi, 0x1bb, valuetostuff);
21603 }
21604
21605 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21606 {
21607 if (PHY_IPA(pi)) {
21608 if (NREV_GE(pi->pubpi.phy_rev, 7))
21609 write_radio_reg(pi,
21610 ((core == PHY_CORE_0) ?
21611 RADIO_2057_TX0_TX_SSI_MUX :
21612 RADIO_2057_TX1_TX_SSI_MUX),
21613 (CHSPEC_IS5G(pi->radio_chanspec) ?
21614 0xc : 0xe));
21615 else
21616 write_radio_reg(pi,
21617 RADIO_2056_TX_TX_SSI_MUX |
21618 ((core == PHY_CORE_0) ?
21619 RADIO_2056_TX0 : RADIO_2056_TX1),
21620 (CHSPEC_IS5G(pi->radio_chanspec) ?
21621 0xc : 0xe));
21622 } else {
21623 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21624 write_radio_reg(pi,
21625 ((core == PHY_CORE_0) ?
21626 RADIO_2057_TX0_TX_SSI_MUX :
21627 RADIO_2057_TX1_TX_SSI_MUX),
21628 0x11);
21629
21630 if (pi->pubpi.radioid == BCM2057_ID)
21631 write_radio_reg(pi,
21632 RADIO_2057_IQTEST_SEL_PU, 0x1);
21633
21634 } else {
21635 write_radio_reg(pi,
21636 RADIO_2056_TX_TX_SSI_MUX |
21637 ((core == PHY_CORE_0) ?
21638 RADIO_2056_TX0 : RADIO_2056_TX1),
21639 0x11);
21640 }
21641 }
21642 }
21643
21644 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21645 {
21646 u16 mask, val;
21647 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21648 startseq;
21649 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21650 rfctrlovr_trigger_val;
21651 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21652 u16 rfctrlcmd_val, rfctrlovr_val;
21653 u8 core;
21654
21655 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21656 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21657 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21658 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21659
21660 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21661 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21662
21663 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21664 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21665
21666 mask = (0x1 << 2) |
21667 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21668 mod_phy_reg(pi, 0xf9, mask, 0);
21669 mod_phy_reg(pi, 0xfb, mask, 0);
21670
21671 } else {
21672 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21673 if (core_code == RADIO_MIMO_CORESEL_CORE1
21674 && core == PHY_CORE_1)
21675 continue;
21676 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21677 && core == PHY_CORE_0)
21678 continue;
21679
21680 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21681 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21682
21683 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21684 rssi_type == NPHY_RSSI_SEL_W2 ||
21685 rssi_type == NPHY_RSSI_SEL_NB) {
21686 mod_phy_reg(pi,
21687 (core ==
21688 PHY_CORE_0) ? 0xa6 : 0xa7,
21689 (0x3 << 8), 0);
21690
21691 mask = (0x1 << 2) |
21692 (0x1 << 3) |
21693 (0x1 << 4) | (0x1 << 5);
21694 mod_phy_reg(pi,
21695 (core ==
21696 PHY_CORE_0) ? 0xf9 : 0xfb,
21697 mask, 0);
21698
21699 if (rssi_type == NPHY_RSSI_SEL_W1) {
21700 if (CHSPEC_IS5G(
21701 pi->radio_chanspec)) {
21702 mask = (0x1 << 2);
21703 val = 1 << 2;
21704 } else {
21705 mask = (0x1 << 3);
21706 val = 1 << 3;
21707 }
21708 } else if (rssi_type ==
21709 NPHY_RSSI_SEL_W2) {
21710 mask = (0x1 << 4);
21711 val = 1 << 4;
21712 } else {
21713 mask = (0x1 << 5);
21714 val = 1 << 5;
21715 }
21716 mod_phy_reg(pi,
21717 (core ==
21718 PHY_CORE_0) ? 0xf9 : 0xfb,
21719 mask, val);
21720
21721 mask = (0x1 << 5);
21722 val = 1 << 5;
21723 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21724 0xe5 : 0xe6, mask, val);
21725 } else {
21726 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21727 mask = (0x3 << 8);
21728 val = 1 << 8;
21729 mod_phy_reg(pi,
21730 (core ==
21731 PHY_CORE_0) ? 0xa6
21732 : 0xa7, mask, val);
21733 mask = (0x3 << 10);
21734 val = 1 << 10;
21735 mod_phy_reg(pi,
21736 (core ==
21737 PHY_CORE_0) ? 0xa6
21738 : 0xa7, mask, val);
21739 } else if (rssi_type ==
21740 NPHY_RSSI_SEL_IQ) {
21741 mask = (0x3 << 8);
21742 val = 2 << 8;
21743 mod_phy_reg(pi,
21744 (core ==
21745 PHY_CORE_0) ? 0xa6
21746 : 0xa7, mask, val);
21747 mask = (0x3 << 10);
21748 val = 2 << 10;
21749 mod_phy_reg(pi,
21750 (core ==
21751 PHY_CORE_0) ? 0xa6
21752 : 0xa7, mask, val);
21753 } else {
21754 mask = (0x3 << 8);
21755 val = 3 << 8;
21756 mod_phy_reg(pi,
21757 (core ==
21758 PHY_CORE_0) ? 0xa6
21759 : 0xa7, mask, val);
21760 mask = (0x3 << 10);
21761 val = 3 << 10;
21762 mod_phy_reg(pi,
21763 (core ==
21764 PHY_CORE_0) ? 0xa6
21765 : 0xa7, mask, val);
21766 brcms_phy_wr_tx_mux(pi, core);
21767 afectrlovr_rssi_val = 1 << 9;
21768 mod_phy_reg(pi,
21769 (core ==
21770 PHY_CORE_0) ? 0x8f
21771 : 0xa5, (0x1 << 9),
21772 afectrlovr_rssi_val);
21773 }
21774 }
21775 }
21776 }
21777 } else {
21778
21779 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21780 (rssi_type == NPHY_RSSI_SEL_W2) ||
21781 (rssi_type == NPHY_RSSI_SEL_NB))
21782 val = 0x0;
21783 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21784 val = 0x1;
21785 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21786 val = 0x2;
21787 else
21788 val = 0x3;
21789
21790 mask = ((0x3 << 12) | (0x3 << 14));
21791 val = (val << 12) | (val << 14);
21792 mod_phy_reg(pi, 0xa6, mask, val);
21793 mod_phy_reg(pi, 0xa7, mask, val);
21794
21795 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21796 (rssi_type == NPHY_RSSI_SEL_W2) ||
21797 (rssi_type == NPHY_RSSI_SEL_NB)) {
21798 if (rssi_type == NPHY_RSSI_SEL_W1)
21799 val = 0x1;
21800 if (rssi_type == NPHY_RSSI_SEL_W2)
21801 val = 0x2;
21802 if (rssi_type == NPHY_RSSI_SEL_NB)
21803 val = 0x3;
21804
21805 mask = (0x3 << 4);
21806 val = (val << 4);
21807 mod_phy_reg(pi, 0x7a, mask, val);
21808 mod_phy_reg(pi, 0x7d, mask, val);
21809 }
21810
21811 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21812 afectrlovr_rssi_val = 0;
21813 rfctrlcmd_rxen_val = 0;
21814 rfctrlcmd_coresel_val = 0;
21815 rfctrlovr_rssi_val = 0;
21816 rfctrlovr_rxen_val = 0;
21817 rfctrlovr_coresel_val = 0;
21818 rfctrlovr_trigger_val = 0;
21819 startseq = 0;
21820 } else {
21821 afectrlovr_rssi_val = 1;
21822 rfctrlcmd_rxen_val = 1;
21823 rfctrlcmd_coresel_val = core_code;
21824 rfctrlovr_rssi_val = 1;
21825 rfctrlovr_rxen_val = 1;
21826 rfctrlovr_coresel_val = 1;
21827 rfctrlovr_trigger_val = 1;
21828 startseq = 1;
21829 }
21830
21831 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21832 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21833 12) | (afectrlovr_rssi_val << 13);
21834 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21835 afectrlovr_rssi_val);
21836
21837 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21838 (rssi_type == NPHY_RSSI_SEL_W2) ||
21839 (rssi_type == NPHY_RSSI_SEL_NB)) {
21840 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21841 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21842 (rfctrlcmd_coresel_val << 3);
21843
21844 rfctrlovr_mask = ((0x1 << 5) |
21845 (0x1 << 12) |
21846 (0x1 << 1) | (0x1 << 0));
21847 rfctrlovr_val = (rfctrlovr_rssi_val <<
21848 5) |
21849 (rfctrlovr_rxen_val << 12) |
21850 (rfctrlovr_coresel_val << 1) |
21851 (rfctrlovr_trigger_val << 0);
21852
21853 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21854 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21855
21856 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21857 udelay(20);
21858
21859 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21860 }
21861 }
21862 }
21863
21864 int
21865 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21866 u8 nsamps)
21867 {
21868 s16 rssi0, rssi1;
21869 u16 afectrlCore1_save = 0;
21870 u16 afectrlCore2_save = 0;
21871 u16 afectrlOverride1_save = 0;
21872 u16 afectrlOverride2_save = 0;
21873 u16 rfctrlOverrideAux0_save = 0;
21874 u16 rfctrlOverrideAux1_save = 0;
21875 u16 rfctrlMiscReg1_save = 0;
21876 u16 rfctrlMiscReg2_save = 0;
21877 u16 rfctrlcmd_save = 0;
21878 u16 rfctrloverride_save = 0;
21879 u16 rfctrlrssiothers1_save = 0;
21880 u16 rfctrlrssiothers2_save = 0;
21881 s8 tmp_buf[4];
21882 u8 ctr = 0, samp = 0;
21883 s32 rssi_out_val;
21884 u16 gpiosel_orig;
21885
21886 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21887 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21888 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21889 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21890 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21891 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21892 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21893 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21894 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21895 } else {
21896 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21897 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21898 rfctrloverride_save = read_phy_reg(pi, 0xec);
21899 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21900 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21901 }
21902
21903 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21904
21905 gpiosel_orig = read_phy_reg(pi, 0xca);
21906 if (NREV_LT(pi->pubpi.phy_rev, 2))
21907 write_phy_reg(pi, 0xca, 5);
21908
21909 for (ctr = 0; ctr < 4; ctr++)
21910 rssi_buf[ctr] = 0;
21911
21912 for (samp = 0; samp < nsamps; samp++) {
21913 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21914 rssi0 = read_phy_reg(pi, 0x1c9);
21915 rssi1 = read_phy_reg(pi, 0x1ca);
21916 } else {
21917 rssi0 = read_phy_reg(pi, 0x219);
21918 rssi1 = read_phy_reg(pi, 0x21a);
21919 }
21920
21921 ctr = 0;
21922 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21923 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21924 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21925 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21926
21927 for (ctr = 0; ctr < 4; ctr++)
21928 rssi_buf[ctr] += tmp_buf[ctr];
21929
21930 }
21931
21932 rssi_out_val = rssi_buf[3] & 0xff;
21933 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21934 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21935 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21936
21937 if (NREV_LT(pi->pubpi.phy_rev, 2))
21938 write_phy_reg(pi, 0xca, gpiosel_orig);
21939
21940 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21941 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21942 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21943 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21944 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21945 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21946 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21947 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21948 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21949 } else {
21950 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21951 write_phy_reg(pi, 0x78, rfctrlcmd_save);
21952 write_phy_reg(pi, 0xec, rfctrloverride_save);
21953 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21954 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21955 }
21956
21957 return rssi_out_val;
21958 }
21959
21960 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21961 {
21962 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21963 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21964 u16 pwrdet_rxtx_core1_save;
21965 u16 pwrdet_rxtx_core2_save;
21966 u16 afectrlCore1_save;
21967 u16 afectrlCore2_save;
21968 u16 afectrlOverride_save;
21969 u16 afectrlOverride2_save;
21970 u16 pd_pll_ts_save;
21971 u16 gpioSel_save;
21972 s32 radio_temp[4];
21973 s32 radio_temp2[4];
21974 u16 syn_tempprocsense_save;
21975 s16 offset = 0;
21976
21977 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21978 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21979 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21980 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21981 s32 auxADC_Vl;
21982 u16 RfctrlOverride5_save, RfctrlOverride6_save;
21983 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
21984 u16 RSSIMultCoef0QPowerDet_save;
21985 u16 tempsense_Rcal;
21986
21987 syn_tempprocsense_save =
21988 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21989
21990 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21991 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21992 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21993 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21994 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21995 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21996 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21997 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21998 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21999
22000 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22001 &auxADC_Vmid_save);
22002 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22003 &auxADC_Av_save);
22004 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22005 &auxADC_rssi_ctrlL_save);
22006 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22007 &auxADC_rssi_ctrlH_save);
22008
22009 write_phy_reg(pi, 0x1ae, 0x0);
22010
22011 auxADC_rssi_ctrlL = 0x0;
22012 auxADC_rssi_ctrlH = 0x20;
22013 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22014 &auxADC_rssi_ctrlL);
22015 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22016 &auxADC_rssi_ctrlH);
22017
22018 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22019
22020 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22021 tempsense_Rcal | 0x01);
22022
22023 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22024 1, 0, 0,
22025 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22026 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22027 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22028 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22029 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22030
22031 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22032 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22033 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22034 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22035 udelay(5);
22036 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22037 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22038 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22039 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22040 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22041 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22042 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22043 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22044 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22045 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22046
22047 auxADC_Vmid = 0xA3;
22048 auxADC_Av = 0x0;
22049 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22050 &auxADC_Vmid);
22051 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22052 &auxADC_Av);
22053
22054 udelay(3);
22055
22056 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22057 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22058 tempsense_Rcal | 0x03);
22059
22060 udelay(5);
22061 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22062
22063 auxADC_Av = 0x7;
22064 if (radio_temp[1] + radio_temp2[1] < -30) {
22065 auxADC_Vmid = 0x45;
22066 auxADC_Vl = 263;
22067 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22068 auxADC_Vmid = 0x200;
22069 auxADC_Vl = 467;
22070 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22071 auxADC_Vmid = 0x266;
22072 auxADC_Vl = 634;
22073 } else {
22074 auxADC_Vmid = 0x2D5;
22075 auxADC_Vl = 816;
22076 }
22077
22078 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22079 &auxADC_Vmid);
22080 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22081 &auxADC_Av);
22082
22083 udelay(3);
22084
22085 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22086 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22087 tempsense_Rcal | 0x01);
22088
22089 udelay(5);
22090 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22091
22092 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22093 syn_tempprocsense_save);
22094
22095 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22096 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22097 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22098 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22099 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22100 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22101 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22102 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22103 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22104
22105 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22106 &auxADC_Vmid_save);
22107 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22108 &auxADC_Av_save);
22109 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22110 &auxADC_rssi_ctrlL_save);
22111 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22112 &auxADC_rssi_ctrlH_save);
22113
22114 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22115 radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22116 + 88 * (auxADC_Vl) - 27111 +
22117 128) / 256;
22118 } else {
22119 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22120 + 82 * (auxADC_Vl) - 28861 +
22121 128) / 256;
22122 }
22123
22124 offset = (s16) pi->phy_tempsense_offset;
22125
22126 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22127 syn_tempprocsense_save =
22128 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22129
22130 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22131 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22132 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22133 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22134 gpioSel_save = read_phy_reg(pi, 0xca);
22135
22136 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22137
22138 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22139 if (NREV_LT(pi->pubpi.phy_rev, 7))
22140 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22141
22142 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22143 if (NREV_GE(pi->pubpi.phy_rev, 7))
22144 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22145 else
22146 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22147
22148 radio_temp[0] =
22149 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22150
22151 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22152 syn_tempprocsense_save);
22153
22154 write_phy_reg(pi, 0xca, gpioSel_save);
22155 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22156 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22157 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22158 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22159
22160 offset = (s16) pi->phy_tempsense_offset;
22161 } else {
22162
22163 pwrdet_rxtx_core1_save =
22164 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22165 pwrdet_rxtx_core2_save =
22166 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22167 core1_txrf_iqcal1_save =
22168 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22169 core1_txrf_iqcal2_save =
22170 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22171 core2_txrf_iqcal1_save =
22172 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22173 core2_txrf_iqcal2_save =
22174 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22175 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22176
22177 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22178 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22179 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22180 gpioSel_save = read_phy_reg(pi, 0xca);
22181
22182 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22183 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22184 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22185 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22186 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22187 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22188 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22189
22190 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22191 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22192
22193 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22194 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22195
22196 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22197 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22198
22199 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22200 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22201 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22202 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22203
22204 radio_temp[0] =
22205 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22206 radio_temp[3]);
22207
22208 radio_temp[0] =
22209 (radio_temp[0] +
22210 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22211
22212 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22213
22214 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22215 pwrdet_rxtx_core1_save);
22216 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22217 pwrdet_rxtx_core2_save);
22218 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22219 core1_txrf_iqcal1_save);
22220 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22221 core2_txrf_iqcal1_save);
22222 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22223 core1_txrf_iqcal2_save);
22224 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22225 core2_txrf_iqcal2_save);
22226 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22227
22228 write_phy_reg(pi, 0xca, gpioSel_save);
22229 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22230 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22231 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22232 }
22233
22234 return (s16) radio_temp[0] + offset;
22235 }
22236
22237 static void
22238 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22239 {
22240 u8 core;
22241
22242 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22243 if (rssi_type == NPHY_RSSI_SEL_NB) {
22244 if (core == PHY_CORE_0) {
22245 mod_radio_reg(pi,
22246 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22247 RADIO_2055_NBRSSI_VCM_I_MASK,
22248 vcm_buf[2 *
22249 core] <<
22250 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22251 mod_radio_reg(pi,
22252 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22253 RADIO_2055_NBRSSI_VCM_Q_MASK,
22254 vcm_buf[2 * core +
22255 1] <<
22256 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22257 } else {
22258 mod_radio_reg(pi,
22259 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22260 RADIO_2055_NBRSSI_VCM_I_MASK,
22261 vcm_buf[2 *
22262 core] <<
22263 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22264 mod_radio_reg(pi,
22265 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22266 RADIO_2055_NBRSSI_VCM_Q_MASK,
22267 vcm_buf[2 * core +
22268 1] <<
22269 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22270 }
22271 } else {
22272 if (core == PHY_CORE_0)
22273 mod_radio_reg(pi,
22274 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22275 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22276 vcm_buf[2 *
22277 core] <<
22278 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22279 else
22280 mod_radio_reg(pi,
22281 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22282 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22283 vcm_buf[2 *
22284 core] <<
22285 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22286 }
22287 }
22288 }
22289
22290 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22291 {
22292 u16 classif_state;
22293 u16 clip_state[2];
22294 u16 clip_off[] = { 0xffff, 0xffff };
22295 s32 target_code;
22296 u8 vcm, min_vcm;
22297 u8 vcm_final = 0;
22298 u8 result_idx;
22299 s32 poll_results[8][4] = {
22300 {0, 0, 0, 0},
22301 {0, 0, 0, 0},
22302 {0, 0, 0, 0},
22303 {0, 0, 0, 0},
22304 {0, 0, 0, 0},
22305 {0, 0, 0, 0},
22306 {0, 0, 0, 0},
22307 {0, 0, 0, 0}
22308 };
22309 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22310 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22311 s32 fine_digital_offset[4];
22312 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22313 s32 min_poll;
22314 u8 vcm_level_max;
22315 u8 core;
22316 u8 wb_cnt;
22317 u8 rssi_type;
22318 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22319 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22320 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22321 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22322 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22323 u16 NPHY_RfctrlCmd_save;
22324 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22325 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22326 u8 rxcore_state;
22327 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22328 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22329 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22330 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22331
22332 NPHY_REV7_RfctrlOverride3_save =
22333 NPHY_REV7_RfctrlOverride4_save =
22334 NPHY_REV7_RfctrlOverride5_save =
22335 NPHY_REV7_RfctrlOverride6_save =
22336 NPHY_REV7_RfctrlMiscReg3_save =
22337 NPHY_REV7_RfctrlMiscReg4_save =
22338 NPHY_REV7_RfctrlMiscReg5_save =
22339 NPHY_REV7_RfctrlMiscReg6_save = 0;
22340
22341 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22342 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22343 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22344 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22345
22346 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22347 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22348 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22349 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22350 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22351 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22352 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22353 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22354 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22355 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22356 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22357 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22358 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22359 }
22360 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22361 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22362 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22363 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22364 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22365 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22366 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22367 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22368 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22369 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22370 }
22371 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22372 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22373
22374 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22375 RADIO_MIMO_CORESEL_ALLRXTX);
22376 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22377 RADIO_MIMO_CORESEL_ALLRXTX);
22378
22379 if (NREV_GE(pi->pubpi.phy_rev, 7))
22380 wlc_phy_rfctrl_override_1tomany_nphy(
22381 pi,
22382 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22383 0, 0, 0);
22384 else
22385 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22386
22387 if (NREV_GE(pi->pubpi.phy_rev, 7))
22388 wlc_phy_rfctrl_override_1tomany_nphy(
22389 pi,
22390 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22391 1, 0, 0);
22392 else
22393 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22394
22395 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22396 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22397 1, 0, 0,
22398 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22399 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22400 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22401 } else {
22402 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22403 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22404 }
22405
22406 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22407 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22408 wlc_phy_rfctrl_override_nphy_rev7(
22409 pi, (0x1 << 5),
22410 0, 0, 0,
22411 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412 wlc_phy_rfctrl_override_nphy_rev7(
22413 pi, (0x1 << 4), 1, 0,
22414 0,
22415 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22416 } else {
22417 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22418 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22419 }
22420
22421 } else {
22422 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22423 wlc_phy_rfctrl_override_nphy_rev7(
22424 pi, (0x1 << 4),
22425 0, 0, 0,
22426 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427 wlc_phy_rfctrl_override_nphy_rev7(
22428 pi, (0x1 << 5), 1, 0,
22429 0,
22430 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22431 } else {
22432 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22433 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22434 }
22435 }
22436
22437 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22438 (struct brcms_phy_pub *) pi);
22439
22440 vcm_level_max = 8;
22441
22442 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22443
22444 if ((rxcore_state & (1 << core)) == 0)
22445 continue;
22446
22447 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22448 core ==
22449 PHY_CORE_0 ?
22450 RADIO_MIMO_CORESEL_CORE1 :
22451 RADIO_MIMO_CORESEL_CORE2,
22452 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22453 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22454 core ==
22455 PHY_CORE_0 ?
22456 RADIO_MIMO_CORESEL_CORE1 :
22457 RADIO_MIMO_CORESEL_CORE2,
22458 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22459
22460 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22461 if (NREV_GE(pi->pubpi.phy_rev, 7))
22462 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22463 RADIO_2057_NB_MASTER_CORE0 :
22464 RADIO_2057_NB_MASTER_CORE1,
22465 RADIO_2057_VCM_MASK, vcm);
22466 else
22467 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22468 ((core ==
22469 PHY_CORE_0) ? RADIO_2056_RX0 :
22470 RADIO_2056_RX1),
22471 RADIO_2056_VCM_MASK,
22472 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22473
22474 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22475 &poll_results[vcm][0],
22476 NPHY_RSSICAL_NPOLL);
22477 }
22478
22479 for (result_idx = 0; result_idx < 4; result_idx++) {
22480 if ((core == result_idx / 2) &&
22481 (result_idx % 2 == 0)) {
22482
22483 min_d = NPHY_RSSICAL_MAXD;
22484 min_vcm = 0;
22485 min_poll =
22486 NPHY_RSSICAL_MAXREAD *
22487 NPHY_RSSICAL_NPOLL + 1;
22488 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22489 curr_d =
22490 poll_results[vcm][result_idx] *
22491 poll_results[vcm][result_idx] +
22492 poll_results[vcm][result_idx +
22493 1] *
22494 poll_results[vcm][result_idx +
22495 1];
22496 if (curr_d < min_d) {
22497 min_d = curr_d;
22498 min_vcm = vcm;
22499 }
22500 if (poll_results[vcm][result_idx] <
22501 min_poll)
22502 min_poll =
22503 poll_results[vcm]
22504 [result_idx];
22505 }
22506 vcm_final = min_vcm;
22507 poll_results_min[result_idx] = min_poll;
22508 }
22509 }
22510
22511 if (NREV_GE(pi->pubpi.phy_rev, 7))
22512 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22513 RADIO_2057_NB_MASTER_CORE0 :
22514 RADIO_2057_NB_MASTER_CORE1,
22515 RADIO_2057_VCM_MASK, vcm_final);
22516 else
22517 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22518 ((core ==
22519 PHY_CORE_0) ? RADIO_2056_RX0 :
22520 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22521 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22522
22523 for (result_idx = 0; result_idx < 4; result_idx++) {
22524 if (core == result_idx / 2) {
22525 fine_digital_offset[result_idx] =
22526 (NPHY_RSSICAL_NB_TARGET *
22527 NPHY_RSSICAL_NPOLL) -
22528 poll_results[vcm_final][result_idx];
22529 if (fine_digital_offset[result_idx] < 0) {
22530 fine_digital_offset[result_idx] =
22531 abs(fine_digital_offset
22532 [result_idx]);
22533 fine_digital_offset[result_idx] +=
22534 (NPHY_RSSICAL_NPOLL / 2);
22535 fine_digital_offset[result_idx] /=
22536 NPHY_RSSICAL_NPOLL;
22537 fine_digital_offset[result_idx] =
22538 -fine_digital_offset[
22539 result_idx];
22540 } else {
22541 fine_digital_offset[result_idx] +=
22542 (NPHY_RSSICAL_NPOLL / 2);
22543 fine_digital_offset[result_idx] /=
22544 NPHY_RSSICAL_NPOLL;
22545 }
22546
22547 if (poll_results_min[result_idx] ==
22548 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22549 fine_digital_offset[result_idx] =
22550 (NPHY_RSSICAL_NB_TARGET -
22551 NPHY_RSSICAL_MAXREAD - 1);
22552
22553 wlc_phy_scale_offset_rssi_nphy(
22554 pi, 0x0,
22555 (s8)
22556 fine_digital_offset
22557 [result_idx],
22558 (result_idx / 2 == 0) ?
22559 RADIO_MIMO_CORESEL_CORE1 :
22560 RADIO_MIMO_CORESEL_CORE2,
22561 (result_idx % 2 == 0) ?
22562 NPHY_RAIL_I : NPHY_RAIL_Q,
22563 NPHY_RSSI_SEL_NB);
22564 }
22565 }
22566
22567 }
22568
22569 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22570
22571 if ((rxcore_state & (1 << core)) == 0)
22572 continue;
22573
22574 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22575 if (wb_cnt == 0) {
22576 rssi_type = NPHY_RSSI_SEL_W1;
22577 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22578 } else {
22579 rssi_type = NPHY_RSSI_SEL_W2;
22580 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22581 }
22582
22583 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22584 core ==
22585 PHY_CORE_0 ?
22586 RADIO_MIMO_CORESEL_CORE1
22587 :
22588 RADIO_MIMO_CORESEL_CORE2,
22589 NPHY_RAIL_I, rssi_type);
22590 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22591 core ==
22592 PHY_CORE_0 ?
22593 RADIO_MIMO_CORESEL_CORE1
22594 :
22595 RADIO_MIMO_CORESEL_CORE2,
22596 NPHY_RAIL_Q, rssi_type);
22597
22598 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22599 NPHY_RSSICAL_NPOLL);
22600
22601 for (result_idx = 0; result_idx < 4; result_idx++) {
22602 if (core == result_idx / 2) {
22603 fine_digital_offset[result_idx] =
22604 (target_code *
22605 NPHY_RSSICAL_NPOLL) -
22606 poll_result_core[result_idx];
22607 if (fine_digital_offset[result_idx] <
22608 0) {
22609 fine_digital_offset[result_idx]
22610 = abs(
22611 fine_digital_offset
22612 [result_idx]);
22613 fine_digital_offset[result_idx]
22614 += (NPHY_RSSICAL_NPOLL
22615 / 2);
22616 fine_digital_offset[result_idx]
22617 /= NPHY_RSSICAL_NPOLL;
22618 fine_digital_offset[result_idx]
22619 = -fine_digital_offset
22620 [result_idx];
22621 } else {
22622 fine_digital_offset[result_idx]
22623 += (NPHY_RSSICAL_NPOLL
22624 / 2);
22625 fine_digital_offset[result_idx]
22626 /= NPHY_RSSICAL_NPOLL;
22627 }
22628
22629 wlc_phy_scale_offset_rssi_nphy(
22630 pi, 0x0,
22631 (s8)
22632 fine_digital_offset
22633 [core *
22634 2],
22635 (core == PHY_CORE_0) ?
22636 RADIO_MIMO_CORESEL_CORE1 :
22637 RADIO_MIMO_CORESEL_CORE2,
22638 (result_idx % 2 == 0) ?
22639 NPHY_RAIL_I :
22640 NPHY_RAIL_Q,
22641 rssi_type);
22642 }
22643 }
22644
22645 }
22646 }
22647
22648 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22649 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22650
22651 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22652
22653 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22654 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22655 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22656
22657 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22658 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22659 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22660
22661 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22662 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22663 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22664 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22665 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22666 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22667 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22668 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22669 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22670 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22671 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22672 }
22673 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22674 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22675 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22676 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22677 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22678 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22679 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22680 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22681 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22682 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22683 }
22684 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22685 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22686
22687 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22688 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22689 pi->rssical_cache.rssical_radio_regs_2G[0] =
22690 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22691 pi->rssical_cache.rssical_radio_regs_2G[1] =
22692 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22693 } else {
22694 pi->rssical_cache.rssical_radio_regs_2G[0] =
22695 read_radio_reg(pi,
22696 RADIO_2056_RX_RSSI_MISC |
22697 RADIO_2056_RX0);
22698 pi->rssical_cache.rssical_radio_regs_2G[1] =
22699 read_radio_reg(pi,
22700 RADIO_2056_RX_RSSI_MISC |
22701 RADIO_2056_RX1);
22702 }
22703
22704 pi->rssical_cache.rssical_phyregs_2G[0] =
22705 read_phy_reg(pi, 0x1a6);
22706 pi->rssical_cache.rssical_phyregs_2G[1] =
22707 read_phy_reg(pi, 0x1ac);
22708 pi->rssical_cache.rssical_phyregs_2G[2] =
22709 read_phy_reg(pi, 0x1b2);
22710 pi->rssical_cache.rssical_phyregs_2G[3] =
22711 read_phy_reg(pi, 0x1b8);
22712 pi->rssical_cache.rssical_phyregs_2G[4] =
22713 read_phy_reg(pi, 0x1a4);
22714 pi->rssical_cache.rssical_phyregs_2G[5] =
22715 read_phy_reg(pi, 0x1aa);
22716 pi->rssical_cache.rssical_phyregs_2G[6] =
22717 read_phy_reg(pi, 0x1b0);
22718 pi->rssical_cache.rssical_phyregs_2G[7] =
22719 read_phy_reg(pi, 0x1b6);
22720 pi->rssical_cache.rssical_phyregs_2G[8] =
22721 read_phy_reg(pi, 0x1a5);
22722 pi->rssical_cache.rssical_phyregs_2G[9] =
22723 read_phy_reg(pi, 0x1ab);
22724 pi->rssical_cache.rssical_phyregs_2G[10] =
22725 read_phy_reg(pi, 0x1b1);
22726 pi->rssical_cache.rssical_phyregs_2G[11] =
22727 read_phy_reg(pi, 0x1b7);
22728
22729 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22730 } else {
22731 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22732 pi->rssical_cache.rssical_radio_regs_5G[0] =
22733 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22734 pi->rssical_cache.rssical_radio_regs_5G[1] =
22735 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22736 } else {
22737 pi->rssical_cache.rssical_radio_regs_5G[0] =
22738 read_radio_reg(pi,
22739 RADIO_2056_RX_RSSI_MISC |
22740 RADIO_2056_RX0);
22741 pi->rssical_cache.rssical_radio_regs_5G[1] =
22742 read_radio_reg(pi,
22743 RADIO_2056_RX_RSSI_MISC |
22744 RADIO_2056_RX1);
22745 }
22746
22747 pi->rssical_cache.rssical_phyregs_5G[0] =
22748 read_phy_reg(pi, 0x1a6);
22749 pi->rssical_cache.rssical_phyregs_5G[1] =
22750 read_phy_reg(pi, 0x1ac);
22751 pi->rssical_cache.rssical_phyregs_5G[2] =
22752 read_phy_reg(pi, 0x1b2);
22753 pi->rssical_cache.rssical_phyregs_5G[3] =
22754 read_phy_reg(pi, 0x1b8);
22755 pi->rssical_cache.rssical_phyregs_5G[4] =
22756 read_phy_reg(pi, 0x1a4);
22757 pi->rssical_cache.rssical_phyregs_5G[5] =
22758 read_phy_reg(pi, 0x1aa);
22759 pi->rssical_cache.rssical_phyregs_5G[6] =
22760 read_phy_reg(pi, 0x1b0);
22761 pi->rssical_cache.rssical_phyregs_5G[7] =
22762 read_phy_reg(pi, 0x1b6);
22763 pi->rssical_cache.rssical_phyregs_5G[8] =
22764 read_phy_reg(pi, 0x1a5);
22765 pi->rssical_cache.rssical_phyregs_5G[9] =
22766 read_phy_reg(pi, 0x1ab);
22767 pi->rssical_cache.rssical_phyregs_5G[10] =
22768 read_phy_reg(pi, 0x1b1);
22769 pi->rssical_cache.rssical_phyregs_5G[11] =
22770 read_phy_reg(pi, 0x1b7);
22771
22772 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22773 }
22774
22775 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22776 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22777 }
22778
22779 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22780 {
22781 s32 target_code;
22782 u16 classif_state;
22783 u16 clip_state[2];
22784 u16 rssi_ctrl_state[2], pd_state[2];
22785 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22786 u16 rfctrlintc_override_val;
22787 u16 clip_off[] = { 0xffff, 0xffff };
22788 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22789 u8 vcm, min_vcm, vcm_tmp[4];
22790 u8 vcm_final[4] = { 0, 0, 0, 0 };
22791 u8 result_idx, ctr;
22792 s32 poll_results[4][4] = {
22793 {0, 0, 0, 0},
22794 {0, 0, 0, 0},
22795 {0, 0, 0, 0},
22796 {0, 0, 0, 0}
22797 };
22798 s32 poll_miniq[4][2] = {
22799 {0, 0},
22800 {0, 0},
22801 {0, 0},
22802 {0, 0}
22803 };
22804 s32 min_d, curr_d;
22805 s32 fine_digital_offset[4];
22806 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22807 s32 min_poll;
22808
22809 switch (rssi_type) {
22810 case NPHY_RSSI_SEL_NB:
22811 target_code = NPHY_RSSICAL_NB_TARGET;
22812 break;
22813 case NPHY_RSSI_SEL_W1:
22814 target_code = NPHY_RSSICAL_W1_TARGET;
22815 break;
22816 case NPHY_RSSI_SEL_W2:
22817 target_code = NPHY_RSSICAL_W2_TARGET;
22818 break;
22819 default:
22820 return;
22821 }
22822
22823 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22824 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22825 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22826 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22827
22828 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22829 rfctrlintc_override_val =
22830 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22831
22832 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22833 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22834 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22835 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22836
22837 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22838 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22839 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22840 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22841
22842 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22843 RADIO_2055_WBRSSI_G2_PD;
22844 pd_state[0] =
22845 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22846 pd_state[1] =
22847 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22848 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22849 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22850 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22851 RADIO_2055_WBRSSI_G2_SEL;
22852 rssi_ctrl_state[0] =
22853 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22854 rssi_ctrl_state[1] =
22855 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22856 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22857
22858 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22859 NPHY_RAIL_I, rssi_type);
22860 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22861 NPHY_RAIL_Q, rssi_type);
22862
22863 for (vcm = 0; vcm < 4; vcm++) {
22864
22865 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22866 if (rssi_type != NPHY_RSSI_SEL_W2)
22867 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22868
22869 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22870 NPHY_RSSICAL_NPOLL);
22871
22872 if ((rssi_type == NPHY_RSSI_SEL_W1)
22873 || (rssi_type == NPHY_RSSI_SEL_W2)) {
22874 for (ctr = 0; ctr < 2; ctr++)
22875 poll_miniq[vcm][ctr] =
22876 min(poll_results[vcm][ctr * 2 + 0],
22877 poll_results[vcm][ctr * 2 + 1]);
22878 }
22879 }
22880
22881 for (result_idx = 0; result_idx < 4; result_idx++) {
22882 min_d = NPHY_RSSICAL_MAXD;
22883 min_vcm = 0;
22884 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22885 for (vcm = 0; vcm < 4; vcm++) {
22886 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22887 poll_results[vcm][result_idx] :
22888 poll_miniq[vcm][result_idx / 2]) -
22889 (target_code * NPHY_RSSICAL_NPOLL));
22890 if (curr_d < min_d) {
22891 min_d = curr_d;
22892 min_vcm = vcm;
22893 }
22894 if (poll_results[vcm][result_idx] < min_poll)
22895 min_poll = poll_results[vcm][result_idx];
22896 }
22897 vcm_final[result_idx] = min_vcm;
22898 poll_results_min[result_idx] = min_poll;
22899 }
22900
22901 if (rssi_type != NPHY_RSSI_SEL_W2)
22902 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22903
22904 for (result_idx = 0; result_idx < 4; result_idx++) {
22905 fine_digital_offset[result_idx] =
22906 (target_code * NPHY_RSSICAL_NPOLL) -
22907 poll_results[vcm_final[result_idx]][result_idx];
22908 if (fine_digital_offset[result_idx] < 0) {
22909 fine_digital_offset[result_idx] =
22910 abs(fine_digital_offset[result_idx]);
22911 fine_digital_offset[result_idx] +=
22912 (NPHY_RSSICAL_NPOLL / 2);
22913 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22914 fine_digital_offset[result_idx] =
22915 -fine_digital_offset[result_idx];
22916 } else {
22917 fine_digital_offset[result_idx] +=
22918 (NPHY_RSSICAL_NPOLL / 2);
22919 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22920 }
22921
22922 if (poll_results_min[result_idx] ==
22923 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22924 fine_digital_offset[result_idx] =
22925 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22926
22927 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22928 (s8)
22929 fine_digital_offset[result_idx],
22930 (result_idx / 2 ==
22931 0) ? RADIO_MIMO_CORESEL_CORE1 :
22932 RADIO_MIMO_CORESEL_CORE2,
22933 (result_idx % 2 ==
22934 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22935 rssi_type);
22936 }
22937
22938 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22939 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22940 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22941 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22942 NPHY_RSSI_SEL_NB);
22943 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22944 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22945 NPHY_RSSI_SEL_W1);
22946 else
22947 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22948 NPHY_RSSI_SEL_W2);
22949 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22950 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22951 NPHY_RSSI_SEL_NB);
22952 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22953 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22954 NPHY_RSSI_SEL_W1);
22955 else
22956 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22957 NPHY_RSSI_SEL_W2);
22958 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22959
22960 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22961 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22962 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22963 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22964
22965 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22966 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22967
22968 wlc_phy_resetcca_nphy(pi);
22969 }
22970
22971 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22972 {
22973 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22974 wlc_phy_rssi_cal_nphy_rev3(pi);
22975 } else {
22976 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22977 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22978 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22979 }
22980 }
22981
22982 int
22983 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22984 {
22985 s16 rxpwr, rxpwr0, rxpwr1;
22986 s16 phyRx0_l, phyRx2_l;
22987
22988 rxpwr = 0;
22989 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22990 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22991
22992 if (rxpwr0 > 127)
22993 rxpwr0 -= 256;
22994 if (rxpwr1 > 127)
22995 rxpwr1 -= 256;
22996
22997 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
22998 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22999 if (phyRx2_l > 127)
23000 phyRx2_l -= 256;
23001
23002 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23003 rxpwr0 = rxpwr1;
23004 rxpwr1 = phyRx2_l;
23005 }
23006
23007 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23008 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23009 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23010 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23011 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23012 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23013
23014 return rxpwr;
23015 }
23016
23017 static void
23018 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23019 u16 num_samps)
23020 {
23021 u16 t;
23022 u32 *data_buf = NULL;
23023
23024 data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23025 if (data_buf == NULL)
23026 return;
23027
23028 if (pi->phyhang_avoid)
23029 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23030
23031 for (t = 0; t < num_samps; t++)
23032 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23033 (((unsigned int)tone_buf[t].q) & 0x3ff);
23034 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23035 data_buf);
23036
23037 kfree(data_buf);
23038
23039 if (pi->phyhang_avoid)
23040 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23041 }
23042
23043 static u16
23044 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23045 u8 dac_test_mode)
23046 {
23047 u8 phy_bw, is_phybw40;
23048 u16 num_samps, t, spur;
23049 s32 theta = 0, rot = 0;
23050 u32 tbl_len;
23051 struct cordic_iq *tone_buf = NULL;
23052
23053 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23054 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23055 tbl_len = (phy_bw << 3);
23056
23057 if (dac_test_mode == 1) {
23058 spur = read_phy_reg(pi, 0x01);
23059 spur = (spur >> 15) & 1;
23060 phy_bw = (spur == 1) ? 82 : 80;
23061 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23062
23063 tbl_len = (phy_bw << 1);
23064 }
23065
23066 tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23067 GFP_ATOMIC);
23068 if (tone_buf == NULL)
23069 return 0;
23070
23071 num_samps = (u16) tbl_len;
23072 rot = ((f_kHz * 36) / phy_bw) / 100;
23073 theta = 0;
23074
23075 for (t = 0; t < num_samps; t++) {
23076
23077 tone_buf[t] = cordic_calc_iq(theta);
23078
23079 theta += rot;
23080
23081 tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23082 tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23083 }
23084
23085 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23086
23087 kfree(tone_buf);
23088
23089 return num_samps;
23090 }
23091
23092 static void
23093 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23094 u16 wait, u8 iqmode, u8 dac_test_mode,
23095 bool modify_bbmult)
23096 {
23097 u16 bb_mult;
23098 u8 phy_bw, sample_cmd;
23099 u16 orig_RfseqCoreActv;
23100 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23101 lpf_bw_ctl_miscreg4;
23102
23103 if (pi->phyhang_avoid)
23104 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23105
23106 phy_bw = 20;
23107 if (CHSPEC_IS40(pi->radio_chanspec))
23108 phy_bw = 40;
23109
23110 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23111
23112 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23113 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23114 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23115 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23116 (0x7 << 8);
23117 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23118 (0x7 << 8);
23119 } else {
23120 wlc_phy_rfctrl_override_nphy_rev7(
23121 pi,
23122 (0x1 << 7),
23123 wlc_phy_read_lpf_bw_ctl_nphy
23124 (pi,
23125 0), 0, 0,
23126 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23127
23128 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23129
23130 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23131 (0x7 << 8);
23132 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23133 (0x7 << 8);
23134 }
23135 }
23136
23137 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23138
23139 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23140 &bb_mult);
23141 pi->nphy_bb_mult_save =
23142 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23143 }
23144
23145 if (modify_bbmult) {
23146 bb_mult = (phy_bw == 20) ? 100 : 71;
23147 bb_mult = (bb_mult << 8) + bb_mult;
23148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23149 &bb_mult);
23150 }
23151
23152 if (pi->phyhang_avoid)
23153 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23154
23155 write_phy_reg(pi, 0xc6, num_samps - 1);
23156
23157 if (loops != 0xffff)
23158 write_phy_reg(pi, 0xc4, loops - 1);
23159 else
23160 write_phy_reg(pi, 0xc4, loops);
23161
23162 write_phy_reg(pi, 0xc5, wait);
23163
23164 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23165 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23166 if (iqmode) {
23167
23168 and_phy_reg(pi, 0xc2, 0x7FFF);
23169
23170 or_phy_reg(pi, 0xc2, 0x8000);
23171 } else {
23172
23173 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23174 write_phy_reg(pi, 0xc3, sample_cmd);
23175 }
23176
23177 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23178
23179 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23180 }
23181
23182 int
23183 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23184 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23185 {
23186 u16 num_samps;
23187 u16 loops = 0xffff;
23188 u16 wait = 0;
23189
23190 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23191 dac_test_mode);
23192 if (num_samps == 0)
23193 return -EBADE;
23194
23195 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23196 dac_test_mode, modify_bbmult);
23197
23198 return 0;
23199 }
23200
23201 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23202 {
23203 u16 playback_status;
23204 u16 bb_mult;
23205
23206 if (pi->phyhang_avoid)
23207 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23208
23209 playback_status = read_phy_reg(pi, 0xc7);
23210 if (playback_status & 0x1)
23211 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23212 else if (playback_status & 0x2)
23213 and_phy_reg(pi, 0xc2,
23214 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23215
23216 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23217
23218 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23219
23220 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23221 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23222 &bb_mult);
23223
23224 pi->nphy_bb_mult_save = 0;
23225 }
23226
23227 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23228 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23229 wlc_phy_rfctrl_override_nphy_rev7(
23230 pi,
23231 (0x1 << 7),
23232 0, 0, 1,
23233 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23234 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23235 }
23236 }
23237
23238 if (pi->phyhang_avoid)
23239 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23240 }
23241
23242 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23243 {
23244 u32 *tx_pwrctrl_tbl = NULL;
23245 uint phyrev = pi->pubpi.phy_rev;
23246
23247 if (PHY_IPA(pi)) {
23248 tx_pwrctrl_tbl =
23249 wlc_phy_get_ipa_gaintbl_nphy(pi);
23250 } else {
23251 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23252 if (NREV_IS(phyrev, 3))
23253 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23254 else if (NREV_IS(phyrev, 4))
23255 tx_pwrctrl_tbl =
23256 (pi->srom_fem5g.extpagain == 3) ?
23257 nphy_tpc_5GHz_txgain_HiPwrEPA :
23258 nphy_tpc_5GHz_txgain_rev4;
23259 else
23260 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23261 } else {
23262 if (NREV_GE(phyrev, 7)) {
23263 if (pi->pubpi.radiorev == 3)
23264 tx_pwrctrl_tbl =
23265 nphy_tpc_txgain_epa_2057rev3;
23266 else if (pi->pubpi.radiorev == 5)
23267 tx_pwrctrl_tbl =
23268 nphy_tpc_txgain_epa_2057rev5;
23269 } else {
23270 if (NREV_GE(phyrev, 5) &&
23271 (pi->srom_fem2g.extpagain == 3))
23272 tx_pwrctrl_tbl =
23273 nphy_tpc_txgain_HiPwrEPA;
23274 else
23275 tx_pwrctrl_tbl =
23276 nphy_tpc_txgain_rev3;
23277 }
23278 }
23279 }
23280 return tx_pwrctrl_tbl;
23281 }
23282
23283 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23284 {
23285 u16 base_idx[2], curr_gain[2];
23286 u8 core_no;
23287 struct nphy_txgains target_gain;
23288 u32 *tx_pwrctrl_tbl = NULL;
23289
23290 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23291 if (pi->phyhang_avoid)
23292 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23293
23294 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23295 curr_gain);
23296
23297 if (pi->phyhang_avoid)
23298 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23299
23300 for (core_no = 0; core_no < 2; core_no++) {
23301 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23302 target_gain.ipa[core_no] =
23303 curr_gain[core_no] & 0x0007;
23304 target_gain.pad[core_no] =
23305 ((curr_gain[core_no] & 0x00F8) >> 3);
23306 target_gain.pga[core_no] =
23307 ((curr_gain[core_no] & 0x0F00) >> 8);
23308 target_gain.txgm[core_no] =
23309 ((curr_gain[core_no] & 0x7000) >> 12);
23310 target_gain.txlpf[core_no] =
23311 ((curr_gain[core_no] & 0x8000) >> 15);
23312 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23313 target_gain.ipa[core_no] =
23314 curr_gain[core_no] & 0x000F;
23315 target_gain.pad[core_no] =
23316 ((curr_gain[core_no] & 0x00F0) >> 4);
23317 target_gain.pga[core_no] =
23318 ((curr_gain[core_no] & 0x0F00) >> 8);
23319 target_gain.txgm[core_no] =
23320 ((curr_gain[core_no] & 0x7000) >> 12);
23321 } else {
23322 target_gain.ipa[core_no] =
23323 curr_gain[core_no] & 0x0003;
23324 target_gain.pad[core_no] =
23325 ((curr_gain[core_no] & 0x000C) >> 2);
23326 target_gain.pga[core_no] =
23327 ((curr_gain[core_no] & 0x0070) >> 4);
23328 target_gain.txgm[core_no] =
23329 ((curr_gain[core_no] & 0x0380) >> 7);
23330 }
23331 }
23332 } else {
23333 uint phyrev = pi->pubpi.phy_rev;
23334
23335 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23336 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23337 for (core_no = 0; core_no < 2; core_no++) {
23338 if (NREV_GE(phyrev, 3)) {
23339 tx_pwrctrl_tbl =
23340 brcms_phy_get_tx_pwrctrl_tbl(pi);
23341 if (NREV_GE(phyrev, 7)) {
23342 target_gain.ipa[core_no] =
23343 (tx_pwrctrl_tbl
23344 [base_idx[core_no]]
23345 >> 16) & 0x7;
23346 target_gain.pad[core_no] =
23347 (tx_pwrctrl_tbl
23348 [base_idx[core_no]]
23349 >> 19) & 0x1f;
23350 target_gain.pga[core_no] =
23351 (tx_pwrctrl_tbl
23352 [base_idx[core_no]]
23353 >> 24) & 0xf;
23354 target_gain.txgm[core_no] =
23355 (tx_pwrctrl_tbl
23356 [base_idx[core_no]]
23357 >> 28) & 0x7;
23358 target_gain.txlpf[core_no] =
23359 (tx_pwrctrl_tbl
23360 [base_idx[core_no]]
23361 >> 31) & 0x1;
23362 } else {
23363 target_gain.ipa[core_no] =
23364 (tx_pwrctrl_tbl
23365 [base_idx[core_no]]
23366 >> 16) & 0xf;
23367 target_gain.pad[core_no] =
23368 (tx_pwrctrl_tbl
23369 [base_idx[core_no]]
23370 >> 20) & 0xf;
23371 target_gain.pga[core_no] =
23372 (tx_pwrctrl_tbl
23373 [base_idx[core_no]]
23374 >> 24) & 0xf;
23375 target_gain.txgm[core_no] =
23376 (tx_pwrctrl_tbl
23377 [base_idx[core_no]]
23378 >> 28) & 0x7;
23379 }
23380 } else {
23381 target_gain.ipa[core_no] =
23382 (nphy_tpc_txgain[base_idx[core_no]] >>
23383 16) & 0x3;
23384 target_gain.pad[core_no] =
23385 (nphy_tpc_txgain[base_idx[core_no]] >>
23386 18) & 0x3;
23387 target_gain.pga[core_no] =
23388 (nphy_tpc_txgain[base_idx[core_no]] >>
23389 20) & 0x7;
23390 target_gain.txgm[core_no] =
23391 (nphy_tpc_txgain[base_idx[core_no]] >>
23392 23) & 0x7;
23393 }
23394 }
23395 }
23396
23397 return target_gain;
23398 }
23399
23400 static void
23401 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23402 struct nphy_txgains target_gain,
23403 struct nphy_iqcal_params *params)
23404 {
23405 u8 k;
23406 int idx;
23407 u16 gain_index;
23408 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23409
23410 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23411 if (NREV_GE(pi->pubpi.phy_rev, 7))
23412 params->txlpf = target_gain.txlpf[core_no];
23413
23414 params->txgm = target_gain.txgm[core_no];
23415 params->pga = target_gain.pga[core_no];
23416 params->pad = target_gain.pad[core_no];
23417 params->ipa = target_gain.ipa[core_no];
23418 if (NREV_GE(pi->pubpi.phy_rev, 7))
23419 params->cal_gain =
23420 ((params->txlpf << 15) | (params->txgm << 12) |
23421 (params->pga << 8) |
23422 (params->pad << 3) | (params->ipa));
23423 else
23424 params->cal_gain =
23425 ((params->txgm << 12) | (params->pga << 8) |
23426 (params->pad << 4) | (params->ipa));
23427
23428 params->ncorr[0] = 0x79;
23429 params->ncorr[1] = 0x79;
23430 params->ncorr[2] = 0x79;
23431 params->ncorr[3] = 0x79;
23432 params->ncorr[4] = 0x79;
23433 } else {
23434
23435 gain_index = ((target_gain.pad[core_no] << 0) |
23436 (target_gain.pga[core_no] << 4) |
23437 (target_gain.txgm[core_no] << 8));
23438
23439 idx = -1;
23440 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23441 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23442 gain_index) {
23443 idx = k;
23444 break;
23445 }
23446 }
23447
23448 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23449 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23450 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23451 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23452 (params->pad << 2));
23453 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23454 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23455 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23456 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23457 }
23458 }
23459
23460 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23461 {
23462 u16 jtag_core, core;
23463
23464 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23465
23466 for (core = 0; core <= 1; core++) {
23467
23468 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23469 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23470 TX_SSI_MASTER);
23471
23472 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23473 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23474 IQCAL_VCM_HG);
23475
23476 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23477 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23478 IQCAL_IDAC);
23479
23480 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23481 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23482 TSSI_VCM);
23483
23484 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23485
23486 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23487 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23488 TX_SSI_MUX);
23489
23490 if (pi->pubpi.radiorev != 5)
23491 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23492 READ_RADIO_REG3(pi, RADIO_2057, TX,
23493 core,
23494 TSSIA);
23495
23496 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23497 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23498
23499 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23500 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23501 TSSI_MISC1);
23502
23503 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23504 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23505 TX_SSI_MASTER, 0x0a);
23506 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23507 IQCAL_VCM_HG, 0x43);
23508 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23509 IQCAL_IDAC, 0x55);
23510 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23511 TSSI_VCM, 0x00);
23512 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23513 TSSIG, 0x00);
23514 if (pi->use_int_tx_iqlo_cal_nphy) {
23515 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23516 core, TX_SSI_MUX, 0x4);
23517 if (!(pi->
23518 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23519 WRITE_RADIO_REG3(pi, RADIO_2057,
23520 TX, core,
23521 TSSIA, 0x31);
23522 else
23523 WRITE_RADIO_REG3(pi, RADIO_2057,
23524 TX, core,
23525 TSSIA, 0x21);
23526 }
23527 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23528 TSSI_MISC1, 0x00);
23529 } else {
23530 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23531 TX_SSI_MASTER, 0x06);
23532 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23533 IQCAL_VCM_HG, 0x43);
23534 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23535 IQCAL_IDAC, 0x55);
23536 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23537 TSSI_VCM, 0x00);
23538
23539 if (pi->pubpi.radiorev != 5)
23540 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23541 core, TSSIA, 0x00);
23542 if (pi->use_int_tx_iqlo_cal_nphy) {
23543 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23544 core, TX_SSI_MUX,
23545 0x06);
23546 if (!(pi->
23547 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23548 WRITE_RADIO_REG3(pi, RADIO_2057,
23549 TX, core,
23550 TSSIG, 0x31);
23551 else
23552 WRITE_RADIO_REG3(pi, RADIO_2057,
23553 TX, core,
23554 TSSIG, 0x21);
23555 }
23556 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23557 TSSI_MISC1, 0x00);
23558 }
23559 }
23560 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23561
23562 for (core = 0; core <= 1; core++) {
23563 jtag_core =
23564 (core ==
23565 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23566
23567 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23568 read_radio_reg(pi,
23569 RADIO_2056_TX_TX_SSI_MASTER |
23570 jtag_core);
23571
23572 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23573 read_radio_reg(pi,
23574 RADIO_2056_TX_IQCAL_VCM_HG |
23575 jtag_core);
23576
23577 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23578 read_radio_reg(pi,
23579 RADIO_2056_TX_IQCAL_IDAC |
23580 jtag_core);
23581
23582 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23583 read_radio_reg(
23584 pi,
23585 RADIO_2056_TX_TSSI_VCM |
23586 jtag_core);
23587
23588 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23589 read_radio_reg(pi,
23590 RADIO_2056_TX_TX_AMP_DET |
23591 jtag_core);
23592
23593 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23594 read_radio_reg(pi,
23595 RADIO_2056_TX_TX_SSI_MUX |
23596 jtag_core);
23597
23598 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23599 read_radio_reg(pi,
23600 RADIO_2056_TX_TSSIA | jtag_core);
23601
23602 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23603 read_radio_reg(pi,
23604 RADIO_2056_TX_TSSIG | jtag_core);
23605
23606 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23607 read_radio_reg(pi,
23608 RADIO_2056_TX_TSSI_MISC1 |
23609 jtag_core);
23610
23611 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23612 read_radio_reg(pi,
23613 RADIO_2056_TX_TSSI_MISC2 |
23614 jtag_core);
23615
23616 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23617 read_radio_reg(pi,
23618 RADIO_2056_TX_TSSI_MISC3 |
23619 jtag_core);
23620
23621 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23622 write_radio_reg(pi,
23623 RADIO_2056_TX_TX_SSI_MASTER |
23624 jtag_core, 0x0a);
23625 write_radio_reg(pi,
23626 RADIO_2056_TX_IQCAL_VCM_HG |
23627 jtag_core, 0x40);
23628 write_radio_reg(pi,
23629 RADIO_2056_TX_IQCAL_IDAC |
23630 jtag_core, 0x55);
23631 write_radio_reg(pi,
23632 RADIO_2056_TX_TSSI_VCM |
23633 jtag_core, 0x00);
23634 write_radio_reg(pi,
23635 RADIO_2056_TX_TX_AMP_DET |
23636 jtag_core, 0x00);
23637
23638 if (PHY_IPA(pi)) {
23639 write_radio_reg(
23640 pi,
23641 RADIO_2056_TX_TX_SSI_MUX
23642 | jtag_core, 0x4);
23643 write_radio_reg(pi,
23644 RADIO_2056_TX_TSSIA |
23645 jtag_core, 0x1);
23646 } else {
23647 write_radio_reg(
23648 pi,
23649 RADIO_2056_TX_TX_SSI_MUX
23650 | jtag_core, 0x00);
23651 write_radio_reg(pi,
23652 RADIO_2056_TX_TSSIA |
23653 jtag_core, 0x2f);
23654 }
23655 write_radio_reg(pi,
23656 RADIO_2056_TX_TSSIG | jtag_core,
23657 0x00);
23658 write_radio_reg(pi,
23659 RADIO_2056_TX_TSSI_MISC1 |
23660 jtag_core, 0x00);
23661
23662 write_radio_reg(pi,
23663 RADIO_2056_TX_TSSI_MISC2 |
23664 jtag_core, 0x00);
23665 write_radio_reg(pi,
23666 RADIO_2056_TX_TSSI_MISC3 |
23667 jtag_core, 0x00);
23668 } else {
23669 write_radio_reg(pi,
23670 RADIO_2056_TX_TX_SSI_MASTER |
23671 jtag_core, 0x06);
23672 write_radio_reg(pi,
23673 RADIO_2056_TX_IQCAL_VCM_HG |
23674 jtag_core, 0x40);
23675 write_radio_reg(pi,
23676 RADIO_2056_TX_IQCAL_IDAC |
23677 jtag_core, 0x55);
23678 write_radio_reg(pi,
23679 RADIO_2056_TX_TSSI_VCM |
23680 jtag_core, 0x00);
23681 write_radio_reg(pi,
23682 RADIO_2056_TX_TX_AMP_DET |
23683 jtag_core, 0x00);
23684 write_radio_reg(pi,
23685 RADIO_2056_TX_TSSIA | jtag_core,
23686 0x00);
23687
23688 if (PHY_IPA(pi)) {
23689
23690 write_radio_reg(
23691 pi,
23692 RADIO_2056_TX_TX_SSI_MUX
23693 | jtag_core, 0x06);
23694 if (NREV_LT(pi->pubpi.phy_rev, 5))
23695 write_radio_reg(
23696 pi,
23697 RADIO_2056_TX_TSSIG
23698 | jtag_core,
23699 0x11);
23700 else
23701 write_radio_reg(
23702 pi,
23703 RADIO_2056_TX_TSSIG
23704 | jtag_core,
23705 0x1);
23706 } else {
23707 write_radio_reg(
23708 pi,
23709 RADIO_2056_TX_TX_SSI_MUX
23710 | jtag_core, 0x00);
23711 write_radio_reg(pi,
23712 RADIO_2056_TX_TSSIG |
23713 jtag_core, 0x20);
23714 }
23715
23716 write_radio_reg(pi,
23717 RADIO_2056_TX_TSSI_MISC1 |
23718 jtag_core, 0x00);
23719 write_radio_reg(pi,
23720 RADIO_2056_TX_TSSI_MISC2 |
23721 jtag_core, 0x00);
23722 write_radio_reg(pi,
23723 RADIO_2056_TX_TSSI_MISC3 |
23724 jtag_core, 0x00);
23725 }
23726 }
23727 } else {
23728
23729 pi->tx_rx_cal_radio_saveregs[0] =
23730 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23731 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23732 pi->tx_rx_cal_radio_saveregs[1] =
23733 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23734 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23735
23736 pi->tx_rx_cal_radio_saveregs[2] =
23737 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23738 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23739 pi->tx_rx_cal_radio_saveregs[3] =
23740 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23741 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23742
23743 pi->tx_rx_cal_radio_saveregs[4] =
23744 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23745 pi->tx_rx_cal_radio_saveregs[5] =
23746 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23747
23748 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23749 0) {
23750
23751 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23752 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23753 } else {
23754
23755 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23756 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23757 }
23758
23759 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23760
23761 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23762 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23763 } else {
23764
23765 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23766 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23767 }
23768 }
23769 }
23770
23771 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23772 {
23773 u16 jtag_core, core;
23774
23775 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23776 for (core = 0; core <= 1; core++) {
23777
23778 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23779 TX_SSI_MASTER,
23780 pi->
23781 tx_rx_cal_radio_saveregs[(core * 11) +
23782 0]);
23783
23784 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23785 pi->
23786 tx_rx_cal_radio_saveregs[(core * 11) +
23787 1]);
23788
23789 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23790 pi->
23791 tx_rx_cal_radio_saveregs[(core * 11) +
23792 2]);
23793
23794 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23795 pi->
23796 tx_rx_cal_radio_saveregs[(core * 11) +
23797 3]);
23798
23799 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23800 pi->
23801 tx_rx_cal_radio_saveregs[(core * 11) +
23802 5]);
23803
23804 if (pi->pubpi.radiorev != 5)
23805 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23806 TSSIA,
23807 pi->tx_rx_cal_radio_saveregs
23808 [(core * 11) + 6]);
23809
23810 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23811 pi->
23812 tx_rx_cal_radio_saveregs[(core * 11) +
23813 7]);
23814
23815 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23816 pi->
23817 tx_rx_cal_radio_saveregs[(core * 11) +
23818 8]);
23819 }
23820 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23821 for (core = 0; core <= 1; core++) {
23822 jtag_core = (core == PHY_CORE_0) ?
23823 RADIO_2056_TX0 : RADIO_2056_TX1;
23824
23825 write_radio_reg(pi,
23826 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23827 pi->
23828 tx_rx_cal_radio_saveregs[(core * 11) +
23829 0]);
23830
23831 write_radio_reg(pi,
23832 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23833 pi->
23834 tx_rx_cal_radio_saveregs[(core * 11) +
23835 1]);
23836
23837 write_radio_reg(pi,
23838 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23839 pi->
23840 tx_rx_cal_radio_saveregs[(core * 11) +
23841 2]);
23842
23843 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23844 pi->
23845 tx_rx_cal_radio_saveregs[(core * 11) +
23846 3]);
23847
23848 write_radio_reg(pi,
23849 RADIO_2056_TX_TX_AMP_DET | jtag_core,
23850 pi->
23851 tx_rx_cal_radio_saveregs[(core * 11) +
23852 4]);
23853
23854 write_radio_reg(pi,
23855 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23856 pi->
23857 tx_rx_cal_radio_saveregs[(core * 11) +
23858 5]);
23859
23860 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23861 pi->
23862 tx_rx_cal_radio_saveregs[(core * 11) +
23863 6]);
23864
23865 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23866 pi->
23867 tx_rx_cal_radio_saveregs[(core * 11) +
23868 7]);
23869
23870 write_radio_reg(pi,
23871 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23872 pi->
23873 tx_rx_cal_radio_saveregs[(core * 11) +
23874 8]);
23875
23876 write_radio_reg(pi,
23877 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23878 pi->
23879 tx_rx_cal_radio_saveregs[(core * 11) +
23880 9]);
23881
23882 write_radio_reg(pi,
23883 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23884 pi->
23885 tx_rx_cal_radio_saveregs[(core * 11) +
23886 10]);
23887 }
23888 } else {
23889
23890 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23891 pi->tx_rx_cal_radio_saveregs[0]);
23892 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23893 pi->tx_rx_cal_radio_saveregs[1]);
23894 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23895 pi->tx_rx_cal_radio_saveregs[2]);
23896 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23897 pi->tx_rx_cal_radio_saveregs[3]);
23898 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23899 pi->tx_rx_cal_radio_saveregs[4]);
23900 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23901 pi->tx_rx_cal_radio_saveregs[5]);
23902 }
23903 }
23904
23905 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23906 {
23907 u16 val, mask;
23908
23909 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23910 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23911 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23912
23913 mask = ((0x3 << 8) | (0x3 << 10));
23914 val = (0x2 << 8);
23915 val |= (0x2 << 10);
23916 mod_phy_reg(pi, 0xa6, mask, val);
23917 mod_phy_reg(pi, 0xa7, mask, val);
23918
23919 val = read_phy_reg(pi, 0x8f);
23920 pi->tx_rx_cal_phy_saveregs[2] = val;
23921 val |= ((0x1 << 9) | (0x1 << 10));
23922 write_phy_reg(pi, 0x8f, val);
23923
23924 val = read_phy_reg(pi, 0xa5);
23925 pi->tx_rx_cal_phy_saveregs[3] = val;
23926 val |= ((0x1 << 9) | (0x1 << 10));
23927 write_phy_reg(pi, 0xa5, val);
23928
23929 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23930 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23931
23932 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23933 &val);
23934 pi->tx_rx_cal_phy_saveregs[5] = val;
23935 val = 0;
23936 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23937 &val);
23938
23939 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23940 &val);
23941 pi->tx_rx_cal_phy_saveregs[6] = val;
23942 val = 0;
23943 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23944 &val);
23945
23946 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23947 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23948
23949 if (!(pi->use_int_tx_iqlo_cal_nphy))
23950 wlc_phy_rfctrlintc_override_nphy(
23951 pi,
23952 NPHY_RfctrlIntc_override_PA,
23953 1,
23954 RADIO_MIMO_CORESEL_CORE1
23955 |
23956 RADIO_MIMO_CORESEL_CORE2);
23957 else
23958 wlc_phy_rfctrlintc_override_nphy(
23959 pi,
23960 NPHY_RfctrlIntc_override_PA,
23961 0,
23962 RADIO_MIMO_CORESEL_CORE1
23963 |
23964 RADIO_MIMO_CORESEL_CORE2);
23965
23966 wlc_phy_rfctrlintc_override_nphy(pi,
23967 NPHY_RfctrlIntc_override_TRSW,
23968 0x2, RADIO_MIMO_CORESEL_CORE1);
23969 wlc_phy_rfctrlintc_override_nphy(pi,
23970 NPHY_RfctrlIntc_override_TRSW,
23971 0x8, RADIO_MIMO_CORESEL_CORE2);
23972
23973 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23974 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23975 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23976 0x29b, (0x1 << 0), (0) << 0);
23977
23978 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23979 0x29b, (0x1 << 0), (0) << 0);
23980
23981 if (NREV_IS(pi->pubpi.phy_rev, 7)
23982 || NREV_GE(pi->pubpi.phy_rev, 8))
23983 wlc_phy_rfctrl_override_nphy_rev7(
23984 pi, (0x1 << 7),
23985 wlc_phy_read_lpf_bw_ctl_nphy
23986 (pi,
23987 0), 0, 0,
23988 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23989
23990 if (pi->use_int_tx_iqlo_cal_nphy
23991 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23992
23993 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23994
23995 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23996 1 << 4);
23997
23998 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23999 mod_radio_reg(
24000 pi,
24001 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24002 1, 0);
24003 mod_radio_reg(
24004 pi,
24005 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24006 1, 0);
24007 } else {
24008 mod_radio_reg(
24009 pi,
24010 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24011 1, 0);
24012 mod_radio_reg(
24013 pi,
24014 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24015 1, 0);
24016 }
24017 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24018 wlc_phy_rfctrl_override_nphy_rev7(
24019 pi,
24020 (0x1 << 3), 0,
24021 0x3, 0,
24022 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24023 }
24024 }
24025 } else {
24026 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24027 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24028
24029 mask = ((0x3 << 12) | (0x3 << 14));
24030 val = (0x2 << 12);
24031 val |= (0x2 << 14);
24032 mod_phy_reg(pi, 0xa6, mask, val);
24033 mod_phy_reg(pi, 0xa7, mask, val);
24034
24035 val = read_phy_reg(pi, 0xa5);
24036 pi->tx_rx_cal_phy_saveregs[2] = val;
24037 val |= ((0x1 << 12) | (0x1 << 13));
24038 write_phy_reg(pi, 0xa5, val);
24039
24040 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24041 &val);
24042 pi->tx_rx_cal_phy_saveregs[3] = val;
24043 val |= 0x2000;
24044 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24045 &val);
24046
24047 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24048 &val);
24049 pi->tx_rx_cal_phy_saveregs[4] = val;
24050 val |= 0x2000;
24051 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24052 &val);
24053
24054 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24055 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24056 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24057 write_phy_reg(pi, 0x91, val);
24058 write_phy_reg(pi, 0x92, val);
24059 }
24060 }
24061
24062 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24063 {
24064 u16 mask;
24065
24066 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24067 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24068 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24069 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24070 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24071 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24072
24073 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24074 &pi->tx_rx_cal_phy_saveregs[5]);
24075 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24076 &pi->tx_rx_cal_phy_saveregs[6]);
24077
24078 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24079 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24080
24081 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24082 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24083
24084 if (NREV_IS(pi->pubpi.phy_rev, 7)
24085 || NREV_GE(pi->pubpi.phy_rev, 8))
24086 wlc_phy_rfctrl_override_nphy_rev7(
24087 pi, (0x1 << 7), 0, 0,
24088 1,
24089 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24090
24091 wlc_phy_resetcca_nphy(pi);
24092
24093 if (pi->use_int_tx_iqlo_cal_nphy
24094 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24095
24096 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24097 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24098 mod_radio_reg(
24099 pi,
24100 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24101 1, 1);
24102 mod_radio_reg(
24103 pi,
24104 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24105 1, 1);
24106 } else {
24107 mod_radio_reg(
24108 pi,
24109 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24110 1, 1);
24111 mod_radio_reg(
24112 pi,
24113 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24114 1, 1);
24115 }
24116
24117 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24118 0);
24119 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24120 wlc_phy_rfctrl_override_nphy_rev7(
24121 pi,
24122 (0x1 << 3), 0,
24123 0x3, 1,
24124 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24125 }
24126 }
24127 } else {
24128 mask = ((0x3 << 12) | (0x3 << 14));
24129 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24130 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24131 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24132
24133 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24134 &pi->tx_rx_cal_phy_saveregs[3]);
24135
24136 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24137 &pi->tx_rx_cal_phy_saveregs[4]);
24138
24139 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24140 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24141 }
24142 }
24143
24144 void
24145 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24146 {
24147 u16 tssi_reg;
24148 s32 temp, pwrindex[2];
24149 s32 idle_tssi[2];
24150 s32 rssi_buf[4];
24151 s32 tssival[2];
24152 u8 tssi_type;
24153
24154 tssi_reg = read_phy_reg(pi, 0x1e9);
24155
24156 temp = (s32) (tssi_reg & 0x3f);
24157 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24158
24159 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24160 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24161
24162 tssi_type =
24163 CHSPEC_IS5G(pi->radio_chanspec) ?
24164 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24165
24166 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24167
24168 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24169 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24170
24171 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24172 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24173
24174 if (pwrindex[0] < 0)
24175 pwrindex[0] = 0;
24176 else if (pwrindex[0] > 63)
24177 pwrindex[0] = 63;
24178
24179 if (pwrindex[1] < 0)
24180 pwrindex[1] = 0;
24181 else if (pwrindex[1] > 63)
24182 pwrindex[1] = 63;
24183
24184 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24185 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24186 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24187 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24188 }
24189
24190 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24191 {
24192 int index;
24193 u32 bbmult_scale;
24194 u16 bbmult;
24195 u16 tblentry;
24196
24197 static const struct nphy_txiqcal_ladder ladder_lo[] = {
24198 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24199 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24200 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24201 };
24202
24203 static const struct nphy_txiqcal_ladder ladder_iq[] = {
24204 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24205 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24206 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24207 };
24208
24209 bbmult = (core == PHY_CORE_0) ?
24210 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24211 (pi->nphy_txcal_bbmult & 0xff);
24212
24213 for (index = 0; index < 18; index++) {
24214 bbmult_scale = ladder_lo[index].percent * bbmult;
24215 bbmult_scale /= 100;
24216
24217 tblentry =
24218 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24219 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24220 &tblentry);
24221
24222 bbmult_scale = ladder_iq[index].percent * bbmult;
24223 bbmult_scale /= 100;
24224
24225 tblentry =
24226 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24227 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24228 16, &tblentry);
24229 }
24230 }
24231
24232 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24233 {
24234 u16 tmp;
24235 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24236
24237 tmp = (tmp & (0x7f << 8)) >> 8;
24238 return (u8) tmp;
24239 }
24240
24241 static void
24242 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24243 {
24244 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24245
24246 if (NREV_GT(pi->pubpi.phy_rev, 1))
24247 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24248 }
24249
24250 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24251 {
24252 u16 m0m1;
24253
24254 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24255
24256 return m0m1;
24257 }
24258
24259 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24260 {
24261 u16 m0m1 = (u16) ((m0 << 8) | m1);
24262
24263 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24264 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24265 }
24266
24267 static void
24268 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24269 struct nphy_papd_restore_state *state, u8 core)
24270 {
24271 s32 tone_freq;
24272 u8 off_core;
24273 u16 mixgain = 0;
24274
24275 off_core = core ^ 0x1;
24276 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24277
24278 if (NREV_IS(pi->pubpi.phy_rev, 7)
24279 || NREV_GE(pi->pubpi.phy_rev, 8))
24280 wlc_phy_rfctrl_override_nphy_rev7(
24281 pi, (0x1 << 7),
24282 wlc_phy_read_lpf_bw_ctl_nphy
24283 (pi,
24284 0), 0, 0,
24285 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24286
24287 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24288 if (pi->pubpi.radiorev == 5)
24289 mixgain = (core == 0) ? 0x20 : 0x00;
24290 else if ((pi->pubpi.radiorev == 7)
24291 || (pi->pubpi.radiorev == 8))
24292 mixgain = 0x00;
24293 else if ((pi->pubpi.radiorev <= 4)
24294 || (pi->pubpi.radiorev == 6))
24295 mixgain = 0x00;
24296 } else {
24297 if ((pi->pubpi.radiorev == 4) ||
24298 (pi->pubpi.radiorev == 6))
24299 mixgain = 0x50;
24300 else if ((pi->pubpi.radiorev == 3)
24301 || (pi->pubpi.radiorev == 7)
24302 || (pi->pubpi.radiorev == 8))
24303 mixgain = 0x0;
24304 }
24305
24306 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24307 mixgain, (1 << core), 0,
24308 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24309
24310 wlc_phy_rfctrl_override_1tomany_nphy(
24311 pi,
24312 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24313 1, (1 << core), 0);
24314 wlc_phy_rfctrl_override_1tomany_nphy(
24315 pi,
24316 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24317 0, (1 << off_core), 0);
24318
24319 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24320 0, 0x3, 0,
24321 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24322 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24323 (1 << core), 0,
24324 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24325 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24326 (1 << core), 0,
24327 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24328 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24329 (1 << core), 0,
24330 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24331 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24332 (1 << core), 0,
24333 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24334 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24335 (1 << core), 0,
24336 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24337 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24338 (1 << core), 0,
24339 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24340 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24341 (1 << core), 0,
24342 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24343
24344 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24345 0, (1 << core), 0,
24346 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24347 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24348 (1 << core), 0,
24349 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24350
24351 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24352 0xa6 : 0xa7);
24353 state->afeoverride[core] =
24354 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24355 state->afectrl[off_core] =
24356 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24357 state->afeoverride[off_core] =
24358 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24359
24360 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24361 (0x1 << 2), 0);
24362 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24363 0xa5), (0x1 << 2), (0x1 << 2));
24364
24365 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24366 (0x1 << 2), (0x1 << 2));
24367 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24368 0x8f), (0x1 << 2), (0x1 << 2));
24369
24370 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24371 state->pwrup[core] =
24372 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24373 TXRXCOUPLE_2G_PWRUP);
24374 state->atten[core] =
24375 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24376 TXRXCOUPLE_2G_ATTEN);
24377 state->pwrup[off_core] =
24378 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24379 TXRXCOUPLE_2G_PWRUP);
24380 state->atten[off_core] =
24381 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24382 TXRXCOUPLE_2G_ATTEN);
24383
24384 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24385 TXRXCOUPLE_2G_PWRUP, 0xc);
24386
24387 if ((pi->pubpi.radiorev == 3) ||
24388 (pi->pubpi.radiorev == 4) ||
24389 (pi->pubpi.radiorev == 6))
24390 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24391 TXRXCOUPLE_2G_ATTEN, 0xf0);
24392 else if (pi->pubpi.radiorev == 5)
24393 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24394 TXRXCOUPLE_2G_ATTEN,
24395 (core == 0) ? 0xf7 : 0xf2);
24396 else if ((pi->pubpi.radiorev == 7)
24397 || (pi->pubpi.radiorev == 8))
24398 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24399 TXRXCOUPLE_2G_ATTEN, 0xf0);
24400
24401 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24402 TXRXCOUPLE_2G_PWRUP, 0x0);
24403 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24404 TXRXCOUPLE_2G_ATTEN, 0xff);
24405 } else {
24406 state->pwrup[core] =
24407 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24408 TXRXCOUPLE_5G_PWRUP);
24409 state->atten[core] =
24410 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24411 TXRXCOUPLE_5G_ATTEN);
24412 state->pwrup[off_core] =
24413 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24414 TXRXCOUPLE_5G_PWRUP);
24415 state->atten[off_core] =
24416 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24417 TXRXCOUPLE_5G_ATTEN);
24418
24419 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24420 TXRXCOUPLE_5G_PWRUP, 0xc);
24421
24422 if ((pi->pubpi.radiorev == 7)
24423 || (pi->pubpi.radiorev == 8))
24424 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24425 TXRXCOUPLE_5G_ATTEN, 0xf4);
24426
24427 else
24428 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24429 TXRXCOUPLE_5G_ATTEN, 0xf0);
24430
24431 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24432 TXRXCOUPLE_5G_PWRUP, 0x0);
24433 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24434 TXRXCOUPLE_5G_ATTEN, 0xff);
24435 }
24436
24437 tone_freq = 4000;
24438
24439 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24440
24441 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24442 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24443
24444 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24445 0x2a4, (0x1 << 13), (1) << 13);
24446
24447 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24448 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24449
24450 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24451 0x2a4, (0x1 << 13), (0) << 13);
24452
24453 } else {
24454
24455 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24456
24457 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24458
24459 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24460
24461 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24462 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24463
24464 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24465 0xa6 : 0xa7);
24466 state->afeoverride[core] =
24467 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24468
24469 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24470 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24471 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24472 0xa5),
24473 (0x1 << 0) |
24474 (0x1 << 1) |
24475 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24476
24477 state->vga_master[core] =
24478 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24479 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24480 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24481 state->fbmix[core] =
24482 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24483 TXFBMIX_G);
24484 state->intpa_master[core] =
24485 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24486 INTPAG_MASTER);
24487
24488 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24489 0x03);
24490 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24491 INTPAG_MASTER, 0x04);
24492 } else {
24493 state->fbmix[core] =
24494 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24495 TXFBMIX_A);
24496 state->intpa_master[core] =
24497 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24498 INTPAA_MASTER);
24499
24500 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24501 0x03);
24502 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24503 INTPAA_MASTER, 0x04);
24504
24505 }
24506
24507 tone_freq = 4000;
24508
24509 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24510
24511 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24512 0x29b, (0x1 << 0), (1) << 0);
24513
24514 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24515 0x29b, (0x1 << 0), (0) << 0);
24516
24517 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24518 }
24519 }
24520
24521 static void
24522 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24523 struct nphy_papd_restore_state *state)
24524 {
24525 u8 core;
24526
24527 wlc_phy_stopplayback_nphy(pi);
24528
24529 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24530
24531 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24532
24533 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24534 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24535 TXRXCOUPLE_2G_PWRUP, 0);
24536 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24537 TXRXCOUPLE_2G_ATTEN,
24538 state->atten[core]);
24539 } else {
24540 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24541 TXRXCOUPLE_5G_PWRUP, 0);
24542 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24543 TXRXCOUPLE_5G_ATTEN,
24544 state->atten[core]);
24545 }
24546 }
24547
24548 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24549 wlc_phy_rfctrl_override_nphy_rev7(
24550 pi, (0x1 << 2),
24551 1, 0x3, 0,
24552 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24553 else
24554 wlc_phy_rfctrl_override_nphy_rev7(
24555 pi, (0x1 << 2),
24556 0, 0x3, 1,
24557 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24558
24559 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24560 0, 0x3, 1,
24561 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24562 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24563 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24564 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24565 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24566 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24567 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24569 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24570 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24571 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24572 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24573 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24574 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24575 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24576 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24577 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24578 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24579 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24580 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24581 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24582 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24583 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24584 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24585 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24586 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24587 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24588 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24589 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24590 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24591 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24592
24593 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24594
24595 write_phy_reg(pi, (core == PHY_CORE_0) ?
24596 0xa6 : 0xa7, state->afectrl[core]);
24597 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24598 0xa5, state->afeoverride[core]);
24599 }
24600
24601 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24602 (state->mm & 0xff));
24603
24604 if (NREV_IS(pi->pubpi.phy_rev, 7)
24605 || NREV_GE(pi->pubpi.phy_rev, 8))
24606 wlc_phy_rfctrl_override_nphy_rev7(
24607 pi, (0x1 << 7), 0, 0,
24608 1,
24609 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24610 } else {
24611 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24612 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24613 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24614
24615 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24616 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24617
24618 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24619
24620 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24621 state->vga_master[core]);
24622 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24623 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24624 TXFBMIX_G, state->fbmix[core]);
24625 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24626 INTPAG_MASTER,
24627 state->intpa_master[core]);
24628 } else {
24629 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24630 TXFBMIX_A, state->fbmix[core]);
24631 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24632 INTPAA_MASTER,
24633 state->intpa_master[core]);
24634 }
24635
24636 write_phy_reg(pi, (core == PHY_CORE_0) ?
24637 0xa6 : 0xa7, state->afectrl[core]);
24638 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24639 0xa5, state->afeoverride[core]);
24640 }
24641
24642 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24643 (state->mm & 0xff));
24644
24645 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24646 }
24647 }
24648
24649 static void
24650 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24651 u32 end)
24652 {
24653 u32 *buf, *src, *dst, sz;
24654
24655 sz = end - start + 1;
24656
24657 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24658 if (NULL == buf)
24659 return;
24660
24661 src = buf;
24662 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24663
24664 wlc_phy_table_read_nphy(pi,
24665 (core ==
24666 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24667 NPHY_TBL_ID_EPSILONTBL1),
24668 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24669
24670 do {
24671 u32 phy_a1, phy_a2;
24672 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24673
24674 phy_a1 = end - min(end, (winsz >> 1));
24675 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24676 end + (winsz >> 1));
24677 phy_a3 = phy_a2 - phy_a1 + 1;
24678 phy_a6 = 0;
24679 phy_a7 = 0;
24680
24681 do {
24682 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24683 &phy_a5);
24684 phy_a6 += phy_a4;
24685 phy_a7 += phy_a5;
24686 } while (phy_a2-- != phy_a1);
24687
24688 phy_a6 /= phy_a3;
24689 phy_a7 /= phy_a3;
24690 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24691 } while (end-- != start);
24692
24693 wlc_phy_table_write_nphy(pi,
24694 (core ==
24695 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24696 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24697
24698 kfree(buf);
24699 }
24700
24701 static void
24702 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24703 enum phy_cal_mode cal_mode, u8 core)
24704 {
24705 u16 phy_a1, phy_a2, phy_a3;
24706 u16 phy_a4, phy_a5;
24707 bool phy_a6;
24708 u8 phy_a7, m[2];
24709 u32 phy_a8 = 0;
24710 struct nphy_txgains phy_a9;
24711
24712 if (NREV_LT(pi->pubpi.phy_rev, 3))
24713 return;
24714
24715 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24716
24717 phy_a6 = ((cal_mode == CAL_GCTRL)
24718 || (cal_mode == CAL_SOFT)) ? true : false;
24719
24720 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24721
24722 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24723
24724 if (CHSPEC_IS2G(pi->radio_chanspec))
24725 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24726 (phy_a9.txgm[core] << 12) |
24727 (phy_a9.pga[core] << 8) |
24728 (txgains->gains.pad[core] << 3) |
24729 (phy_a9.ipa[core]));
24730 else
24731 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24732 (phy_a9.txgm[core] << 12) |
24733 (txgains->gains.pga[core] << 8) |
24734 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24735
24736 wlc_phy_rfctrl_override_1tomany_nphy(
24737 pi,
24738 NPHY_REV7_RfctrlOverride_cmd_txgain,
24739 phy_a5, (1 << core), 0);
24740
24741 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24742 if ((pi->pubpi.radiorev <= 4)
24743 || (pi->pubpi.radiorev == 6))
24744 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24745 60 : 79;
24746 else
24747 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24748 45 : 64;
24749 } else {
24750 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24751 }
24752
24753 m[phy_a7] = 0;
24754 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24755
24756 phy_a2 = 63;
24757
24758 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24759 if ((pi->pubpi.radiorev == 4)
24760 || (pi->pubpi.radiorev == 6)) {
24761 phy_a1 = 30;
24762 phy_a3 = 30;
24763 } else {
24764 phy_a1 = 25;
24765 phy_a3 = 25;
24766 }
24767 } else {
24768 if ((pi->pubpi.radiorev == 5)
24769 || (pi->pubpi.radiorev == 7)
24770 || (pi->pubpi.radiorev == 8)) {
24771 phy_a1 = 25;
24772 phy_a3 = 25;
24773 } else {
24774 phy_a1 = 35;
24775 phy_a3 = 35;
24776 }
24777 }
24778
24779 if (cal_mode == CAL_GCTRL) {
24780 if ((pi->pubpi.radiorev == 5)
24781 && (CHSPEC_IS2G(pi->radio_chanspec)))
24782 phy_a1 = 55;
24783 else if (((pi->pubpi.radiorev == 7) &&
24784 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24785 ((pi->pubpi.radiorev == 8) &&
24786 (CHSPEC_IS2G(pi->radio_chanspec))))
24787 phy_a1 = 60;
24788 else
24789 phy_a1 = 63;
24790
24791 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24792
24793 phy_a1 = 35;
24794 phy_a3 = 35;
24795 }
24796
24797 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24798 0x29b, (0x1 << 0), (1) << 0);
24799
24800 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24801 0x29b, (0x1 << 0), (0) << 0);
24802
24803 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24804 0x2a4, (0x1 << 13), (1) << 13);
24805
24806 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24807 0x2a4, (0x1 << 13), (0) << 13);
24808
24809 write_phy_reg(pi, 0x2a1, 0x80);
24810 write_phy_reg(pi, 0x2a2, 0x100);
24811
24812 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24813 0x2a4, (0x7 << 4), (11) << 4);
24814
24815 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24816 0x2a4, (0x7 << 8), (11) << 8);
24817
24818 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24819 0x2a4, (0x7 << 0), (0x3) << 0);
24820
24821 write_phy_reg(pi, 0x2e5, 0x20);
24822
24823 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24824
24825 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24826
24827 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24828
24829 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24830 1, ((core == 0) ? 1 : 2), 0,
24831 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24832 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24833 0, ((core == 0) ? 2 : 1), 0,
24834 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24835
24836 write_phy_reg(pi, 0x2be, 1);
24837 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24838
24839 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24840 0, 0x3, 0,
24841 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24842
24843 wlc_phy_table_write_nphy(pi,
24844 (core ==
24845 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24846 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24847 32, &phy_a8);
24848
24849 if (cal_mode != CAL_GCTRL) {
24850 if (CHSPEC_IS5G(pi->radio_chanspec))
24851 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24852 }
24853
24854 wlc_phy_rfctrl_override_1tomany_nphy(
24855 pi,
24856 NPHY_REV7_RfctrlOverride_cmd_txgain,
24857 phy_a5, (1 << core), 1);
24858
24859 } else {
24860
24861 if (txgains) {
24862 if (txgains->useindex) {
24863 phy_a4 = 15 - ((txgains->index) >> 3);
24864 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24865 if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24866 pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24867 phy_a5 = 0x10f7 | (phy_a4 << 8);
24868 } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24869 phy_a5 = 0x00f7 | (phy_a4 << 8);
24870 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24871 phy_a5 = 0x10f7 | (phy_a4 << 8);
24872 } else {
24873 phy_a5 = 0x50f7 | (phy_a4 << 8);
24874 }
24875 } else {
24876 phy_a5 = 0x70f7 | (phy_a4 << 8);
24877 }
24878 wlc_phy_rfctrl_override_nphy(pi,
24879 (0x1 << 13),
24880 phy_a5,
24881 (1 << core), 0);
24882 } else {
24883 wlc_phy_rfctrl_override_nphy(pi,
24884 (0x1 << 13),
24885 0x5bf7,
24886 (1 << core), 0);
24887 }
24888 }
24889
24890 if (CHSPEC_IS2G(pi->radio_chanspec))
24891 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24892 else
24893 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24894
24895 m[phy_a7] = 0;
24896 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24897
24898 phy_a2 = 63;
24899
24900 if (cal_mode == CAL_FULL) {
24901 phy_a1 = 25;
24902 phy_a3 = 25;
24903 } else if (cal_mode == CAL_SOFT) {
24904 phy_a1 = 25;
24905 phy_a3 = 25;
24906 } else if (cal_mode == CAL_GCTRL) {
24907 phy_a1 = 63;
24908 phy_a3 = 25;
24909 } else {
24910
24911 phy_a1 = 25;
24912 phy_a3 = 25;
24913 }
24914
24915 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24916 0x29b, (0x1 << 0), (1) << 0);
24917
24918 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24919 0x29b, (0x1 << 0), (0) << 0);
24920
24921 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24922 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24923 0x2a4, (0x1 << 13), (1) << 13);
24924
24925 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24926 0x2a4, (0x1 << 13), (0) << 13);
24927
24928 write_phy_reg(pi, 0x2a1, 0x20);
24929 write_phy_reg(pi, 0x2a2, 0x60);
24930
24931 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24932 0x2a4, (0xf << 4), (9) << 4);
24933
24934 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24935 0x2a4, (0xf << 8), (9) << 8);
24936
24937 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24938 0x2a4, (0xf << 0), (0x2) << 0);
24939
24940 write_phy_reg(pi, 0x2e5, 0x20);
24941 } else {
24942 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24943 0x2a4, (0x1 << 11), (1) << 11);
24944
24945 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24946 0x2a4, (0x1 << 11), (0) << 11);
24947
24948 write_phy_reg(pi, 0x2a1, 0x80);
24949 write_phy_reg(pi, 0x2a2, 0x600);
24950
24951 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24952 0x2a4, (0x7 << 4), (0) << 4);
24953
24954 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24955 0x2a4, (0x7 << 8), (0) << 8);
24956
24957 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24958 0x2a4, (0x7 << 0), (0x3) << 0);
24959
24960 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24961
24962 }
24963
24964 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24965
24966 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24967
24968 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24969
24970 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24971
24972 write_phy_reg(pi, 0x2be, 1);
24973 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24974
24975 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24976
24977 wlc_phy_table_write_nphy(pi,
24978 (core ==
24979 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24980 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24981 32, &phy_a8);
24982
24983 if (cal_mode != CAL_GCTRL)
24984 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24985 }
24986 }
24987
24988 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24989 {
24990 int phy_a1;
24991 int phy_a2;
24992 bool phy_a3;
24993 struct nphy_ipa_txcalgains phy_a4;
24994 bool phy_a5 = false;
24995 bool phy_a6 = true;
24996 s32 phy_a7, phy_a8;
24997 u32 phy_a9;
24998 int phy_a10;
24999 bool phy_a11 = false;
25000 int phy_a12;
25001 u8 phy_a13 = 0;
25002 u8 phy_a14;
25003 u8 *phy_a15 = NULL;
25004
25005 phy_a4.useindex = true;
25006 phy_a12 = start_gain;
25007
25008 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25009
25010 phy_a2 = 20;
25011 phy_a1 = 1;
25012
25013 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25014 if (pi->pubpi.radiorev == 5) {
25015
25016 phy_a15 = pad_gain_codes_used_2057rev5;
25017 phy_a13 =
25018 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25019
25020 } else if ((pi->pubpi.radiorev == 7)
25021 || (pi->pubpi.radiorev == 8)) {
25022
25023 phy_a15 = pad_gain_codes_used_2057rev7;
25024 phy_a13 =
25025 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25026
25027 } else {
25028
25029 phy_a15 = pad_all_gain_codes_2057;
25030 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25031 1;
25032 }
25033
25034 } else {
25035
25036 phy_a15 = pga_all_gain_codes_2057;
25037 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25038 }
25039
25040 phy_a14 = 0;
25041
25042 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25043 if (CHSPEC_IS2G(pi->radio_chanspec))
25044 phy_a4.gains.pad[core] =
25045 (u16) phy_a15[phy_a12];
25046 else
25047 phy_a4.gains.pga[core] =
25048 (u16) phy_a15[phy_a12];
25049
25050 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25051
25052 wlc_phy_table_read_nphy(pi,
25053 (core ==
25054 PHY_CORE_0 ?
25055 NPHY_TBL_ID_EPSILONTBL0 :
25056 NPHY_TBL_ID_EPSILONTBL1), 1,
25057 63, 32, &phy_a9);
25058
25059 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25060
25061 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25062 (phy_a8 == 4095) || (phy_a8 == -4096));
25063
25064 if (!phy_a6 && (phy_a3 != phy_a5)) {
25065 if (!phy_a3)
25066 phy_a12 -= (u8) phy_a1;
25067
25068 phy_a11 = true;
25069 break;
25070 }
25071
25072 if (phy_a3)
25073 phy_a12 += (u8) phy_a1;
25074 else
25075 phy_a12 -= (u8) phy_a1;
25076
25077 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25078 if (phy_a12 < phy_a14)
25079 phy_a12 = phy_a14;
25080 else
25081 phy_a12 = phy_a13;
25082
25083 phy_a11 = true;
25084 break;
25085 }
25086
25087 phy_a6 = false;
25088 phy_a5 = phy_a3;
25089 }
25090
25091 } else {
25092 phy_a2 = 10;
25093 phy_a1 = 8;
25094 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25095 phy_a4.index = (u8) phy_a12;
25096 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25097
25098 wlc_phy_table_read_nphy(pi,
25099 (core ==
25100 PHY_CORE_0 ?
25101 NPHY_TBL_ID_EPSILONTBL0 :
25102 NPHY_TBL_ID_EPSILONTBL1), 1,
25103 63, 32, &phy_a9);
25104
25105 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25106
25107 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25108 (phy_a8 == 4095) || (phy_a8 == -4096));
25109
25110 if (!phy_a6 && (phy_a3 != phy_a5)) {
25111 if (!phy_a3)
25112 phy_a12 -= (u8) phy_a1;
25113
25114 phy_a11 = true;
25115 break;
25116 }
25117
25118 if (phy_a3)
25119 phy_a12 += (u8) phy_a1;
25120 else
25121 phy_a12 -= (u8) phy_a1;
25122
25123 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25124 if (phy_a12 < 0)
25125 phy_a12 = 0;
25126 else
25127 phy_a12 = 127;
25128
25129 phy_a11 = true;
25130 break;
25131 }
25132
25133 phy_a6 = false;
25134 phy_a5 = phy_a3;
25135 }
25136
25137 }
25138
25139 if (NREV_GE(pi->pubpi.phy_rev, 7))
25140 return (u8) phy_a15[phy_a12];
25141 else
25142 return (u8) phy_a12;
25143
25144 }
25145
25146 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25147 {
25148 struct nphy_ipa_txcalgains phy_b1[2];
25149 struct nphy_papd_restore_state phy_b2;
25150 bool phy_b3;
25151 u8 phy_b4;
25152 u8 phy_b5;
25153 s16 phy_b6, phy_b7, phy_b8;
25154 u16 phy_b9;
25155 s16 phy_b10, phy_b11, phy_b12;
25156
25157 phy_b11 = 0;
25158 phy_b12 = 0;
25159 phy_b7 = 0;
25160 phy_b8 = 0;
25161 phy_b6 = 0;
25162
25163 if (pi->nphy_papd_skip == 1)
25164 return;
25165
25166 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25167 MCTL_EN_MAC));
25168 if (!phy_b3)
25169 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25170
25171 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25172
25173 pi->nphy_force_papd_cal = false;
25174
25175 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25176 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25177 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25178
25179 pi->nphy_papd_last_cal = pi->sh->now;
25180 pi->nphy_papd_recal_counter++;
25181
25182 phy_b4 = pi->nphy_txpwrctrl;
25183 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25184
25185 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25186 nphy_papd_scaltbl);
25187 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25188 nphy_papd_scaltbl);
25189
25190 phy_b9 = read_phy_reg(pi, 0x01);
25191 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25192
25193 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25194 s32 i, val = 0;
25195 for (i = 0; i < 64; i++)
25196 wlc_phy_table_write_nphy(pi,
25197 ((phy_b5 ==
25198 PHY_CORE_0) ?
25199 NPHY_TBL_ID_EPSILONTBL0 :
25200 NPHY_TBL_ID_EPSILONTBL1), 1,
25201 i, 32, &val);
25202 }
25203
25204 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25205
25206 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25207 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25208 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25209
25210 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25211 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25212 if ((pi->pubpi.radiorev == 3)
25213 || (pi->pubpi.radiorev == 4)
25214 || (pi->pubpi.radiorev == 6)) {
25215 pi->nphy_papd_cal_gain_index[phy_b5] =
25216 23;
25217 } else if (pi->pubpi.radiorev == 5) {
25218 pi->nphy_papd_cal_gain_index[phy_b5] =
25219 0;
25220 pi->nphy_papd_cal_gain_index[phy_b5] =
25221 wlc_phy_a3_nphy(
25222 pi,
25223 pi->
25224 nphy_papd_cal_gain_index
25225 [phy_b5],
25226 phy_b5);
25227
25228 } else if ((pi->pubpi.radiorev == 7)
25229 || (pi->pubpi.radiorev == 8)) {
25230
25231 pi->nphy_papd_cal_gain_index[phy_b5] =
25232 0;
25233 pi->nphy_papd_cal_gain_index[phy_b5] =
25234 wlc_phy_a3_nphy(
25235 pi,
25236 pi->
25237 nphy_papd_cal_gain_index
25238 [phy_b5],
25239 phy_b5);
25240
25241 }
25242
25243 phy_b1[phy_b5].gains.pad[phy_b5] =
25244 pi->nphy_papd_cal_gain_index[phy_b5];
25245
25246 } else {
25247 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25248 pi->nphy_papd_cal_gain_index[phy_b5] =
25249 wlc_phy_a3_nphy(
25250 pi,
25251 pi->
25252 nphy_papd_cal_gain_index
25253 [phy_b5], phy_b5);
25254 phy_b1[phy_b5].gains.pga[phy_b5] =
25255 pi->nphy_papd_cal_gain_index[phy_b5];
25256 }
25257 } else {
25258 phy_b1[phy_b5].useindex = true;
25259 phy_b1[phy_b5].index = 16;
25260 phy_b1[phy_b5].index =
25261 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25262 phy_b5);
25263
25264 pi->nphy_papd_cal_gain_index[phy_b5] =
25265 15 - ((phy_b1[phy_b5].index) >> 3);
25266 }
25267
25268 switch (pi->nphy_papd_cal_type) {
25269 case 0:
25270 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25271 break;
25272 case 1:
25273 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25274 break;
25275 }
25276
25277 if (NREV_GE(pi->pubpi.phy_rev, 7))
25278 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25279 }
25280
25281 if (NREV_LT(pi->pubpi.phy_rev, 7))
25282 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25283
25284 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25285 int eps_offset = 0;
25286
25287 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25288 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25289 if (pi->pubpi.radiorev == 3)
25290 eps_offset = -2;
25291 else if (pi->pubpi.radiorev == 5)
25292 eps_offset = 3;
25293 else
25294 eps_offset = -1;
25295 } else {
25296 eps_offset = 2;
25297 }
25298
25299 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25300 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25301 phy_b10 = 0;
25302 if ((pi->pubpi.radiorev == 3) ||
25303 (pi->pubpi.radiorev == 4) ||
25304 (pi->pubpi.radiorev == 6)) {
25305 phy_b12 = -(
25306 nphy_papd_padgain_dlt_2g_2057rev3n4
25307 [phy_b8] + 1) / 2;
25308 phy_b10 = -1;
25309 } else if (pi->pubpi.radiorev == 5) {
25310 phy_b12 = -(
25311 nphy_papd_padgain_dlt_2g_2057rev5
25312 [phy_b8] + 1) / 2;
25313 } else if ((pi->pubpi.radiorev == 7) ||
25314 (pi->pubpi.radiorev == 8)) {
25315 phy_b12 = -(
25316 nphy_papd_padgain_dlt_2g_2057rev7
25317 [phy_b8] + 1) / 2;
25318 }
25319 } else {
25320 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25321 if ((pi->pubpi.radiorev == 3) ||
25322 (pi->pubpi.radiorev == 4) ||
25323 (pi->pubpi.radiorev == 6))
25324 phy_b11 =
25325 -(nphy_papd_pgagain_dlt_5g_2057
25326 [phy_b7]
25327 + 1) / 2;
25328 else if ((pi->pubpi.radiorev == 7)
25329 || (pi->pubpi.radiorev == 8))
25330 phy_b11 = -(
25331 nphy_papd_pgagain_dlt_5g_2057rev7
25332 [phy_b7] + 1) / 2;
25333
25334 phy_b10 = -9;
25335 }
25336
25337 if (CHSPEC_IS2G(pi->radio_chanspec))
25338 phy_b6 =
25339 -60 + 27 + eps_offset + phy_b12 +
25340 phy_b10;
25341 else
25342 phy_b6 =
25343 -60 + 27 + eps_offset + phy_b11 +
25344 phy_b10;
25345
25346 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25347 0x29c, (0x1ff << 7), (phy_b6) << 7);
25348
25349 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25350 } else {
25351 if (NREV_LT(pi->pubpi.phy_rev, 5))
25352 eps_offset = 4;
25353 else
25354 eps_offset = 2;
25355
25356 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25357
25358 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25359 phy_b11 =
25360 -(nphy_papd_pga_gain_delta_ipa_2g[
25361 phy_b7] +
25362 1) / 2;
25363 phy_b10 = 0;
25364 } else {
25365 phy_b11 =
25366 -(nphy_papd_pga_gain_delta_ipa_5g[
25367 phy_b7] +
25368 1) / 2;
25369 phy_b10 = -9;
25370 }
25371
25372 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25373
25374 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25375 0x29c, (0x1ff << 7), (phy_b6) << 7);
25376
25377 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25378 }
25379 }
25380
25381 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25382 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25383
25384 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25385 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25386
25387 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25388 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25389 0x2a4, (0x1 << 13), (0) << 13);
25390
25391 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25392 0x2a4, (0x1 << 13), (0) << 13);
25393
25394 } else {
25395 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25396 0x2a4, (0x1 << 11), (0) << 11);
25397
25398 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25399 0x2a4, (0x1 << 11), (0) << 11);
25400
25401 }
25402 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25403
25404 write_phy_reg(pi, 0x01, phy_b9);
25405
25406 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25407
25408 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25409 if (phy_b4 == PHY_TPC_HW_OFF) {
25410 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25411 (s8) (pi->nphy_txpwrindex[0].
25412 index_internal), false);
25413 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25414 (s8) (pi->nphy_txpwrindex[1].
25415 index_internal), false);
25416 }
25417
25418 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25419
25420 if (!phy_b3)
25421 wlapi_enable_mac(pi->sh->physhim);
25422 }
25423
25424 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25425 {
25426 struct nphy_txgains target_gain;
25427 u8 tx_pwr_ctrl_state;
25428 bool fullcal = true;
25429 bool restore_tx_gain = false;
25430 bool mphase;
25431
25432 if (PHY_MUTED(pi))
25433 return;
25434
25435 if (caltype == PHY_PERICAL_AUTO)
25436 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25437 else if (caltype == PHY_PERICAL_PARTIAL)
25438 fullcal = false;
25439
25440 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25441 fullcal =
25442 (pi->cal_type_override ==
25443 PHY_PERICAL_FULL) ? true : false;
25444
25445 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25446 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25447 wlc_phy_cal_perical_mphase_restart(pi);
25448 }
25449
25450 if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25451 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25452
25453 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25454
25455 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25456
25457 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25458 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25459 pi->nphy_cal_orig_pwr_idx[0] =
25460 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25461 pi->nphy_cal_orig_pwr_idx[1] =
25462 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25463
25464 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25465 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25466 0x110, 16,
25467 pi->nphy_cal_orig_tx_gain);
25468 } else {
25469 pi->nphy_cal_orig_tx_gain[0] = 0;
25470 pi->nphy_cal_orig_tx_gain[1] = 0;
25471 }
25472 }
25473 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25474 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25475 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25476
25477 if (pi->antsel_type == ANTSEL_2x3)
25478 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25479
25480 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25481 if (!mphase) {
25482
25483 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25484 wlc_phy_precal_txgain_nphy(pi);
25485 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25486 restore_tx_gain = true;
25487
25488 target_gain = pi->nphy_cal_target_gain;
25489 }
25490 if (0 ==
25491 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25492 mphase)) {
25493 if (PHY_IPA(pi))
25494 wlc_phy_a4(pi, true);
25495
25496 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25497 wlapi_enable_mac(pi->sh->physhim);
25498 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25499 10000);
25500 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25501 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25502
25503 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25504 (pi->first_cal_after_assoc ||
25505 (pi->cal_type_override ==
25506 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25507 wlc_phy_savecal_nphy(pi);
25508
25509 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25510
25511 pi->nphy_perical_last = pi->sh->now;
25512 }
25513 }
25514 if (caltype != PHY_PERICAL_AUTO)
25515 wlc_phy_rssi_cal_nphy(pi);
25516
25517 if (pi->first_cal_after_assoc
25518 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25519 pi->first_cal_after_assoc = false;
25520 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25521 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25522 }
25523
25524 if (NREV_GE(pi->pubpi.phy_rev, 3))
25525 wlc_phy_radio205x_vcocal_nphy(pi);
25526 } else {
25527 switch (pi->mphase_cal_phase_id) {
25528 case MPHASE_CAL_STATE_INIT:
25529 pi->nphy_perical_last = pi->sh->now;
25530 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25531
25532 if (NREV_GE(pi->pubpi.phy_rev, 3))
25533 wlc_phy_precal_txgain_nphy(pi);
25534
25535 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25536 pi->mphase_cal_phase_id++;
25537 break;
25538
25539 case MPHASE_CAL_STATE_TXPHASE0:
25540 case MPHASE_CAL_STATE_TXPHASE1:
25541 case MPHASE_CAL_STATE_TXPHASE2:
25542 case MPHASE_CAL_STATE_TXPHASE3:
25543 case MPHASE_CAL_STATE_TXPHASE4:
25544 case MPHASE_CAL_STATE_TXPHASE5:
25545 if ((pi->radar_percal_mask & 0x10) != 0)
25546 pi->nphy_rxcal_active = true;
25547
25548 if (wlc_phy_cal_txiqlo_nphy
25549 (pi, pi->nphy_cal_target_gain, fullcal,
25550 true) != 0) {
25551
25552 wlc_phy_cal_perical_mphase_reset(pi);
25553 break;
25554 }
25555
25556 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25557 (pi->mphase_cal_phase_id ==
25558 MPHASE_CAL_STATE_TXPHASE4))
25559 pi->mphase_cal_phase_id += 2;
25560 else
25561 pi->mphase_cal_phase_id++;
25562 break;
25563
25564 case MPHASE_CAL_STATE_PAPDCAL:
25565 if ((pi->radar_percal_mask & 0x2) != 0)
25566 pi->nphy_rxcal_active = true;
25567
25568 if (PHY_IPA(pi))
25569 wlc_phy_a4(pi, true);
25570
25571 pi->mphase_cal_phase_id++;
25572 break;
25573
25574 case MPHASE_CAL_STATE_RXCAL:
25575 if ((pi->radar_percal_mask & 0x1) != 0)
25576 pi->nphy_rxcal_active = true;
25577 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25578 (pi->first_cal_after_assoc ||
25579 (pi->cal_type_override ==
25580 PHY_PERICAL_FULL)) ? 2 : 0,
25581 false) == 0)
25582 wlc_phy_savecal_nphy(pi);
25583
25584 pi->mphase_cal_phase_id++;
25585 break;
25586
25587 case MPHASE_CAL_STATE_RSSICAL:
25588 if ((pi->radar_percal_mask & 0x4) != 0)
25589 pi->nphy_rxcal_active = true;
25590 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25591 wlc_phy_rssi_cal_nphy(pi);
25592
25593 if (NREV_GE(pi->pubpi.phy_rev, 3))
25594 wlc_phy_radio205x_vcocal_nphy(pi);
25595
25596 restore_tx_gain = true;
25597
25598 if (pi->first_cal_after_assoc)
25599 pi->mphase_cal_phase_id++;
25600 else
25601 wlc_phy_cal_perical_mphase_reset(pi);
25602
25603 break;
25604
25605 case MPHASE_CAL_STATE_IDLETSSI:
25606 if ((pi->radar_percal_mask & 0x8) != 0)
25607 pi->nphy_rxcal_active = true;
25608
25609 if (pi->first_cal_after_assoc) {
25610 pi->first_cal_after_assoc = false;
25611 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25612 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25613 }
25614
25615 wlc_phy_cal_perical_mphase_reset(pi);
25616 break;
25617
25618 default:
25619 wlc_phy_cal_perical_mphase_reset(pi);
25620 break;
25621 }
25622 }
25623
25624 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25625 if (restore_tx_gain) {
25626 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25627
25628 wlc_phy_txpwr_index_nphy(pi, 1,
25629 pi->
25630 nphy_cal_orig_pwr_idx
25631 [0], false);
25632 wlc_phy_txpwr_index_nphy(pi, 2,
25633 pi->
25634 nphy_cal_orig_pwr_idx
25635 [1], false);
25636
25637 pi->nphy_txpwrindex[0].index = -1;
25638 pi->nphy_txpwrindex[1].index = -1;
25639 } else {
25640 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25641 (s8) (pi->
25642 nphy_txpwrindex
25643 [0].
25644 index_internal),
25645 false);
25646 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25647 (s8) (pi->
25648 nphy_txpwrindex
25649 [1].
25650 index_internal),
25651 false);
25652 }
25653 }
25654 }
25655
25656 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25657 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25658 wlapi_enable_mac(pi->sh->physhim);
25659 }
25660
25661 int
25662 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25663 bool fullcal, bool mphase)
25664 {
25665 u16 val;
25666 u16 tbl_buf[11];
25667 u8 cal_cnt;
25668 u16 cal_cmd;
25669 u8 num_cals, max_cal_cmds;
25670 u16 core_no, cal_type;
25671 u16 diq_start = 0;
25672 u8 phy_bw;
25673 u16 max_val;
25674 u16 tone_freq;
25675 u16 gain_save[2];
25676 u16 cal_gain[2];
25677 struct nphy_iqcal_params cal_params[2];
25678 u32 tbl_len;
25679 const void *tbl_ptr;
25680 bool ladder_updated[2];
25681 u8 mphase_cal_lastphase = 0;
25682 int bcmerror = 0;
25683 bool phyhang_avoid_state = false;
25684
25685 static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25686 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25687 0x1902,
25688 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25689 0x6407
25690 };
25691
25692 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25693 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25694 0x3200,
25695 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25696 0x6407
25697 };
25698
25699 static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25700 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25701 0x1202,
25702 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25703 0x4707
25704 };
25705
25706 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25707 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25708 0x2300,
25709 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25710 0x4707
25711 };
25712
25713 static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25714 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25715 0x0000
25716 };
25717
25718 static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25719 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25720 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25721 };
25722
25723 static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25724 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25725 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25726 };
25727
25728 static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25729 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25730 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25731 0x0000
25732 };
25733
25734 static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25735 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25736 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25737 };
25738
25739 static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25740 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25741 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25742 };
25743
25744 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25745
25746 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25747 phyhang_avoid_state = pi->phyhang_avoid;
25748 pi->phyhang_avoid = false;
25749 }
25750
25751 if (CHSPEC_IS40(pi->radio_chanspec))
25752 phy_bw = 40;
25753 else
25754 phy_bw = 20;
25755
25756 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25757
25758 for (core_no = 0; core_no <= 1; core_no++) {
25759 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25760 &cal_params[core_no]);
25761 cal_gain[core_no] = cal_params[core_no].cal_gain;
25762 }
25763
25764 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25765
25766 wlc_phy_txcal_radio_setup_nphy(pi);
25767
25768 wlc_phy_txcal_physetup_nphy(pi);
25769
25770 ladder_updated[0] = ladder_updated[1] = false;
25771 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25772 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25773 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25774
25775 if (phy_bw == 40) {
25776 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25777 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25778 } else {
25779 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25780 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25781 }
25782 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25783 16, tbl_ptr);
25784
25785 if (phy_bw == 40) {
25786 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25787 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25788 } else {
25789 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25790 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25791 }
25792 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25793 16, tbl_ptr);
25794 }
25795
25796 if (NREV_GE(pi->pubpi.phy_rev, 7))
25797 write_phy_reg(pi, 0xc2, 0x8ad9);
25798 else
25799 write_phy_reg(pi, 0xc2, 0x8aa9);
25800
25801 max_val = 250;
25802 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25803
25804 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25805 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25806 bcmerror = 0;
25807 } else {
25808 bcmerror =
25809 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25810 false);
25811 }
25812
25813 if (bcmerror == 0) {
25814
25815 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25816 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25817 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25818 if (NREV_LT(pi->pubpi.phy_rev, 3))
25819 tbl_len -= 2;
25820 } else {
25821 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25822
25823 tbl_ptr = pi->nphy_txiqlocal_bestc;
25824 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25825 if (NREV_LT(pi->pubpi.phy_rev, 3))
25826 tbl_len -= 2;
25827 } else {
25828
25829 fullcal = true;
25830
25831 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25832 tbl_ptr =
25833 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25834 tbl_len = ARRAY_SIZE(
25835 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25836 } else {
25837 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25838 tbl_len = ARRAY_SIZE(
25839 tbl_tx_iqlo_cal_startcoefs);
25840 }
25841 }
25842 }
25843 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25844 16, tbl_ptr);
25845
25846 if (fullcal) {
25847 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25848 ARRAY_SIZE(
25849 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25850 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25851 } else {
25852 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25853 ARRAY_SIZE(
25854 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25855 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25856 }
25857
25858 if (mphase) {
25859 cal_cnt = pi->mphase_txcal_cmdidx;
25860 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25861 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25862 else
25863 num_cals = max_cal_cmds;
25864 } else {
25865 cal_cnt = 0;
25866 num_cals = max_cal_cmds;
25867 }
25868
25869 for (; cal_cnt < num_cals; cal_cnt++) {
25870
25871 if (fullcal) {
25872 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25873 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25874 [cal_cnt] :
25875 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25876 } else {
25877 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25878 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25879 cal_cnt]
25880 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25881 }
25882
25883 core_no = ((cal_cmd & 0x3000) >> 12);
25884 cal_type = ((cal_cmd & 0x0F00) >> 8);
25885
25886 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25887 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25888 PHY_IPA(pi)
25889 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25890 if (!ladder_updated[core_no]) {
25891 wlc_phy_update_txcal_ladder_nphy(
25892 pi,
25893 core_no);
25894 ladder_updated[core_no] = true;
25895 }
25896 }
25897
25898 val =
25899 (cal_params[core_no].
25900 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25901 write_phy_reg(pi, 0xc1, val);
25902
25903 if ((cal_type == 1) || (cal_type == 3)
25904 || (cal_type == 4)) {
25905
25906 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25907 1, 69 + core_no, 16,
25908 tbl_buf);
25909
25910 diq_start = tbl_buf[0];
25911
25912 tbl_buf[0] = 0;
25913 wlc_phy_table_write_nphy(pi,
25914 NPHY_TBL_ID_IQLOCAL, 1,
25915 69 + core_no, 16,
25916 tbl_buf);
25917 }
25918
25919 write_phy_reg(pi, 0xc0, cal_cmd);
25920
25921 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25922 20000);
25923 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25924 "HW error: txiq calib"))
25925 return -EIO;
25926
25927 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25928 tbl_len, 96, 16, tbl_buf);
25929 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25930 tbl_len, 64, 16, tbl_buf);
25931
25932 if ((cal_type == 1) || (cal_type == 3)
25933 || (cal_type == 4)) {
25934
25935 tbl_buf[0] = diq_start;
25936
25937 }
25938
25939 }
25940
25941 if (mphase) {
25942 pi->mphase_txcal_cmdidx = num_cals;
25943 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25944 pi->mphase_txcal_cmdidx = 0;
25945 }
25946
25947 mphase_cal_lastphase =
25948 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25949 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25950
25951 if (!mphase
25952 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25953
25954 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25955 16, tbl_buf);
25956 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25957 16, tbl_buf);
25958
25959 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25960
25961 tbl_buf[0] = 0;
25962 tbl_buf[1] = 0;
25963 tbl_buf[2] = 0;
25964 tbl_buf[3] = 0;
25965
25966 }
25967 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25968 16, tbl_buf);
25969
25970 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25971 16, tbl_buf);
25972 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25973 16, tbl_buf);
25974
25975 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25976 16, tbl_buf);
25977
25978 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25979 if (NREV_LT(pi->pubpi.phy_rev, 3))
25980 tbl_len -= 2;
25981
25982 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25983 tbl_len, 96, 16,
25984 pi->nphy_txiqlocal_bestc);
25985
25986 pi->nphy_txiqlocal_coeffsvalid = true;
25987 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25988 } else {
25989 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25990 if (NREV_LT(pi->pubpi.phy_rev, 3))
25991 tbl_len -= 2;
25992
25993 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25994 tbl_len, 96, 16,
25995 pi->mphase_txcal_bestcoeffs);
25996 }
25997
25998 wlc_phy_stopplayback_nphy(pi);
25999
26000 write_phy_reg(pi, 0xc2, 0x0000);
26001
26002 }
26003
26004 wlc_phy_txcal_phycleanup_nphy(pi);
26005
26006 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26007 gain_save);
26008
26009 wlc_phy_txcal_radio_cleanup_nphy(pi);
26010
26011 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26012 if (!mphase
26013 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26014 wlc_phy_tx_iq_war_nphy(pi);
26015 }
26016
26017 if (NREV_GE(pi->pubpi.phy_rev, 4))
26018 pi->phyhang_avoid = phyhang_avoid_state;
26019
26020 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26021
26022 return bcmerror;
26023 }
26024
26025 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26026 {
26027 u16 tbl_buf[7];
26028
26029 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26030 (pi->nphy_txiqlocal_coeffsvalid)) {
26031 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26032 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26033
26034 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26035 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26036 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26037 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26038
26039 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26040 16, pi->nphy_txiqlocal_bestc);
26041
26042 tbl_buf[0] = 0;
26043 tbl_buf[1] = 0;
26044 tbl_buf[2] = 0;
26045 tbl_buf[3] = 0;
26046 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26047 16, tbl_buf);
26048
26049 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26050 16,
26051 &pi->nphy_txiqlocal_bestc[5]);
26052
26053 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26054 16,
26055 &pi->nphy_txiqlocal_bestc[5]);
26056 }
26057 }
26058 }
26059
26060 void
26061 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26062 struct nphy_iq_comp *pcomp)
26063 {
26064 if (write) {
26065 write_phy_reg(pi, 0x9a, pcomp->a0);
26066 write_phy_reg(pi, 0x9b, pcomp->b0);
26067 write_phy_reg(pi, 0x9c, pcomp->a1);
26068 write_phy_reg(pi, 0x9d, pcomp->b1);
26069 } else {
26070 pcomp->a0 = read_phy_reg(pi, 0x9a);
26071 pcomp->b0 = read_phy_reg(pi, 0x9b);
26072 pcomp->a1 = read_phy_reg(pi, 0x9c);
26073 pcomp->b1 = read_phy_reg(pi, 0x9d);
26074 }
26075 }
26076
26077 void
26078 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26079 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26080 {
26081 u8 core;
26082
26083 write_phy_reg(pi, 0x12b, num_samps);
26084 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26085 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26086 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26087
26088 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26089
26090 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26091 10000);
26092 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26093 "HW error: rxiq est"))
26094 return;
26095
26096 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26097 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26098 est[core].i_pwr =
26099 (read_phy_reg(pi,
26100 NPHY_IqestipwrAccHi(core)) << 16)
26101 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26102 est[core].q_pwr =
26103 (read_phy_reg(pi,
26104 NPHY_IqestqpwrAccHi(core)) << 16)
26105 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26106 est[core].iq_prod =
26107 (read_phy_reg(pi,
26108 NPHY_IqestIqAccHi(core)) << 16) |
26109 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26110 }
26111 }
26112 }
26113
26114 #define CAL_RETRY_CNT 2
26115 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26116 {
26117 u8 curr_core;
26118 struct phy_iq_est est[PHY_CORE_MAX];
26119 struct nphy_iq_comp old_comp, new_comp;
26120 s32 iq = 0;
26121 u32 ii = 0, qq = 0;
26122 s16 iq_nbits, qq_nbits, brsh, arsh;
26123 s32 a, b, temp;
26124 int bcmerror = 0;
26125 uint cal_retry = 0;
26126
26127 if (core_mask == 0x0)
26128 return;
26129
26130 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26131 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26132 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26133
26134 cal_try:
26135 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26136
26137 new_comp = old_comp;
26138
26139 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26140
26141 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26142 iq = est[curr_core].iq_prod;
26143 ii = est[curr_core].i_pwr;
26144 qq = est[curr_core].q_pwr;
26145 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26146 iq = est[curr_core].iq_prod;
26147 ii = est[curr_core].i_pwr;
26148 qq = est[curr_core].q_pwr;
26149 } else {
26150 continue;
26151 }
26152
26153 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26154 bcmerror = -EBADE;
26155 break;
26156 }
26157
26158 iq_nbits = wlc_phy_nbits(iq);
26159 qq_nbits = wlc_phy_nbits(qq);
26160
26161 arsh = 10 - (30 - iq_nbits);
26162 if (arsh >= 0) {
26163 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26164 temp = (s32) (ii >> arsh);
26165 if (temp == 0) {
26166 bcmerror = -EBADE;
26167 break;
26168 }
26169 } else {
26170 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26171 temp = (s32) (ii << -arsh);
26172 if (temp == 0) {
26173 bcmerror = -EBADE;
26174 break;
26175 }
26176 }
26177
26178 a /= temp;
26179
26180 brsh = qq_nbits - 31 + 20;
26181 if (brsh >= 0) {
26182 b = (qq << (31 - qq_nbits));
26183 temp = (s32) (ii >> brsh);
26184 if (temp == 0) {
26185 bcmerror = -EBADE;
26186 break;
26187 }
26188 } else {
26189 b = (qq << (31 - qq_nbits));
26190 temp = (s32) (ii << -brsh);
26191 if (temp == 0) {
26192 bcmerror = -EBADE;
26193 break;
26194 }
26195 }
26196 b /= temp;
26197 b -= a * a;
26198 b = (s32) int_sqrt((unsigned long) b);
26199 b -= (1 << 10);
26200
26201 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26202 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26203 new_comp.a0 = (s16) a & 0x3ff;
26204 new_comp.b0 = (s16) b & 0x3ff;
26205 } else {
26206
26207 new_comp.a0 = (s16) b & 0x3ff;
26208 new_comp.b0 = (s16) a & 0x3ff;
26209 }
26210 }
26211 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26212 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26213 new_comp.a1 = (s16) a & 0x3ff;
26214 new_comp.b1 = (s16) b & 0x3ff;
26215 } else {
26216
26217 new_comp.a1 = (s16) b & 0x3ff;
26218 new_comp.b1 = (s16) a & 0x3ff;
26219 }
26220 }
26221 }
26222
26223 if (bcmerror != 0) {
26224 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26225
26226 if (cal_retry < CAL_RETRY_CNT) {
26227 cal_retry++;
26228 goto cal_try;
26229 }
26230
26231 new_comp = old_comp;
26232 }
26233
26234 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26235 }
26236
26237 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26238 {
26239 u16 offtune_val;
26240 u16 bias_g = 0;
26241 u16 bias_a = 0;
26242
26243 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26244 if (rx_core == PHY_CORE_0) {
26245 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26246 pi->tx_rx_cal_radio_saveregs[0] =
26247 read_radio_reg(pi,
26248 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26249 pi->tx_rx_cal_radio_saveregs[1] =
26250 read_radio_reg(pi,
26251 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26252
26253 write_radio_reg(pi,
26254 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26255 0x3);
26256 write_radio_reg(pi,
26257 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26258 0xaf);
26259
26260 } else {
26261 pi->tx_rx_cal_radio_saveregs[0] =
26262 read_radio_reg(pi,
26263 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26264 pi->tx_rx_cal_radio_saveregs[1] =
26265 read_radio_reg(pi,
26266 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26267
26268 write_radio_reg(
26269 pi,
26270 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26271 0x3);
26272 write_radio_reg(
26273 pi,
26274 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26275 0x7f);
26276 }
26277
26278 } else {
26279 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26280 pi->tx_rx_cal_radio_saveregs[0] =
26281 read_radio_reg(pi,
26282 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26283 pi->tx_rx_cal_radio_saveregs[1] =
26284 read_radio_reg(pi,
26285 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26286
26287 write_radio_reg(
26288 pi,
26289 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26290 0x3);
26291 write_radio_reg(
26292 pi,
26293 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26294 0xaf);
26295
26296 } else {
26297 pi->tx_rx_cal_radio_saveregs[0] =
26298 read_radio_reg(pi,
26299 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26300 pi->tx_rx_cal_radio_saveregs[1] =
26301 read_radio_reg(pi,
26302 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26303
26304 write_radio_reg(pi,
26305 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26306 0x3);
26307 write_radio_reg(pi,
26308 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26309 0x7f);
26310 }
26311 }
26312
26313 } else {
26314 if (rx_core == PHY_CORE_0) {
26315 pi->tx_rx_cal_radio_saveregs[0] =
26316 read_radio_reg(pi,
26317 RADIO_2056_TX_RXIQCAL_TXMUX |
26318 RADIO_2056_TX1);
26319 pi->tx_rx_cal_radio_saveregs[1] =
26320 read_radio_reg(pi,
26321 RADIO_2056_RX_RXIQCAL_RXMUX |
26322 RADIO_2056_RX0);
26323
26324 if (pi->pubpi.radiorev >= 5) {
26325 pi->tx_rx_cal_radio_saveregs[2] =
26326 read_radio_reg(pi,
26327 RADIO_2056_RX_RXSPARE2 |
26328 RADIO_2056_RX0);
26329 pi->tx_rx_cal_radio_saveregs[3] =
26330 read_radio_reg(pi,
26331 RADIO_2056_TX_TXSPARE2 |
26332 RADIO_2056_TX1);
26333 }
26334
26335 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26336
26337 if (pi->pubpi.radiorev >= 5) {
26338 pi->tx_rx_cal_radio_saveregs[4] =
26339 read_radio_reg(pi,
26340 RADIO_2056_RX_LNAA_MASTER
26341 | RADIO_2056_RX0);
26342
26343 write_radio_reg(
26344 pi,
26345 RADIO_2056_RX_LNAA_MASTER
26346 | RADIO_2056_RX0, 0x40);
26347
26348 write_radio_reg(pi,
26349 RADIO_2056_TX_TXSPARE2 |
26350 RADIO_2056_TX1, bias_a);
26351
26352 write_radio_reg(pi,
26353 RADIO_2056_RX_RXSPARE2 |
26354 RADIO_2056_RX0, bias_a);
26355 } else {
26356 pi->tx_rx_cal_radio_saveregs[4] =
26357 read_radio_reg(pi,
26358 RADIO_2056_RX_LNAA_TUNE
26359 | RADIO_2056_RX0);
26360
26361 offtune_val =
26362 (pi->tx_rx_cal_radio_saveregs
26363 [2] & 0xF0) >> 8;
26364 offtune_val =
26365 (offtune_val <= 0x7) ? 0xF : 0;
26366
26367 mod_radio_reg(pi,
26368 RADIO_2056_RX_LNAA_TUNE |
26369 RADIO_2056_RX0, 0xF0,
26370 (offtune_val << 8));
26371 }
26372
26373 write_radio_reg(pi,
26374 RADIO_2056_TX_RXIQCAL_TXMUX |
26375 RADIO_2056_TX1, 0x9);
26376 write_radio_reg(pi,
26377 RADIO_2056_RX_RXIQCAL_RXMUX |
26378 RADIO_2056_RX0, 0x9);
26379 } else {
26380 if (pi->pubpi.radiorev >= 5) {
26381 pi->tx_rx_cal_radio_saveregs[4] =
26382 read_radio_reg(
26383 pi,
26384 RADIO_2056_RX_LNAG_MASTER
26385 | RADIO_2056_RX0);
26386
26387 write_radio_reg(
26388 pi,
26389 RADIO_2056_RX_LNAG_MASTER
26390 | RADIO_2056_RX0, 0x40);
26391
26392 write_radio_reg(
26393 pi,
26394 RADIO_2056_TX_TXSPARE2
26395 |
26396 RADIO_2056_TX1, bias_g);
26397
26398 write_radio_reg(
26399 pi,
26400 RADIO_2056_RX_RXSPARE2
26401 |
26402 RADIO_2056_RX0, bias_g);
26403
26404 } else {
26405 pi->tx_rx_cal_radio_saveregs[4] =
26406 read_radio_reg(
26407 pi,
26408 RADIO_2056_RX_LNAG_TUNE
26409 | RADIO_2056_RX0);
26410
26411 offtune_val =
26412 (pi->
26413 tx_rx_cal_radio_saveregs[2] &
26414 0xF0) >> 8;
26415 offtune_val =
26416 (offtune_val <= 0x7) ? 0xF : 0;
26417
26418 mod_radio_reg(pi,
26419 RADIO_2056_RX_LNAG_TUNE |
26420 RADIO_2056_RX0, 0xF0,
26421 (offtune_val << 8));
26422 }
26423
26424 write_radio_reg(pi,
26425 RADIO_2056_TX_RXIQCAL_TXMUX |
26426 RADIO_2056_TX1, 0x6);
26427 write_radio_reg(pi,
26428 RADIO_2056_RX_RXIQCAL_RXMUX |
26429 RADIO_2056_RX0, 0x6);
26430 }
26431
26432 } else {
26433 pi->tx_rx_cal_radio_saveregs[0] =
26434 read_radio_reg(pi,
26435 RADIO_2056_TX_RXIQCAL_TXMUX |
26436 RADIO_2056_TX0);
26437 pi->tx_rx_cal_radio_saveregs[1] =
26438 read_radio_reg(pi,
26439 RADIO_2056_RX_RXIQCAL_RXMUX |
26440 RADIO_2056_RX1);
26441
26442 if (pi->pubpi.radiorev >= 5) {
26443 pi->tx_rx_cal_radio_saveregs[2] =
26444 read_radio_reg(pi,
26445 RADIO_2056_RX_RXSPARE2 |
26446 RADIO_2056_RX1);
26447 pi->tx_rx_cal_radio_saveregs[3] =
26448 read_radio_reg(pi,
26449 RADIO_2056_TX_TXSPARE2 |
26450 RADIO_2056_TX0);
26451 }
26452
26453 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26454
26455 if (pi->pubpi.radiorev >= 5) {
26456 pi->tx_rx_cal_radio_saveregs[4] =
26457 read_radio_reg(
26458 pi,
26459 RADIO_2056_RX_LNAA_MASTER
26460 | RADIO_2056_RX1);
26461
26462 write_radio_reg(
26463 pi,
26464 RADIO_2056_RX_LNAA_MASTER |
26465 RADIO_2056_RX1, 0x40);
26466
26467 write_radio_reg(
26468 pi,
26469 RADIO_2056_TX_TXSPARE2
26470 |
26471 RADIO_2056_TX0, bias_a);
26472
26473 write_radio_reg(
26474 pi,
26475 RADIO_2056_RX_RXSPARE2
26476 |
26477 RADIO_2056_RX1, bias_a);
26478 } else {
26479 pi->tx_rx_cal_radio_saveregs[4] =
26480 read_radio_reg(
26481 pi,
26482 RADIO_2056_RX_LNAA_TUNE
26483 | RADIO_2056_RX1);
26484
26485 offtune_val =
26486 (pi->
26487 tx_rx_cal_radio_saveregs[2] &
26488 0xF0) >> 8;
26489 offtune_val =
26490 (offtune_val <= 0x7) ? 0xF : 0;
26491
26492 mod_radio_reg(pi,
26493 RADIO_2056_RX_LNAA_TUNE |
26494 RADIO_2056_RX1, 0xF0,
26495 (offtune_val << 8));
26496 }
26497
26498 write_radio_reg(pi,
26499 RADIO_2056_TX_RXIQCAL_TXMUX |
26500 RADIO_2056_TX0, 0x9);
26501 write_radio_reg(pi,
26502 RADIO_2056_RX_RXIQCAL_RXMUX |
26503 RADIO_2056_RX1, 0x9);
26504 } else {
26505 if (pi->pubpi.radiorev >= 5) {
26506 pi->tx_rx_cal_radio_saveregs[4] =
26507 read_radio_reg(
26508 pi,
26509 RADIO_2056_RX_LNAG_MASTER
26510 | RADIO_2056_RX1);
26511
26512 write_radio_reg(
26513 pi,
26514 RADIO_2056_RX_LNAG_MASTER
26515 | RADIO_2056_RX1, 0x40);
26516
26517 write_radio_reg(
26518 pi,
26519 RADIO_2056_TX_TXSPARE2
26520 |
26521 RADIO_2056_TX0, bias_g);
26522
26523 write_radio_reg(
26524 pi,
26525 RADIO_2056_RX_RXSPARE2
26526 |
26527 RADIO_2056_RX1, bias_g);
26528 } else {
26529 pi->tx_rx_cal_radio_saveregs[4] =
26530 read_radio_reg(
26531 pi,
26532 RADIO_2056_RX_LNAG_TUNE
26533 | RADIO_2056_RX1);
26534
26535 offtune_val =
26536 (pi->
26537 tx_rx_cal_radio_saveregs[2] &
26538 0xF0) >> 8;
26539 offtune_val =
26540 (offtune_val <= 0x7) ? 0xF : 0;
26541
26542 mod_radio_reg(pi,
26543 RADIO_2056_RX_LNAG_TUNE |
26544 RADIO_2056_RX1, 0xF0,
26545 (offtune_val << 8));
26546 }
26547
26548 write_radio_reg(pi,
26549 RADIO_2056_TX_RXIQCAL_TXMUX |
26550 RADIO_2056_TX0, 0x6);
26551 write_radio_reg(pi,
26552 RADIO_2056_RX_RXIQCAL_RXMUX |
26553 RADIO_2056_RX1, 0x6);
26554 }
26555 }
26556 }
26557 }
26558
26559 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26560 {
26561 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26562 if (rx_core == PHY_CORE_0) {
26563 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26564 write_radio_reg(
26565 pi,
26566 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26567 pi->
26568 tx_rx_cal_radio_saveregs[0]);
26569 write_radio_reg(
26570 pi,
26571 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26572 pi->
26573 tx_rx_cal_radio_saveregs[1]);
26574
26575 } else {
26576 write_radio_reg(
26577 pi,
26578 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26579 pi->
26580 tx_rx_cal_radio_saveregs[0]);
26581 write_radio_reg(
26582 pi,
26583 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26584 pi->
26585 tx_rx_cal_radio_saveregs[1]);
26586 }
26587
26588 } else {
26589 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26590 write_radio_reg(
26591 pi,
26592 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26593 pi->
26594 tx_rx_cal_radio_saveregs[0]);
26595 write_radio_reg(
26596 pi,
26597 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26598 pi->
26599 tx_rx_cal_radio_saveregs[1]);
26600
26601 } else {
26602 write_radio_reg(
26603 pi,
26604 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26605 pi->
26606 tx_rx_cal_radio_saveregs[0]);
26607 write_radio_reg(
26608 pi,
26609 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26610 pi->
26611 tx_rx_cal_radio_saveregs[1]);
26612 }
26613 }
26614
26615 } else {
26616 if (rx_core == PHY_CORE_0) {
26617 write_radio_reg(pi,
26618 RADIO_2056_TX_RXIQCAL_TXMUX |
26619 RADIO_2056_TX1,
26620 pi->tx_rx_cal_radio_saveregs[0]);
26621
26622 write_radio_reg(pi,
26623 RADIO_2056_RX_RXIQCAL_RXMUX |
26624 RADIO_2056_RX0,
26625 pi->tx_rx_cal_radio_saveregs[1]);
26626
26627 if (pi->pubpi.radiorev >= 5) {
26628 write_radio_reg(pi,
26629 RADIO_2056_RX_RXSPARE2 |
26630 RADIO_2056_RX0,
26631 pi->
26632 tx_rx_cal_radio_saveregs[2]);
26633
26634 write_radio_reg(pi,
26635 RADIO_2056_TX_TXSPARE2 |
26636 RADIO_2056_TX1,
26637 pi->
26638 tx_rx_cal_radio_saveregs[3]);
26639 }
26640
26641 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26642 if (pi->pubpi.radiorev >= 5)
26643 write_radio_reg(
26644 pi,
26645 RADIO_2056_RX_LNAA_MASTER
26646 | RADIO_2056_RX0,
26647 pi->
26648 tx_rx_cal_radio_saveregs
26649 [4]);
26650 else
26651 write_radio_reg(
26652 pi,
26653 RADIO_2056_RX_LNAA_TUNE
26654 | RADIO_2056_RX0,
26655 pi->
26656 tx_rx_cal_radio_saveregs
26657 [4]);
26658 } else {
26659 if (pi->pubpi.radiorev >= 5)
26660 write_radio_reg(
26661 pi,
26662 RADIO_2056_RX_LNAG_MASTER
26663 | RADIO_2056_RX0,
26664 pi->
26665 tx_rx_cal_radio_saveregs
26666 [4]);
26667 else
26668 write_radio_reg(
26669 pi,
26670 RADIO_2056_RX_LNAG_TUNE
26671 | RADIO_2056_RX0,
26672 pi->
26673 tx_rx_cal_radio_saveregs
26674 [4]);
26675 }
26676
26677 } else {
26678 write_radio_reg(pi,
26679 RADIO_2056_TX_RXIQCAL_TXMUX |
26680 RADIO_2056_TX0,
26681 pi->tx_rx_cal_radio_saveregs[0]);
26682
26683 write_radio_reg(pi,
26684 RADIO_2056_RX_RXIQCAL_RXMUX |
26685 RADIO_2056_RX1,
26686 pi->tx_rx_cal_radio_saveregs[1]);
26687
26688 if (pi->pubpi.radiorev >= 5) {
26689 write_radio_reg(pi,
26690 RADIO_2056_RX_RXSPARE2 |
26691 RADIO_2056_RX1,
26692 pi->
26693 tx_rx_cal_radio_saveregs[2]);
26694
26695 write_radio_reg(pi,
26696 RADIO_2056_TX_TXSPARE2 |
26697 RADIO_2056_TX0,
26698 pi->
26699 tx_rx_cal_radio_saveregs[3]);
26700 }
26701
26702 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26703 if (pi->pubpi.radiorev >= 5)
26704 write_radio_reg(
26705 pi,
26706 RADIO_2056_RX_LNAA_MASTER
26707 | RADIO_2056_RX1,
26708 pi->
26709 tx_rx_cal_radio_saveregs
26710 [4]);
26711 else
26712 write_radio_reg(
26713 pi,
26714 RADIO_2056_RX_LNAA_TUNE
26715 | RADIO_2056_RX1,
26716 pi->
26717 tx_rx_cal_radio_saveregs
26718 [4]);
26719 } else {
26720 if (pi->pubpi.radiorev >= 5)
26721 write_radio_reg(
26722 pi,
26723 RADIO_2056_RX_LNAG_MASTER
26724 | RADIO_2056_RX1,
26725 pi->
26726 tx_rx_cal_radio_saveregs
26727 [4]);
26728 else
26729 write_radio_reg(
26730 pi,
26731 RADIO_2056_RX_LNAG_TUNE
26732 | RADIO_2056_RX1,
26733 pi->
26734 tx_rx_cal_radio_saveregs
26735 [4]);
26736 }
26737 }
26738 }
26739 }
26740
26741 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26742 {
26743 u8 tx_core;
26744 u16 rx_antval, tx_antval;
26745
26746 if (NREV_GE(pi->pubpi.phy_rev, 7))
26747 tx_core = rx_core;
26748 else
26749 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26750
26751 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26752 pi->tx_rx_cal_phy_saveregs[1] =
26753 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26754 pi->tx_rx_cal_phy_saveregs[2] =
26755 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26756 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26757 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26758 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26759 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26760 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26761 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26762 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26763 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26764 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26765 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26766 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26767 }
26768
26769 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26770 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26771 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26772 0x29b, (0x1 << 0), (0) << 0);
26773
26774 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26775 0x29b, (0x1 << 0), (0) << 0);
26776
26777 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26778
26779 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26780
26781 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26782
26783 } else {
26784
26785 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26786 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26787 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26788 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26789 }
26790
26791 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26792 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26793 (0x1 << 2), (0x1 << 2));
26794 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26795 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26796 (0x1 << 0) | (0x1 << 1), 0);
26797 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26798 0x8f : 0xa5,
26799 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26800 }
26801
26802 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26803 RADIO_MIMO_CORESEL_CORE1 |
26804 RADIO_MIMO_CORESEL_CORE2);
26805
26806 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26807 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26808 0, 0, 0,
26809 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26810 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26811 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26812 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26813 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26814 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26815 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26816 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26817 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26818 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26819 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26820 if (CHSPEC_IS40(pi->radio_chanspec))
26821 wlc_phy_rfctrl_override_nphy_rev7(
26822 pi,
26823 (0x1 << 7),
26824 2, 0, 0,
26825 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26826 else
26827 wlc_phy_rfctrl_override_nphy_rev7(
26828 pi,
26829 (0x1 << 7),
26830 0, 0, 0,
26831 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26832
26833 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26834 0, 0, 0,
26835 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26836 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26837 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26838 } else {
26839 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26840 }
26841
26842 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26843
26844 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26845
26846 wlc_phy_rfctrlintc_override_nphy(pi,
26847 NPHY_RfctrlIntc_override_TRSW,
26848 0x1, rx_core + 1);
26849 } else {
26850
26851 if (rx_core == PHY_CORE_0) {
26852 rx_antval = 0x1;
26853 tx_antval = 0x8;
26854 } else {
26855 rx_antval = 0x4;
26856 tx_antval = 0x2;
26857 }
26858
26859 wlc_phy_rfctrlintc_override_nphy(pi,
26860 NPHY_RfctrlIntc_override_TRSW,
26861 rx_antval, rx_core + 1);
26862 wlc_phy_rfctrlintc_override_nphy(pi,
26863 NPHY_RfctrlIntc_override_TRSW,
26864 tx_antval, tx_core + 1);
26865 }
26866 }
26867
26868 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26869 {
26870
26871 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26872 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26873 pi->tx_rx_cal_phy_saveregs[1]);
26874 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26875 pi->tx_rx_cal_phy_saveregs[2]);
26876 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26877 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26878
26879 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26880 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26881 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26882 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26883 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26884 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26885 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26886 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26887 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26888 }
26889
26890 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26891 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26892 }
26893
26894 static void
26895 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26896 u16 *rxgain, u8 cal_type)
26897 {
26898
26899 u16 num_samps;
26900 struct phy_iq_est est[PHY_CORE_MAX];
26901 u8 tx_core;
26902 struct nphy_iq_comp save_comp, zero_comp;
26903 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26904 thresh_pwr = 10000;
26905 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26906 bool gainctrl_done = false;
26907 u8 mix_tia_gain = 3;
26908 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26909 s8 curr_gaintbl_index = 3;
26910 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26911 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26912 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26913 int fine_gain_idx;
26914 s8 txpwrindex;
26915 u16 nphy_rxcal_txgain[2];
26916
26917 if (NREV_GE(pi->pubpi.phy_rev, 7))
26918 tx_core = rx_core;
26919 else
26920 tx_core = 1 - rx_core;
26921
26922 num_samps = 1024;
26923 desired_log2_pwr = 13;
26924
26925 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26926 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26927 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26928
26929 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26930 if (NREV_GE(pi->pubpi.phy_rev, 7))
26931 mix_tia_gain = 3;
26932 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26933 mix_tia_gain = 4;
26934 else
26935 mix_tia_gain = 6;
26936 if (NREV_GE(pi->pubpi.phy_rev, 7))
26937 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26938 else
26939 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26940 } else {
26941 if (NREV_GE(pi->pubpi.phy_rev, 7))
26942 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26943 else
26944 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26945 }
26946
26947 do {
26948
26949 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26950 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26951 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26952 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26953 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26954 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26955 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26956
26957 if (NREV_GE(pi->pubpi.phy_rev, 7))
26958 wlc_phy_rfctrl_override_1tomany_nphy(
26959 pi,
26960 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26961 ((lpf_biq1 << 12) |
26962 (lpf_biq0 << 8) |
26963 (mix_tia_gain << 4) | (lna2 << 2)
26964 | lna1), 0x3, 0);
26965 else
26966 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26967 ((hpvga << 12) |
26968 (lpf_biq1 << 10) |
26969 (lpf_biq0 << 8) |
26970 (mix_tia_gain << 4) |
26971 (lna2 << 2) | lna1), 0x3,
26972 0);
26973
26974 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26975
26976 if (txpwrindex == -1) {
26977 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26978 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26979 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26980 2, 0x110, 16,
26981 nphy_rxcal_txgain);
26982 } else {
26983 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26984 false);
26985 }
26986
26987 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26988 NPHY_RXCAL_TONEFREQ_40MHz :
26989 NPHY_RXCAL_TONEFREQ_20MHz,
26990 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26991
26992 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26993 i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26994 q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26995 curr_pwr = i_pwr + q_pwr;
26996
26997 switch (gainctrl_dirn) {
26998 case NPHY_RXCAL_GAIN_INIT:
26999 if (curr_pwr > thresh_pwr) {
27000 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27001 prev_gaintbl_index = curr_gaintbl_index;
27002 curr_gaintbl_index--;
27003 } else {
27004 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27005 prev_gaintbl_index = curr_gaintbl_index;
27006 curr_gaintbl_index++;
27007 }
27008 break;
27009
27010 case NPHY_RXCAL_GAIN_UP:
27011 if (curr_pwr > thresh_pwr) {
27012 gainctrl_done = true;
27013 optim_pwr = prev_pwr;
27014 optim_gaintbl_index = prev_gaintbl_index;
27015 } else {
27016 prev_gaintbl_index = curr_gaintbl_index;
27017 curr_gaintbl_index++;
27018 }
27019 break;
27020
27021 case NPHY_RXCAL_GAIN_DOWN:
27022 if (curr_pwr > thresh_pwr) {
27023 prev_gaintbl_index = curr_gaintbl_index;
27024 curr_gaintbl_index--;
27025 } else {
27026 gainctrl_done = true;
27027 optim_pwr = curr_pwr;
27028 optim_gaintbl_index = curr_gaintbl_index;
27029 }
27030 break;
27031
27032 default:
27033 break;
27034 }
27035
27036 if ((curr_gaintbl_index < 0) ||
27037 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27038 gainctrl_done = true;
27039 optim_pwr = curr_pwr;
27040 optim_gaintbl_index = prev_gaintbl_index;
27041 } else {
27042 prev_pwr = curr_pwr;
27043 }
27044
27045 wlc_phy_stopplayback_nphy(pi);
27046 } while (!gainctrl_done);
27047
27048 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27049 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27050 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27051 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27052 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27053 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27054
27055 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27056 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27057
27058 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27059 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27060
27061 if (fine_gain_idx + (int)lpf_biq0 > 10)
27062 lpf_biq1 = 10 - lpf_biq0;
27063 else
27064 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27065
27066 wlc_phy_rfctrl_override_1tomany_nphy(
27067 pi,
27068 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27069 ((lpf_biq1 << 12) |
27070 (lpf_biq0 << 8) |
27071 (mix_tia_gain << 4) |
27072 (lna2 << 2) | lna1), 0x3,
27073 0);
27074 } else {
27075 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27076 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27077 ((hpvga << 12) |
27078 (lpf_biq1 << 10) |
27079 (lpf_biq0 << 8) |
27080 (mix_tia_gain << 4) |
27081 (lna2 << 2) |
27082 lna1), 0x3, 0);
27083 }
27084
27085 if (rxgain != NULL) {
27086 *rxgain++ = lna1;
27087 *rxgain++ = lna2;
27088 *rxgain++ = mix_tia_gain;
27089 *rxgain++ = lpf_biq0;
27090 *rxgain++ = lpf_biq1;
27091 *rxgain = hpvga;
27092 }
27093
27094 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27095 }
27096
27097 static void
27098 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27099 u8 cal_type)
27100 {
27101 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27102 }
27103
27104 static u8
27105 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27106 {
27107 u32 target_bws[2] = { 9500, 21000 };
27108 u32 ref_tones[2] = { 3000, 6000 };
27109 u32 target_bw, ref_tone;
27110
27111 u32 target_pwr_ratios[2] = { 28606, 18468 };
27112 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27113
27114 u16 start_rccal_ovr_val = 128;
27115 u16 txlpf_rccal_lpc_ovr_val = 128;
27116 u16 rxlpf_rccal_hpc_ovr_val = 159;
27117
27118 u16 orig_txlpf_rccal_lpc_ovr_val;
27119 u16 orig_rxlpf_rccal_hpc_ovr_val;
27120 u16 radio_addr_offset_rx;
27121 u16 radio_addr_offset_tx;
27122 u16 orig_dcBypass;
27123 u16 orig_RxStrnFilt40Num[6];
27124 u16 orig_RxStrnFilt40Den[4];
27125 u16 orig_rfctrloverride[2];
27126 u16 orig_rfctrlauxreg[2];
27127 u16 orig_rfctrlrssiothers;
27128 u16 tx_lpf_bw = 4;
27129
27130 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27131 u16 lpf_hpc = 7, hpvga_hpc = 7;
27132
27133 s8 rccal_stepsize;
27134 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27135 u32 ref_iq_vals = 0, target_iq_vals = 0;
27136 u16 num_samps, log_num_samps = 10;
27137 struct phy_iq_est est[PHY_CORE_MAX];
27138
27139 if (NREV_GE(pi->pubpi.phy_rev, 7))
27140 return 0;
27141
27142 num_samps = (1 << log_num_samps);
27143
27144 if (CHSPEC_IS40(pi->radio_chanspec)) {
27145 target_bw = target_bws[1];
27146 target_pwr_ratio = target_pwr_ratios[1];
27147 ref_tone = ref_tones[1];
27148 rx_lpf_bw = rx_lpf_bws[1];
27149 } else {
27150 target_bw = target_bws[0];
27151 target_pwr_ratio = target_pwr_ratios[0];
27152 ref_tone = ref_tones[0];
27153 rx_lpf_bw = rx_lpf_bws[0];
27154 }
27155
27156 if (core_idx == 0) {
27157 radio_addr_offset_rx = RADIO_2056_RX0;
27158 radio_addr_offset_tx =
27159 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27160 } else {
27161 radio_addr_offset_rx = RADIO_2056_RX1;
27162 radio_addr_offset_tx =
27163 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27164 }
27165
27166 orig_txlpf_rccal_lpc_ovr_val =
27167 read_radio_reg(pi,
27168 (RADIO_2056_TX_TXLPF_RCCAL |
27169 radio_addr_offset_tx));
27170 orig_rxlpf_rccal_hpc_ovr_val =
27171 read_radio_reg(pi,
27172 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27173 radio_addr_offset_rx));
27174
27175 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27176
27177 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27178 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27179 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27180 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27181 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27182 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27183 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27184 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27185 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27186 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27187
27188 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27189 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27190 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27191 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27192 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27193
27194 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27195 txlpf_rccal_lpc_ovr_val);
27196
27197 write_radio_reg(pi,
27198 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27199 rxlpf_rccal_hpc_ovr_val);
27200
27201 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27202
27203 write_phy_reg(pi, 0x267, 0x02d4);
27204 write_phy_reg(pi, 0x268, 0x0000);
27205 write_phy_reg(pi, 0x269, 0x0000);
27206 write_phy_reg(pi, 0x26a, 0x0000);
27207 write_phy_reg(pi, 0x26b, 0x0000);
27208 write_phy_reg(pi, 0x26c, 0x02d4);
27209 write_phy_reg(pi, 0x26d, 0x0000);
27210 write_phy_reg(pi, 0x26e, 0x0000);
27211 write_phy_reg(pi, 0x26f, 0x0000);
27212 write_phy_reg(pi, 0x270, 0x0000);
27213
27214 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27215 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27216 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27217 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27218
27219 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27220 (0x7 << 10), (tx_lpf_bw << 10));
27221 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27222 (0x7 << 0), (hpvga_hpc << 0));
27223 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27224 (0x7 << 4), (lpf_hpc << 4));
27225 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27226 (0x7 << 8), (rx_lpf_bw << 8));
27227
27228 rccal_stepsize = 16;
27229 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27230
27231 while (rccal_stepsize >= 0) {
27232 write_radio_reg(pi,
27233 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27234 radio_addr_offset_rx), rccal_val);
27235
27236 if (rccal_stepsize == 16) {
27237
27238 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27239 0, 1, false);
27240 udelay(2);
27241
27242 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27243
27244 if (core_idx == 0)
27245 ref_iq_vals =
27246 max_t(u32, (est[0].i_pwr +
27247 est[0].q_pwr) >>
27248 (log_num_samps + 1),
27249 1);
27250 else
27251 ref_iq_vals =
27252 max_t(u32, (est[1].i_pwr +
27253 est[1].q_pwr) >>
27254 (log_num_samps + 1),
27255 1);
27256
27257 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27258 0, 1, false);
27259 udelay(2);
27260 }
27261
27262 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27263
27264 if (core_idx == 0)
27265 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27266 (log_num_samps + 1);
27267 else
27268 target_iq_vals =
27269 (est[1].i_pwr +
27270 est[1].q_pwr) >> (log_num_samps + 1);
27271
27272 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27273
27274 if (rccal_stepsize == 0)
27275 rccal_stepsize--;
27276 else if (rccal_stepsize == 1) {
27277 last_rccal_val = rccal_val;
27278 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27279 last_pwr_ratio = pwr_ratio;
27280 rccal_stepsize--;
27281 } else {
27282 rccal_stepsize = (rccal_stepsize >> 1);
27283 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27284 rccal_stepsize : (-rccal_stepsize));
27285 }
27286
27287 if (rccal_stepsize == -1) {
27288 best_rccal_val =
27289 (abs((int)last_pwr_ratio -
27290 (int)target_pwr_ratio) <
27291 abs((int)pwr_ratio -
27292 (int)target_pwr_ratio)) ? last_rccal_val :
27293 rccal_val;
27294
27295 if (CHSPEC_IS40(pi->radio_chanspec)) {
27296 if ((best_rccal_val > 140)
27297 || (best_rccal_val < 135))
27298 best_rccal_val = 138;
27299 } else {
27300 if ((best_rccal_val > 142)
27301 || (best_rccal_val < 137))
27302 best_rccal_val = 140;
27303 }
27304
27305 write_radio_reg(pi,
27306 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27307 radio_addr_offset_rx), best_rccal_val);
27308 }
27309 }
27310
27311 wlc_phy_stopplayback_nphy(pi);
27312
27313 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27314 orig_txlpf_rccal_lpc_ovr_val);
27315 write_radio_reg(pi,
27316 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27317 orig_rxlpf_rccal_hpc_ovr_val);
27318
27319 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27320
27321 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27322 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27323 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27324 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27325 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27326 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27327 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27328 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27329 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27330 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27331
27332 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27333 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27334 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27335 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27336 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27337
27338 pi->nphy_anarxlpf_adjusted = false;
27339
27340 return best_rccal_val - 0x80;
27341 }
27342
27343 #define WAIT_FOR_SCOPE 4000
27344 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27345 struct nphy_txgains target_gain,
27346 u8 cal_type, bool debug)
27347 {
27348 u16 orig_BBConfig;
27349 u8 core_no, rx_core;
27350 u8 best_rccal[2];
27351 u16 gain_save[2];
27352 u16 cal_gain[2];
27353 struct nphy_iqcal_params cal_params[2];
27354 u8 rxcore_state;
27355 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27356 s8 txlpf_idac;
27357 bool phyhang_avoid_state = false;
27358 bool skip_rxiqcal = false;
27359
27360 orig_BBConfig = read_phy_reg(pi, 0x01);
27361 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27362
27363 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27364
27365 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27366 phyhang_avoid_state = pi->phyhang_avoid;
27367 pi->phyhang_avoid = false;
27368 }
27369
27370 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27371
27372 for (core_no = 0; core_no <= 1; core_no++) {
27373 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27374 &cal_params[core_no]);
27375 cal_gain[core_no] = cal_params[core_no].cal_gain;
27376 }
27377
27378 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27379
27380 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27381 (struct brcms_phy_pub *) pi);
27382
27383 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27384
27385 skip_rxiqcal =
27386 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27387
27388 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27389
27390 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27391
27392 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27393
27394 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27395
27396 wlc_phy_tx_tone_nphy(pi,
27397 (CHSPEC_IS40(
27398 pi->radio_chanspec)) ?
27399 NPHY_RXCAL_TONEFREQ_40MHz :
27400 NPHY_RXCAL_TONEFREQ_20MHz,
27401 NPHY_RXCAL_TONEAMP, 0, cal_type,
27402 false);
27403
27404 if (debug)
27405 mdelay(WAIT_FOR_SCOPE);
27406
27407 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27408 wlc_phy_stopplayback_nphy(pi);
27409 }
27410
27411 if (((cal_type == 1) || (cal_type == 2))
27412 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27413
27414 if (rx_core == PHY_CORE_1) {
27415
27416 if (rxcore_state == 1)
27417 wlc_phy_rxcore_setstate_nphy(
27418 (struct brcms_phy_pub *) pi, 3);
27419
27420 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27421 1);
27422
27423 best_rccal[rx_core] =
27424 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27425 pi->nphy_rccal_value = best_rccal[rx_core];
27426
27427 if (rxcore_state == 1)
27428 wlc_phy_rxcore_setstate_nphy(
27429 (struct brcms_phy_pub *) pi,
27430 rxcore_state);
27431 }
27432 }
27433
27434 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27435
27436 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27437 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27438 }
27439
27440 if ((cal_type == 1) || (cal_type == 2)) {
27441
27442 best_rccal[0] = best_rccal[1];
27443 write_radio_reg(pi,
27444 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27445 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27446
27447 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27448 rxlpf_rccal_hpc =
27449 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27450 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27451
27452 if (PHY_IPA(pi)) {
27453 txlpf_rccal_lpc +=
27454 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27455 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27456 0x0e : 0x13;
27457 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27458 TXLPF_IDAC_4, txlpf_idac);
27459 }
27460
27461 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27462 0);
27463 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27464 0);
27465
27466 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27467 ((rx_core ==
27468 PHY_CORE_0) ? RADIO_2056_RX0 :
27469 RADIO_2056_RX1)),
27470 (rxlpf_rccal_hpc | 0x80));
27471
27472 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27473 ((rx_core ==
27474 PHY_CORE_0) ? RADIO_2056_TX0 :
27475 RADIO_2056_TX1)),
27476 (txlpf_rccal_lpc | 0x80));
27477 }
27478 }
27479
27480 write_phy_reg(pi, 0x01, orig_BBConfig);
27481
27482 wlc_phy_resetcca_nphy(pi);
27483
27484 if (NREV_GE(pi->pubpi.phy_rev, 7))
27485 wlc_phy_rfctrl_override_1tomany_nphy(
27486 pi,
27487 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27488 0, 0x3, 1);
27489 else
27490 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27491
27492 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27493
27494 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27495 gain_save);
27496
27497 if (NREV_GE(pi->pubpi.phy_rev, 4))
27498 pi->phyhang_avoid = phyhang_avoid_state;
27499
27500 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27501
27502 return 0;
27503 }
27504
27505 static int
27506 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27507 struct nphy_txgains target_gain, bool debug)
27508 {
27509 struct phy_iq_est est[PHY_CORE_MAX];
27510 u8 core_num, rx_core, tx_core;
27511 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27512 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27513 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27514 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27515 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27516 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27517 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27518 u16 num_samps;
27519 u32 i_pwr, q_pwr, tot_pwr[3];
27520 u8 gain_pass, use_hpf_num;
27521 u16 mask, val1, val2;
27522 u16 core_no;
27523 u16 gain_save[2];
27524 u16 cal_gain[2];
27525 struct nphy_iqcal_params cal_params[2];
27526 u8 phy_bw;
27527 int bcmerror = 0;
27528 bool first_playtone = true;
27529
27530 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27531
27532 if (NREV_LT(pi->pubpi.phy_rev, 2))
27533 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27534
27535 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27536
27537 for (core_no = 0; core_no <= 1; core_no++) {
27538 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27539 &cal_params[core_no]);
27540 cal_gain[core_no] = cal_params[core_no].cal_gain;
27541 }
27542
27543 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27544
27545 num_samps = 1024;
27546 desired_log2_pwr = 13;
27547
27548 for (core_num = 0; core_num < 2; core_num++) {
27549
27550 rx_core = core_num;
27551 tx_core = 1 - core_num;
27552
27553 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27554 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27555 0xa6 : 0xa7);
27556 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27557 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27558 0x91 : 0x92);
27559 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27560 0x91 : 0x92);
27561
27562 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27563 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27564
27565 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27566 ((0x1 << 1) | (0x1 << 2)));
27567 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27568
27569 if (((pi->nphy_rxcalparams) & 0xff000000))
27570 write_phy_reg(pi,
27571 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27572 (CHSPEC_IS5G(pi->radio_chanspec) ?
27573 0x140 : 0x110));
27574 else
27575 write_phy_reg(pi,
27576 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27577 (CHSPEC_IS5G(pi->radio_chanspec) ?
27578 0x180 : 0x120));
27579
27580 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27581 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27582 0x114));
27583
27584 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27585 if (rx_core == PHY_CORE_0) {
27586 val1 = RADIO_2055_COUPLE_RX_MASK;
27587 val2 = RADIO_2055_COUPLE_TX_MASK;
27588 } else {
27589 val1 = RADIO_2055_COUPLE_TX_MASK;
27590 val2 = RADIO_2055_COUPLE_RX_MASK;
27591 }
27592
27593 if ((pi->nphy_rxcalparams & 0x10000)) {
27594 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27595 val1);
27596 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27597 val2);
27598 }
27599
27600 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27601
27602 if (debug)
27603 mdelay(WAIT_FOR_SCOPE);
27604
27605 if (gain_pass < 3) {
27606 curr_lna = lna_vals[gain_pass];
27607 curr_hpf1 = hpf1_vals[gain_pass];
27608 curr_hpf2 = hpf2_vals[gain_pass];
27609 } else {
27610
27611 if (tot_pwr[1] > 10000) {
27612 curr_lna = lna_vals[2];
27613 curr_hpf1 = hpf1_vals[2];
27614 curr_hpf2 = hpf2_vals[2];
27615 use_hpf_num = 1;
27616 curr_hpf = curr_hpf1;
27617 actual_log2_pwr =
27618 wlc_phy_nbits(tot_pwr[2]);
27619 } else {
27620 if (tot_pwr[0] > 10000) {
27621 curr_lna = lna_vals[1];
27622 curr_hpf1 = hpf1_vals[1];
27623 curr_hpf2 = hpf2_vals[1];
27624 use_hpf_num = 1;
27625 curr_hpf = curr_hpf1;
27626 actual_log2_pwr =
27627 wlc_phy_nbits(
27628 tot_pwr[1]);
27629 } else {
27630 curr_lna = lna_vals[0];
27631 curr_hpf1 = hpf1_vals[0];
27632 curr_hpf2 = hpf2_vals[0];
27633 use_hpf_num = 2;
27634 curr_hpf = curr_hpf2;
27635 actual_log2_pwr =
27636 wlc_phy_nbits(
27637 tot_pwr[0]);
27638 }
27639 }
27640
27641 hpf_change = desired_log2_pwr - actual_log2_pwr;
27642 curr_hpf += hpf_change;
27643 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27644 if (use_hpf_num == 1)
27645 curr_hpf1 = curr_hpf;
27646 else
27647 curr_hpf2 = curr_hpf;
27648 }
27649
27650 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27651 ((curr_hpf2 << 8) |
27652 (curr_hpf1 << 4) |
27653 (curr_lna << 2)), 0x3, 0);
27654 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27655
27656 wlc_phy_stopplayback_nphy(pi);
27657
27658 if (first_playtone) {
27659 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27660 (u16) (pi->nphy_rxcalparams &
27661 0xffff), 0, 0, true);
27662 first_playtone = false;
27663 } else {
27664 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27665 40 : 20;
27666 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27667 0, 0, 0, true);
27668 }
27669
27670 if (bcmerror == 0) {
27671 if (gain_pass < 3) {
27672
27673 wlc_phy_rx_iq_est_nphy(pi, est,
27674 num_samps, 32,
27675 0);
27676 i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27677 num_samps);
27678 q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27679 num_samps);
27680 tot_pwr[gain_pass] = i_pwr + q_pwr;
27681 } else {
27682
27683 wlc_phy_calc_rx_iq_comp_nphy(pi,
27684 (1 <<
27685 rx_core));
27686 }
27687
27688 wlc_phy_stopplayback_nphy(pi);
27689 }
27690
27691 if (bcmerror != 0)
27692 break;
27693 }
27694
27695 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27696 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27697
27698 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27699 0x92, orig_RfctrlIntcTx);
27700 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27701 0x92, orig_RfctrlIntcRx);
27702 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27703 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27704 0xa7, orig_AfectrlCore);
27705 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27706
27707 if (bcmerror != 0)
27708 break;
27709 }
27710
27711 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27712 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27713
27714 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27715 gain_save);
27716
27717 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27718
27719 return bcmerror;
27720 }
27721
27722 int
27723 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27724 u8 cal_type, bool debug)
27725 {
27726 if (NREV_GE(pi->pubpi.phy_rev, 7))
27727 cal_type = 0;
27728
27729 if (NREV_GE(pi->pubpi.phy_rev, 3))
27730 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27731 debug);
27732 else
27733 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27734 }
27735
27736 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27737 {
27738 uint core;
27739 u32 txgain;
27740 u16 rad_gain, dac_gain, bbmult, m1m2;
27741 u8 txpi[2], chan_freq_range;
27742 s32 rfpwr_offset;
27743
27744 if (pi->phyhang_avoid)
27745 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27746
27747 if (pi->sh->sromrev < 4) {
27748 txpi[0] = txpi[1] = 72;
27749 } else {
27750
27751 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27752 switch (chan_freq_range) {
27753 case WL_CHAN_FREQ_RANGE_2G:
27754 case WL_CHAN_FREQ_RANGE_5GL:
27755 case WL_CHAN_FREQ_RANGE_5GM:
27756 case WL_CHAN_FREQ_RANGE_5GH:
27757 txpi[0] = 0;
27758 txpi[1] = 0;
27759 break;
27760 default:
27761 txpi[0] = txpi[1] = 91;
27762 break;
27763 }
27764 }
27765
27766 if (NREV_GE(pi->pubpi.phy_rev, 7))
27767 txpi[0] = txpi[1] = 30;
27768 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27769 txpi[0] = txpi[1] = 40;
27770
27771 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27772
27773 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27774 (txpi[1] < 40) || (txpi[1] > 100))
27775 txpi[0] = txpi[1] = 91;
27776 }
27777
27778 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27779 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27780 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27781 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27782
27783 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27784 uint phyrev = pi->pubpi.phy_rev;
27785
27786 if (NREV_GE(phyrev, 3)) {
27787 if (PHY_IPA(pi)) {
27788 u32 *tx_gaintbl =
27789 wlc_phy_get_ipa_gaintbl_nphy(pi);
27790 txgain = tx_gaintbl[txpi[core]];
27791 } else {
27792 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27793 if (NREV_IS(phyrev, 3)) {
27794 txgain =
27795 nphy_tpc_5GHz_txgain_rev3
27796 [txpi[core]];
27797 } else if (NREV_IS(phyrev, 4)) {
27798 txgain = (
27799 pi->srom_fem5g.extpagain ==
27800 3) ?
27801 nphy_tpc_5GHz_txgain_HiPwrEPA
27802 [txpi[core]] :
27803 nphy_tpc_5GHz_txgain_rev4
27804 [txpi[core]];
27805 } else {
27806 txgain =
27807 nphy_tpc_5GHz_txgain_rev5
27808 [txpi[core]];
27809 }
27810 } else {
27811 if (NREV_GE(phyrev, 5) &&
27812 (pi->srom_fem2g.extpagain == 3)) {
27813 txgain =
27814 nphy_tpc_txgain_HiPwrEPA
27815 [txpi[core]];
27816 } else {
27817 txgain = nphy_tpc_txgain_rev3
27818 [txpi[core]];
27819 }
27820 }
27821 }
27822 } else {
27823 txgain = nphy_tpc_txgain[txpi[core]];
27824 }
27825
27826 if (NREV_GE(phyrev, 3))
27827 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27828 else
27829 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27830
27831 if (NREV_GE(phyrev, 7))
27832 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27833 else
27834 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27835
27836 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27837
27838 if (NREV_GE(phyrev, 3))
27839 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27840 0xa5), (0x1 << 8), (0x1 << 8));
27841 else
27842 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27843
27844 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27845
27846 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27847 &rad_gain);
27848
27849 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27850 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27851 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27852 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27853
27854 if (PHY_IPA(pi)) {
27855 wlc_phy_table_read_nphy(pi,
27856 (core ==
27857 PHY_CORE_0 ?
27858 NPHY_TBL_ID_CORE1TXPWRCTL :
27859 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27860 576 + txpi[core], 32,
27861 &rfpwr_offset);
27862
27863 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27864 0x29b, (0x1ff << 4),
27865 ((s16) rfpwr_offset) << 4);
27866
27867 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27868 0x29b, (0x1 << 2), (1) << 2);
27869
27870 }
27871 }
27872
27873 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27874
27875 if (pi->phyhang_avoid)
27876 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27877 }
27878
27879 static void
27880 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27881 u8 tmp_max_pwr, u8 rate_start,
27882 u8 rate_end)
27883 {
27884 u8 rate;
27885 u8 word_num, nibble_num;
27886 u8 tmp_nibble;
27887
27888 for (rate = rate_start; rate <= rate_end; rate++) {
27889 word_num = (rate - rate_start) >> 2;
27890 nibble_num = (rate - rate_start) & 0x3;
27891 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27892
27893 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27894 }
27895 }
27896
27897 static void
27898 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27899 u8 rate_start, u8 rate_end)
27900 {
27901 u8 rate;
27902
27903 for (rate = rate_start; rate <= rate_end; rate++)
27904 srom_max[rate] -= 2 * pwr_offset;
27905 }
27906
27907 void
27908 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27909 u8 rate_mcs_end, u8 rate_ofdm_start)
27910 {
27911 u8 rate1, rate2;
27912
27913 rate2 = rate_ofdm_start;
27914 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27915 power[rate1] = power[rate2];
27916 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27917 }
27918 power[rate_mcs_end] = power[rate_mcs_end - 1];
27919 }
27920
27921 void
27922 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27923 u8 rate_ofdm_end, u8 rate_mcs_start)
27924 {
27925 u8 rate1, rate2;
27926
27927 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27928 rate1 <= rate_ofdm_end; rate1++, rate2++) {
27929 power[rate1] = power[rate2];
27930 if (rate1 == rate_ofdm_start)
27931 power[++rate1] = power[rate2];
27932 }
27933 }
27934
27935 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27936 {
27937 uint rate1, rate2, band_num;
27938 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27939 u8 tmp_max_pwr = 0;
27940 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27941 u8 *tx_srom_max_rate = NULL;
27942
27943 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27944 band_num++) {
27945 switch (band_num) {
27946 case 0:
27947
27948 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27949 pi->nphy_pwrctrl_info[1].max_pwr_2g);
27950
27951 pwr_offsets1[0] = pi->cck2gpo;
27952 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27953 pwr_offsets1,
27954 tmp_max_pwr,
27955 TXP_FIRST_CCK,
27956 TXP_LAST_CCK);
27957
27958 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27959 pwr_offsets1[1] =
27960 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27961
27962 pwr_offsets2 = pi->mcs2gpo;
27963
27964 tmp_cddpo = pi->cdd2gpo;
27965 tmp_stbcpo = pi->stbc2gpo;
27966 tmp_bw40po = pi->bw402gpo;
27967
27968 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27969 break;
27970 case 1:
27971
27972 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27973 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27974
27975 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27976 pwr_offsets1[1] =
27977 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27978
27979 pwr_offsets2 = pi->mcs5gpo;
27980
27981 tmp_cddpo = pi->cdd5gpo;
27982 tmp_stbcpo = pi->stbc5gpo;
27983 tmp_bw40po = pi->bw405gpo;
27984
27985 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27986 break;
27987 case 2:
27988
27989 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27990 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27991
27992 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27993 pwr_offsets1[1] =
27994 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27995
27996 pwr_offsets2 = pi->mcs5glpo;
27997
27998 tmp_cddpo = pi->cdd5glpo;
27999 tmp_stbcpo = pi->stbc5glpo;
28000 tmp_bw40po = pi->bw405glpo;
28001
28002 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28003 break;
28004 case 3:
28005
28006 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28007 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28008
28009 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28010 pwr_offsets1[1] =
28011 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28012
28013 pwr_offsets2 = pi->mcs5ghpo;
28014
28015 tmp_cddpo = pi->cdd5ghpo;
28016 tmp_stbcpo = pi->stbc5ghpo;
28017 tmp_bw40po = pi->bw405ghpo;
28018
28019 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28020 break;
28021 }
28022
28023 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28024 tmp_max_pwr, TXP_FIRST_OFDM,
28025 TXP_LAST_OFDM);
28026
28027 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28028 TXP_FIRST_MCS_20_SISO,
28029 TXP_LAST_MCS_20_SISO,
28030 TXP_FIRST_OFDM);
28031
28032 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28033 tmp_max_pwr,
28034 TXP_FIRST_MCS_20_CDD,
28035 TXP_LAST_MCS_20_CDD);
28036
28037 if (NREV_GE(pi->pubpi.phy_rev, 3))
28038 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28039 TXP_FIRST_MCS_20_CDD,
28040 TXP_LAST_MCS_20_CDD);
28041
28042 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28043 TXP_FIRST_OFDM_20_CDD,
28044 TXP_LAST_OFDM_20_CDD,
28045 TXP_FIRST_MCS_20_CDD);
28046
28047 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28048 tmp_max_pwr,
28049 TXP_FIRST_MCS_20_STBC,
28050 TXP_LAST_MCS_20_STBC);
28051
28052 if (NREV_GE(pi->pubpi.phy_rev, 3))
28053 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28054 tmp_stbcpo,
28055 TXP_FIRST_MCS_20_STBC,
28056 TXP_LAST_MCS_20_STBC);
28057
28058 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28059 &pwr_offsets2[2], tmp_max_pwr,
28060 TXP_FIRST_MCS_20_SDM,
28061 TXP_LAST_MCS_20_SDM);
28062
28063 if (NPHY_IS_SROM_REINTERPRET) {
28064
28065 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28066 &pwr_offsets2[4],
28067 tmp_max_pwr,
28068 TXP_FIRST_MCS_40_SISO,
28069 TXP_LAST_MCS_40_SISO);
28070
28071 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28072 TXP_FIRST_OFDM_40_SISO,
28073 TXP_LAST_OFDM_40_SISO,
28074 TXP_FIRST_MCS_40_SISO);
28075
28076 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28077 &pwr_offsets2[4],
28078 tmp_max_pwr,
28079 TXP_FIRST_MCS_40_CDD,
28080 TXP_LAST_MCS_40_CDD);
28081
28082 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28083 TXP_FIRST_MCS_40_CDD,
28084 TXP_LAST_MCS_40_CDD);
28085
28086 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28087 TXP_FIRST_OFDM_40_CDD,
28088 TXP_LAST_OFDM_40_CDD,
28089 TXP_FIRST_MCS_40_CDD);
28090
28091 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28092 &pwr_offsets2[4],
28093 tmp_max_pwr,
28094 TXP_FIRST_MCS_40_STBC,
28095 TXP_LAST_MCS_40_STBC);
28096
28097 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28098 tmp_stbcpo,
28099 TXP_FIRST_MCS_40_STBC,
28100 TXP_LAST_MCS_40_STBC);
28101
28102 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28103 &pwr_offsets2[6],
28104 tmp_max_pwr,
28105 TXP_FIRST_MCS_40_SDM,
28106 TXP_LAST_MCS_40_SDM);
28107 } else {
28108
28109 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28110 TXP_FIRST_OFDM;
28111 rate1 <= TXP_LAST_MCS_40_SDM;
28112 rate1++, rate2++)
28113 tx_srom_max_rate[rate1] =
28114 tx_srom_max_rate[rate2];
28115 }
28116
28117 if (NREV_GE(pi->pubpi.phy_rev, 3))
28118 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28119 tmp_bw40po,
28120 TXP_FIRST_OFDM_40_SISO,
28121 TXP_LAST_MCS_40_SDM);
28122
28123 tx_srom_max_rate[TXP_MCS_32] =
28124 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28125 }
28126
28127 return;
28128 }
28129
28130 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28131 {
28132 u8 tx_pwr_ctrl_state;
28133 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28134 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28135
28136 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28137
28138 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28139 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28140 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28141 udelay(1);
28142 }
28143
28144 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28145
28146 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28147 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28148 }
28149
28150 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28151 {
28152 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28153 (0x1 << 14) | (0x1 << 13));
28154 }
28155
28156 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28157 {
28158 u16 tmp;
28159 u16 pwr_idx[2];
28160
28161 if (wlc_phy_txpwr_ison_nphy(pi)) {
28162 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28163 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28164
28165 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28166 } else {
28167 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28168 << 8) |
28169 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28170 }
28171
28172 return tmp;
28173 }
28174
28175 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28176 {
28177 if (PHY_IPA(pi)
28178 && (pi->nphy_force_papd_cal
28179 || (wlc_phy_txpwr_ison_nphy(pi)
28180 &&
28181 (((u32)
28182 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28183 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28184 || ((u32)
28185 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28186 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28187 wlc_phy_a4(pi, true);
28188 }
28189
28190 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28191 {
28192 u16 mask = 0, val = 0, ishw = 0;
28193 u8 ctr;
28194 uint core;
28195 u32 tbl_offset;
28196 u32 tbl_len;
28197 u16 regval[84];
28198
28199 if (pi->phyhang_avoid)
28200 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28201
28202 switch (ctrl_type) {
28203 case PHY_TPC_HW_OFF:
28204 case PHY_TPC_HW_ON:
28205 pi->nphy_txpwrctrl = ctrl_type;
28206 break;
28207 default:
28208 break;
28209 }
28210
28211 if (ctrl_type == PHY_TPC_HW_OFF) {
28212 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28213
28214 if (wlc_phy_txpwr_ison_nphy(pi)) {
28215 for (core = 0; core < pi->pubpi.phy_corenum;
28216 core++)
28217 pi->nphy_txpwr_idx[core] =
28218 wlc_phy_txpwr_idx_cur_get_nphy(
28219 pi,
28220 (u8) core);
28221 }
28222
28223 }
28224
28225 tbl_len = 84;
28226 tbl_offset = 64;
28227 for (ctr = 0; ctr < tbl_len; ctr++)
28228 regval[ctr] = 0;
28229 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28230 regval);
28231 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28232 regval);
28233
28234 if (NREV_GE(pi->pubpi.phy_rev, 3))
28235 and_phy_reg(pi, 0x1e7,
28236 (u16) (~((0x1 << 15) |
28237 (0x1 << 14) | (0x1 << 13))));
28238 else
28239 and_phy_reg(pi, 0x1e7,
28240 (u16) (~((0x1 << 14) | (0x1 << 13))));
28241
28242 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28243 or_phy_reg(pi, 0x8f, (0x1 << 8));
28244 or_phy_reg(pi, 0xa5, (0x1 << 8));
28245 } else {
28246 or_phy_reg(pi, 0xa5, (0x1 << 14));
28247 }
28248
28249 if (NREV_IS(pi->pubpi.phy_rev, 2))
28250 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28251 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28252 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28253
28254 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28255 pi->bw == WL_CHANSPEC_BW_40)
28256 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28257 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28258
28259 } else {
28260
28261 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28262 8, pi->adj_pwr_tbl_nphy);
28263 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28264 8, pi->adj_pwr_tbl_nphy);
28265
28266 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28267 mask = (0x1 << 14) | (0x1 << 13);
28268 val = (ishw << 14) | (ishw << 13);
28269
28270 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28271 mask |= (0x1 << 15);
28272 val |= (ishw << 15);
28273 }
28274
28275 mod_phy_reg(pi, 0x1e7, mask, val);
28276
28277 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28278 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28279 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28280 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28281 } else {
28282 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28283 if (NREV_GT(pi->pubpi.phy_rev, 1))
28284 mod_phy_reg(pi, 0x222,
28285 (0xff << 0), 0x64);
28286 }
28287 }
28288
28289 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28290 if ((pi->nphy_txpwr_idx[0] != 128)
28291 && (pi->nphy_txpwr_idx[1] != 128))
28292 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28293 pi->
28294 nphy_txpwr_idx
28295 [0],
28296 pi->
28297 nphy_txpwr_idx
28298 [1]);
28299 }
28300
28301 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28302 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28303 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28304 } else {
28305 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28306 }
28307
28308 if (NREV_IS(pi->pubpi.phy_rev, 2))
28309 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28310 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28311 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28312
28313 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28314 pi->bw == WL_CHANSPEC_BW_40)
28315 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28316 0x0, BRCM_BAND_ALL);
28317
28318 if (PHY_IPA(pi)) {
28319 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28320 0x29b, (0x1 << 2), (0) << 2);
28321
28322 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28323 0x29b, (0x1 << 2), (0) << 2);
28324
28325 }
28326
28327 }
28328
28329 if (pi->phyhang_avoid)
28330 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28331 }
28332
28333 void
28334 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28335 bool restore_cals)
28336 {
28337 u8 core, txpwrctl_tbl;
28338 u16 tx_ind0, iq_ind0, lo_ind0;
28339 u16 m1m2;
28340 u32 txgain;
28341 u16 rad_gain, dac_gain;
28342 u8 bbmult;
28343 u32 iqcomp;
28344 u16 iqcomp_a, iqcomp_b;
28345 u32 locomp;
28346 u16 tmpval;
28347 u8 tx_pwr_ctrl_state;
28348 s32 rfpwr_offset;
28349 u16 regval[2];
28350
28351 if (pi->phyhang_avoid)
28352 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28353
28354 tx_ind0 = 192;
28355 iq_ind0 = 320;
28356 lo_ind0 = 448;
28357
28358 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28359
28360 if ((core_mask & (1 << core)) == 0)
28361 continue;
28362
28363 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28364
28365 if (txpwrindex < 0) {
28366 if (pi->nphy_txpwrindex[core].index < 0)
28367 continue;
28368
28369 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28370 mod_phy_reg(pi, 0x8f,
28371 (0x1 << 8),
28372 pi->nphy_txpwrindex[core].
28373 AfectrlOverride);
28374 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28375 pi->nphy_txpwrindex[core].
28376 AfectrlOverride);
28377 } else {
28378 mod_phy_reg(pi, 0xa5,
28379 (0x1 << 14),
28380 pi->nphy_txpwrindex[core].
28381 AfectrlOverride);
28382 }
28383
28384 write_phy_reg(pi, (core == PHY_CORE_0) ?
28385 0xaa : 0xab,
28386 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28387
28388 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28389 &pi->nphy_txpwrindex[core].
28390 rad_gain);
28391
28392 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28393 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28394 m1m2 |= ((core == PHY_CORE_0) ?
28395 (pi->nphy_txpwrindex[core].bbmult << 8) :
28396 (pi->nphy_txpwrindex[core].bbmult << 0));
28397 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28398
28399 if (restore_cals) {
28400 wlc_phy_table_write_nphy(
28401 pi, 15, 2, (80 + 2 * core), 16,
28402 &pi->nphy_txpwrindex[core].iqcomp_a);
28403 wlc_phy_table_write_nphy(
28404 pi, 15, 1, (85 + core), 16,
28405 &pi->nphy_txpwrindex[core].locomp);
28406 wlc_phy_table_write_nphy(
28407 pi, 15, 1, (93 + core), 16,
28408 &pi->nphy_txpwrindex[core].locomp);
28409 }
28410
28411 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28412
28413 pi->nphy_txpwrindex[core].index_internal =
28414 pi->nphy_txpwrindex[core].index_internal_save;
28415 } else {
28416
28417 if (pi->nphy_txpwrindex[core].index < 0) {
28418
28419 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28420 mod_phy_reg(pi, 0x8f,
28421 (0x1 << 8),
28422 pi->nphy_txpwrindex[core].
28423 AfectrlOverride);
28424 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28425 pi->nphy_txpwrindex[core].
28426 AfectrlOverride);
28427 } else {
28428 pi->nphy_txpwrindex[core].
28429 AfectrlOverride =
28430 read_phy_reg(pi, 0xa5);
28431 }
28432
28433 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28434 read_phy_reg(pi, (core == PHY_CORE_0) ?
28435 0xaa : 0xab);
28436
28437 wlc_phy_table_read_nphy(pi, 7, 1,
28438 (0x110 + core), 16,
28439 &pi->
28440 nphy_txpwrindex[core].
28441 rad_gain);
28442
28443 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28444 &tmpval);
28445 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28446 tmpval &= 0xff;
28447 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28448
28449 wlc_phy_table_read_nphy(pi, 15, 2,
28450 (80 + 2 * core), 16,
28451 &pi->
28452 nphy_txpwrindex[core].
28453 iqcomp_a);
28454
28455 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28456 16,
28457 &pi->
28458 nphy_txpwrindex[core].
28459 locomp);
28460
28461 pi->nphy_txpwrindex[core].index_internal_save =
28462 pi->nphy_txpwrindex[core].
28463 index_internal;
28464 }
28465
28466 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28467 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28468
28469 if (NREV_IS(pi->pubpi.phy_rev, 1))
28470 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28471
28472 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28473 (tx_ind0 + txpwrindex), 32,
28474 &txgain);
28475
28476 if (NREV_GE(pi->pubpi.phy_rev, 3))
28477 rad_gain = (txgain >> 16) &
28478 ((1 << (32 - 16 + 1)) - 1);
28479 else
28480 rad_gain = (txgain >> 16) &
28481 ((1 << (28 - 16 + 1)) - 1);
28482
28483 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28484 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28485
28486 if (NREV_GE(pi->pubpi.phy_rev, 3))
28487 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28488 0xa5), (0x1 << 8), (0x1 << 8));
28489 else
28490 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28491
28492 write_phy_reg(pi, (core == PHY_CORE_0) ?
28493 0xaa : 0xab, dac_gain);
28494
28495 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28496 &rad_gain);
28497
28498 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28499 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28500 m1m2 |= ((core == PHY_CORE_0) ?
28501 (bbmult << 8) : (bbmult << 0));
28502
28503 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28504
28505 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28506 (iq_ind0 + txpwrindex), 32,
28507 &iqcomp);
28508 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28509 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28510
28511 if (restore_cals) {
28512 regval[0] = (u16) iqcomp_a;
28513 regval[1] = (u16) iqcomp_b;
28514 wlc_phy_table_write_nphy(pi, 15, 2,
28515 (80 + 2 * core), 16,
28516 regval);
28517 }
28518
28519 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28520 (lo_ind0 + txpwrindex), 32,
28521 &locomp);
28522 if (restore_cals)
28523 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28524 16, &locomp);
28525
28526 if (NREV_IS(pi->pubpi.phy_rev, 1))
28527 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28528
28529 if (PHY_IPA(pi)) {
28530 wlc_phy_table_read_nphy(pi,
28531 (core == PHY_CORE_0 ?
28532 NPHY_TBL_ID_CORE1TXPWRCTL :
28533 NPHY_TBL_ID_CORE2TXPWRCTL),
28534 1, 576 + txpwrindex, 32,
28535 &rfpwr_offset);
28536
28537 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28538 0x29b, (0x1ff << 4),
28539 ((s16) rfpwr_offset) << 4);
28540
28541 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28542 0x29b, (0x1 << 2), (1) << 2);
28543
28544 }
28545
28546 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28547 }
28548
28549 pi->nphy_txpwrindex[core].index = txpwrindex;
28550 }
28551
28552 if (pi->phyhang_avoid)
28553 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28554 }
28555
28556 void
28557 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28558 u8 txp_rate_idx)
28559 {
28560 u8 chan_freq_range;
28561
28562 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28563 switch (chan_freq_range) {
28564 case WL_CHAN_FREQ_RANGE_2G:
28565 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28566 break;
28567 case WL_CHAN_FREQ_RANGE_5GM:
28568 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28569 break;
28570 case WL_CHAN_FREQ_RANGE_5GL:
28571 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28572 break;
28573 case WL_CHAN_FREQ_RANGE_5GH:
28574 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28575 break;
28576 default:
28577 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28578 break;
28579 }
28580
28581 return;
28582 }
28583
28584 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28585 {
28586 u16 clip_off[] = { 0xffff, 0xffff };
28587
28588 if (enable) {
28589 if (pi->nphy_deaf_count == 0) {
28590 pi->classifier_state =
28591 wlc_phy_classifier_nphy(pi, 0, 0);
28592 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28593 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28594 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28595 }
28596
28597 pi->nphy_deaf_count++;
28598
28599 wlc_phy_resetcca_nphy(pi);
28600
28601 } else {
28602 pi->nphy_deaf_count--;
28603
28604 if (pi->nphy_deaf_count == 0) {
28605 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28606 pi->classifier_state);
28607 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28608 }
28609 }
28610 }
28611
28612 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28613 {
28614 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28615
28616 if (mode) {
28617 if (pi->nphy_deaf_count == 0)
28618 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28619 } else if (pi->nphy_deaf_count > 0) {
28620 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28621 }
28622
28623 wlapi_enable_mac(pi->sh->physhim);
28624 }