Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: ISC
0002 /*
0003  * Copyright (c) 2010 Broadcom Corporation
0004  */
0005 
0006 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
0007 
0008 #include <linux/kernel.h>
0009 #include <linux/delay.h>
0010 #include <linux/cordic.h>
0011 
0012 #include <brcm_hw_ids.h>
0013 #include <aiutils.h>
0014 #include <chipcommon.h>
0015 #include <pmu.h>
0016 #include <d11.h>
0017 #include <phy_shim.h>
0018 #include "phy_int.h"
0019 #include "phy_hal.h"
0020 #include "phy_radio.h"
0021 #include "phyreg_n.h"
0022 #include "phytbl_n.h"
0023 #include "soc.h"
0024 
0025 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
0026     read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
0027                ((core == PHY_CORE_0) ? \
0028             radio_type##_##jspace##0 : \
0029             radio_type##_##jspace##1))
0030 
0031 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
0032     write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
0033             ((core ==  PHY_CORE_0) ? \
0034              radio_type##_##jspace##0 : \
0035              radio_type##_##jspace##1), value)
0036 
0037 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
0038     write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
0039 
0040 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
0041     read_radio_reg(pi, ((core == PHY_CORE_0) ? \
0042                 radio_type##_##jspace##0##_##reg_name : \
0043                 radio_type##_##jspace##1##_##reg_name))
0044 
0045 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
0046     write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
0047                  radio_type##_##jspace##0##_##reg_name : \
0048                  radio_type##_##jspace##1##_##reg_name), \
0049             value)
0050 
0051 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
0052     read_radio_reg(pi, ((core == PHY_CORE_0) ? \
0053                  radio_type##_##reg_name##_##jspace##0 : \
0054                  radio_type##_##reg_name##_##jspace##1))
0055 
0056 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
0057     write_radio_reg(pi, ((core == PHY_CORE_0) ? \
0058             radio_type##_##reg_name##_##jspace##0 : \
0059             radio_type##_##reg_name##_##jspace##1), \
0060             value)
0061 
0062 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
0063 #define NPHY_ACI_CHANNEL_DELTA 5
0064 #define NPHY_ACI_CHANNEL_SKIP 4
0065 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
0066 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
0067 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
0068 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
0069 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
0070 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
0071 
0072 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
0073 
0074 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
0075 
0076 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
0077 
0078 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
0079 
0080 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
0081 
0082 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
0083 
0084 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
0085 
0086 #define NPHY_NOISE_ASSOC_ENTER_TH  400
0087 
0088 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
0089 
0090 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
0091 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
0092 
0093 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
0094 
0095 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
0096 
0097 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
0098 
0099 #define NPHY_RSSICAL_MAXREAD 31
0100 
0101 #define NPHY_RSSICAL_NPOLL 8
0102 #define NPHY_RSSICAL_MAXD  (1<<20)
0103 #define NPHY_MIN_RXIQ_PWR 2
0104 
0105 #define NPHY_RSSICAL_W1_TARGET 25
0106 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
0107 #define NPHY_RSSICAL_NB_TARGET 0
0108 
0109 #define NPHY_RSSICAL_W1_TARGET_REV3 29
0110 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
0111 
0112 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
0113 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
0114 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
0115 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
0116                     NPHY_RSSICAL_MAXREAD)
0117 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
0118 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
0119                     NPHY_RSSICAL_MAXREAD)
0120 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
0121 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
0122                    ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
0123 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
0124                    ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
0125 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
0126                    ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
0127 
0128 #define NPHY_IQCAL_NUMGAINS 9
0129 #define NPHY_N_GCTL 0x66
0130 
0131 #define NPHY_PAPD_EPS_TBL_SIZE 64
0132 #define NPHY_PAPD_SCL_TBL_SIZE 64
0133 #define NPHY_NUM_DIG_FILT_COEFFS 15
0134 
0135 #define NPHY_PAPD_COMP_OFF 0
0136 #define NPHY_PAPD_COMP_ON  1
0137 
0138 #define NPHY_SROM_TEMPSHIFT             32
0139 #define NPHY_SROM_MAXTEMPOFFSET         16
0140 #define NPHY_SROM_MINTEMPOFFSET         -16
0141 
0142 #define NPHY_CAL_MAXTEMPDELTA           64
0143 
0144 #define NPHY_NOISEVAR_TBLLEN40 256
0145 #define NPHY_NOISEVAR_TBLLEN20 128
0146 
0147 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
0148 
0149 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
0150 
0151 /* 5357 Chip specific ChipControl register bits */
0152 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
0153 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
0154 
0155 #define NPHY_CAL_TSSISAMPS      64
0156 #define NPHY_TEST_TONE_FREQ_40MHz 4000
0157 #define NPHY_TEST_TONE_FREQ_20MHz 2500
0158 
0159 #define MAX_205x_RCAL_WAITLOOPS 10000
0160 
0161 #define NPHY_RXCAL_TONEAMP 181
0162 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
0163 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
0164 
0165 #define TXFILT_SHAPING_OFDM20   0
0166 #define TXFILT_SHAPING_OFDM40   1
0167 #define TXFILT_SHAPING_CCK      2
0168 #define TXFILT_DEFAULT_OFDM20   3
0169 #define TXFILT_DEFAULT_OFDM40   4
0170 
0171 struct nphy_iqcal_params {
0172     u16 txlpf;
0173     u16 txgm;
0174     u16 pga;
0175     u16 pad;
0176     u16 ipa;
0177     u16 cal_gain;
0178     u16 ncorr[5];
0179 };
0180 
0181 struct nphy_txiqcal_ladder {
0182     u8 percent;
0183     u8 g_env;
0184 };
0185 
0186 struct nphy_ipa_txcalgains {
0187     struct nphy_txgains gains;
0188     bool useindex;
0189     u8 index;
0190 };
0191 
0192 struct nphy_papd_restore_state {
0193     u16 fbmix[2];
0194     u16 vga_master[2];
0195     u16 intpa_master[2];
0196     u16 afectrl[2];
0197     u16 afeoverride[2];
0198     u16 pwrup[2];
0199     u16 atten[2];
0200     u16 mm;
0201 };
0202 
0203 struct nphy_ipa_txrxgain {
0204     u16 hpvga;
0205     u16 lpf_biq1;
0206     u16 lpf_biq0;
0207     u16 lna2;
0208     u16 lna1;
0209     s8 txpwrindex;
0210 };
0211 
0212 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
0213 
0214 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
0215     {0, 0, 0, 0, 0, 100},
0216     {0, 0, 0, 0, 0, 50},
0217     {0, 0, 0, 0, 0, -1},
0218     {0, 0, 0, 3, 0, -1},
0219     {0, 0, 3, 3, 0, -1},
0220     {0, 2, 3, 3, 0, -1}
0221 };
0222 
0223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
0224     {0, 0, 0, 0, 0, 128},
0225     {0, 0, 0, 0, 0, 70},
0226     {0, 0, 0, 0, 0, 20},
0227     {0, 0, 0, 3, 0, 20},
0228     {0, 0, 3, 3, 0, 20},
0229     {0, 2, 3, 3, 0, 20}
0230 };
0231 
0232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
0233     {0, 0, 0, 0, 0, 100},
0234     {0, 0, 0, 0, 0, 50},
0235     {0, 0, 0, 0, 0, -1},
0236     {0, 0, 0, 3, 0, -1},
0237     {0, 0, 3, 3, 0, -1},
0238     {0, 0, 5, 3, 0, -1}
0239 };
0240 
0241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
0242     {0, 0, 0, 0, 0, 10},
0243     {0, 0, 0, 1, 0, 10},
0244     {0, 0, 1, 2, 0, 10},
0245     {0, 0, 1, 3, 0, 10},
0246     {0, 0, 4, 3, 0, 10},
0247     {0, 0, 6, 3, 0, 10}
0248 };
0249 
0250 enum {
0251     NPHY_RXCAL_GAIN_INIT = 0,
0252     NPHY_RXCAL_GAIN_UP,
0253     NPHY_RXCAL_GAIN_DOWN
0254 };
0255 
0256 #define wlc_phy_get_papd_nphy(pi) \
0257     (read_phy_reg((pi), 0x1e7) & \
0258      ((0x1 << 15) | \
0259       (0x1 << 14) | \
0260       (0x1 << 13)))
0261 
0262 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
0263     {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
0264      230, -44, 230, 201, -191, 201},
0265     {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
0266      26, 34, -32, 34},
0267     {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
0268      121, -73, 121, 91, 124, 91},
0269     {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
0270      151, 301, 151, 602, -752, 602},
0271     {-92, 58, -96, 49, -104, 44, 17, 35, 17,
0272      12, 25, 12, 13, 27, 13},
0273     {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
0274      230, -44, 230, 201, -191, 201},
0275     {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
0276      0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
0277 };
0278 
0279 struct chan_info_nphy_2055 {
0280     u16 chan;
0281     u16 freq;
0282     uint unknown;
0283     u8 RF_pll_ref;
0284     u8 RF_rf_pll_mod1;
0285     u8 RF_rf_pll_mod0;
0286     u8 RF_vco_cap_tail;
0287     u8 RF_vco_cal1;
0288     u8 RF_vco_cal2;
0289     u8 RF_pll_lf_c1;
0290     u8 RF_pll_lf_r1;
0291     u8 RF_pll_lf_c2;
0292     u8 RF_lgbuf_cen_buf;
0293     u8 RF_lgen_tune1;
0294     u8 RF_lgen_tune2;
0295     u8 RF_core1_lgbuf_a_tune;
0296     u8 RF_core1_lgbuf_g_tune;
0297     u8 RF_core1_rxrf_reg1;
0298     u8 RF_core1_tx_pga_pad_tn;
0299     u8 RF_core1_tx_mx_bgtrim;
0300     u8 RF_core2_lgbuf_a_tune;
0301     u8 RF_core2_lgbuf_g_tune;
0302     u8 RF_core2_rxrf_reg1;
0303     u8 RF_core2_tx_pga_pad_tn;
0304     u8 RF_core2_tx_mx_bgtrim;
0305     u16 PHY_BW1a;
0306     u16 PHY_BW2;
0307     u16 PHY_BW3;
0308     u16 PHY_BW4;
0309     u16 PHY_BW5;
0310     u16 PHY_BW6;
0311 };
0312 
0313 struct chan_info_nphy_radio205x {
0314     u16 chan;
0315     u16 freq;
0316     u8 RF_SYN_pll_vcocal1;
0317     u8 RF_SYN_pll_vcocal2;
0318     u8 RF_SYN_pll_refdiv;
0319     u8 RF_SYN_pll_mmd2;
0320     u8 RF_SYN_pll_mmd1;
0321     u8 RF_SYN_pll_loopfilter1;
0322     u8 RF_SYN_pll_loopfilter2;
0323     u8 RF_SYN_pll_loopfilter3;
0324     u8 RF_SYN_pll_loopfilter4;
0325     u8 RF_SYN_pll_loopfilter5;
0326     u8 RF_SYN_reserved_addr27;
0327     u8 RF_SYN_reserved_addr28;
0328     u8 RF_SYN_reserved_addr29;
0329     u8 RF_SYN_logen_VCOBUF1;
0330     u8 RF_SYN_logen_MIXER2;
0331     u8 RF_SYN_logen_BUF3;
0332     u8 RF_SYN_logen_BUF4;
0333     u8 RF_RX0_lnaa_tune;
0334     u8 RF_RX0_lnag_tune;
0335     u8 RF_TX0_intpaa_boost_tune;
0336     u8 RF_TX0_intpag_boost_tune;
0337     u8 RF_TX0_pada_boost_tune;
0338     u8 RF_TX0_padg_boost_tune;
0339     u8 RF_TX0_pgaa_boost_tune;
0340     u8 RF_TX0_pgag_boost_tune;
0341     u8 RF_TX0_mixa_boost_tune;
0342     u8 RF_TX0_mixg_boost_tune;
0343     u8 RF_RX1_lnaa_tune;
0344     u8 RF_RX1_lnag_tune;
0345     u8 RF_TX1_intpaa_boost_tune;
0346     u8 RF_TX1_intpag_boost_tune;
0347     u8 RF_TX1_pada_boost_tune;
0348     u8 RF_TX1_padg_boost_tune;
0349     u8 RF_TX1_pgaa_boost_tune;
0350     u8 RF_TX1_pgag_boost_tune;
0351     u8 RF_TX1_mixa_boost_tune;
0352     u8 RF_TX1_mixg_boost_tune;
0353     u16 PHY_BW1a;
0354     u16 PHY_BW2;
0355     u16 PHY_BW3;
0356     u16 PHY_BW4;
0357     u16 PHY_BW5;
0358     u16 PHY_BW6;
0359 };
0360 
0361 struct chan_info_nphy_radio2057 {
0362     u16 chan;
0363     u16 freq;
0364     u8 RF_vcocal_countval0;
0365     u8 RF_vcocal_countval1;
0366     u8 RF_rfpll_refmaster_sparextalsize;
0367     u8 RF_rfpll_loopfilter_r1;
0368     u8 RF_rfpll_loopfilter_c2;
0369     u8 RF_rfpll_loopfilter_c1;
0370     u8 RF_cp_kpd_idac;
0371     u8 RF_rfpll_mmd0;
0372     u8 RF_rfpll_mmd1;
0373     u8 RF_vcobuf_tune;
0374     u8 RF_logen_mx2g_tune;
0375     u8 RF_logen_mx5g_tune;
0376     u8 RF_logen_indbuf2g_tune;
0377     u8 RF_logen_indbuf5g_tune;
0378     u8 RF_txmix2g_tune_boost_pu_core0;
0379     u8 RF_pad2g_tune_pus_core0;
0380     u8 RF_pga_boost_tune_core0;
0381     u8 RF_txmix5g_boost_tune_core0;
0382     u8 RF_pad5g_tune_misc_pus_core0;
0383     u8 RF_lna2g_tune_core0;
0384     u8 RF_lna5g_tune_core0;
0385     u8 RF_txmix2g_tune_boost_pu_core1;
0386     u8 RF_pad2g_tune_pus_core1;
0387     u8 RF_pga_boost_tune_core1;
0388     u8 RF_txmix5g_boost_tune_core1;
0389     u8 RF_pad5g_tune_misc_pus_core1;
0390     u8 RF_lna2g_tune_core1;
0391     u8 RF_lna5g_tune_core1;
0392     u16 PHY_BW1a;
0393     u16 PHY_BW2;
0394     u16 PHY_BW3;
0395     u16 PHY_BW4;
0396     u16 PHY_BW5;
0397     u16 PHY_BW6;
0398 };
0399 
0400 struct chan_info_nphy_radio2057_rev5 {
0401     u16 chan;
0402     u16 freq;
0403     u8 RF_vcocal_countval0;
0404     u8 RF_vcocal_countval1;
0405     u8 RF_rfpll_refmaster_sparextalsize;
0406     u8 RF_rfpll_loopfilter_r1;
0407     u8 RF_rfpll_loopfilter_c2;
0408     u8 RF_rfpll_loopfilter_c1;
0409     u8 RF_cp_kpd_idac;
0410     u8 RF_rfpll_mmd0;
0411     u8 RF_rfpll_mmd1;
0412     u8 RF_vcobuf_tune;
0413     u8 RF_logen_mx2g_tune;
0414     u8 RF_logen_indbuf2g_tune;
0415     u8 RF_txmix2g_tune_boost_pu_core0;
0416     u8 RF_pad2g_tune_pus_core0;
0417     u8 RF_lna2g_tune_core0;
0418     u8 RF_txmix2g_tune_boost_pu_core1;
0419     u8 RF_pad2g_tune_pus_core1;
0420     u8 RF_lna2g_tune_core1;
0421     u16 PHY_BW1a;
0422     u16 PHY_BW2;
0423     u16 PHY_BW3;
0424     u16 PHY_BW4;
0425     u16 PHY_BW5;
0426     u16 PHY_BW6;
0427 };
0428 
0429 struct nphy_sfo_cfg {
0430     u16 PHY_BW1a;
0431     u16 PHY_BW2;
0432     u16 PHY_BW3;
0433     u16 PHY_BW4;
0434     u16 PHY_BW5;
0435     u16 PHY_BW6;
0436 };
0437 
0438 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
0439     {
0440      184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0441      0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0442      0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
0443     {
0444      186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0445      0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0446      0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
0447     {
0448      188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0449      0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0450      0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
0451     {
0452      190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0453      0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0454      0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
0455     {
0456      192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0457      0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0458      0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
0459     {
0460      194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
0461      0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0462      0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
0463     {
0464      196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
0465      0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0466      0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
0467     {
0468      198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
0469      0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0470      0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
0471     {
0472      200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
0473      0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0474      0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
0475     {
0476      202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
0477      0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0478      0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
0479     {
0480      204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
0481      0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0482      0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
0483     {
0484      206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
0485      0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0486      0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
0487     {
0488      208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
0489      0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0490      0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
0491     {
0492      210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
0493      0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
0494      0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
0495     {
0496      212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
0497      0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
0498      0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
0499     {
0500      214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
0501      0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
0502      0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
0503     {
0504      216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
0505      0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
0506      0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
0507     {
0508      218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
0509      0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
0510      0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
0511     {
0512      220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
0513      0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
0514      0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
0515     {
0516      222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
0517      0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
0518      0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
0519     {
0520      224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
0521      0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
0522      0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
0523     {
0524      226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
0525      0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
0526      0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
0527     {
0528      228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
0529      0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
0530      0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
0531     {
0532      32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
0533      0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
0534      0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
0535     {
0536      34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
0537      0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
0538      0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
0539     {
0540      36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
0541      0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
0542      0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
0543     {
0544      38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
0545      0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
0546      0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
0547     {
0548      40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
0549      0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
0550      0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
0551     {
0552      42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
0553      0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
0554      0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
0555     {
0556      44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
0557      0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
0558      0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
0559     {
0560      46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
0561      0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
0562      0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
0563     {
0564      48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
0565      0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
0566      0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
0567     {
0568      50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
0569      0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
0570      0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
0571     {
0572      52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
0573      0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
0574      0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
0575     {
0576      54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
0577      0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
0578      0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
0579     {
0580      56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
0581      0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
0582      0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
0583     {
0584      58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
0585      0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
0586      0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
0587     {
0588      60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
0589      0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
0590      0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
0591     {
0592      62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
0593      0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
0594      0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
0595     {
0596      64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
0597      0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
0598      0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
0599     {
0600      66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
0601      0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
0602      0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
0603     {
0604      68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
0605      0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
0606      0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
0607     {
0608      70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
0609      0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
0610      0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
0611     {
0612      72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
0613      0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
0614      0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
0615     {
0616      74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
0617      0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
0618      0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
0619     {
0620      76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
0621      0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
0622      0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
0623     {
0624      78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
0625      0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
0626      0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
0627     {
0628      80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
0629      0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
0630      0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
0631     {
0632      82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
0633      0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
0634      0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
0635     {
0636      84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
0637      0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
0638      0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
0639     {
0640      86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
0641      0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
0642      0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
0643     {
0644      88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
0645      0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
0646      0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
0647     {
0648      90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
0649      0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
0650      0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
0651     {
0652      92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
0653      0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
0654      0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
0655     {
0656      94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
0657      0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
0658      0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
0659     {
0660      96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
0661      0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
0662      0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
0663     {
0664      98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
0665      0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
0666      0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
0667     {
0668      100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
0669      0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
0670      0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
0671     {
0672      102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
0673      0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
0674      0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
0675     {
0676      104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
0677      0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
0678      0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
0679     {
0680      106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
0681      0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
0682      0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
0683     {
0684      108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
0685      0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
0686      0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
0687     {
0688      110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
0689      0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
0690      0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
0691     {
0692      112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
0693      0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
0694      0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
0695     {
0696      114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
0697      0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
0698      0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
0699     {
0700      116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
0701      0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
0702      0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
0703     {
0704      118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
0705      0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
0706      0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
0707     {
0708      120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
0709      0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
0710      0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
0711     {
0712      122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
0713      0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
0714      0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
0715     {
0716      124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
0717      0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
0718      0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
0719     {
0720      126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
0721      0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
0722      0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
0723     {
0724      128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
0725      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0726      0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
0727     {
0728      130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
0729      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0730      0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
0731     {
0732      132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
0733      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0734      0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
0735     {
0736      134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
0737      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0738      0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
0739     {
0740      136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
0741      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0742      0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
0743     {
0744      138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
0745      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0746      0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
0747     {
0748      140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0749      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0750      0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
0751     {
0752      142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0753      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0754      0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
0755     {
0756      144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0757      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0758      0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
0759     {
0760      145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
0761      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0762      0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
0763     {
0764      146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0765      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0766      0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
0767     {
0768      147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
0769      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0770      0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
0771     {
0772      148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0773      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0774      0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
0775     {
0776      149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
0777      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0778      0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
0779     {
0780      150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0781      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0782      0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
0783     {
0784      151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
0785      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0786      0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
0787     {
0788      152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0789      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0790      0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
0791     {
0792      153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
0793      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0794      0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
0795     {
0796      154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0797      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0798      0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
0799     {
0800      155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
0801      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0802      0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
0803     {
0804      156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0805      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0806      0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
0807     {
0808      157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
0809      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0810      0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
0811     {
0812      158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
0813      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0814      0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
0815     {
0816      159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
0817      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0818      0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
0819     {
0820      160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
0821      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0822      0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
0823     {
0824      161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
0825      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0826      0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
0827     {
0828      162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
0829      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0830      0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
0831     {
0832      163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
0833      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0834      0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
0835     {
0836      164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
0837      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0838      0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
0839     {
0840      165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
0841      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0842      0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
0843     {
0844      166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
0845      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0846      0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
0847     {
0848      168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
0849      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0850      0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
0851     {
0852      170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
0853      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0854      0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
0855     {
0856      172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
0857      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0858      0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
0859     {
0860      174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
0861      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0862      0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
0863     {
0864      176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
0865      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0866      0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
0867     {
0868      178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
0869      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0870      0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
0871     {
0872      180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
0873      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0874      0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
0875     {
0876      182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
0877      0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0878      0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
0879     {
0880      1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
0881      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
0882      0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
0883     {
0884      2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
0885      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
0886      0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
0887     {
0888      3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
0889      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
0890      0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
0891     {
0892      4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
0893      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
0894      0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
0895     {
0896      5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
0897      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
0898      0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
0899     {
0900      6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
0901      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
0902      0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
0903     {
0904      7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
0905      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
0906      0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
0907     {
0908      8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
0909      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
0910      0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
0911     {
0912      9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
0913      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
0914      0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
0915     {
0916      10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
0917      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
0918      0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
0919     {
0920      11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
0921      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
0922      0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
0923     {
0924      12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
0925      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
0926      0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
0927     {
0928      13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
0929      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
0930      0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
0931     {
0932      14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
0933      0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
0934      0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
0935 };
0936 
0937 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
0938     {
0939      184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
0940      0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0941      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0942      0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
0943     {
0944      186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
0945      0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0946      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0947      0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
0948     {
0949      188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
0950      0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0951      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0952      0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
0953     {
0954      190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
0955      0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0956      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0957      0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
0958     {
0959      192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
0960      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0961      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0962      0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
0963     {
0964      194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
0965      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0966      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0967      0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
0968     {
0969      196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
0970      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0971      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0972      0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
0973     {
0974      198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
0975      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
0976      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
0977      0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
0978     {
0979      200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
0980      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
0981      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
0982      0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
0983     {
0984      202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
0985      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
0986      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
0987      0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
0988     {
0989      204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
0990      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
0991      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
0992      0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
0993     {
0994      206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
0995      0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
0996      0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
0997      0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
0998     {
0999      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, &regval);
16940     wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16941 
16942     if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16943         regval = 0xcdaa;
16944         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16945         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
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, &regval);
16951         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16952 
16953         regval = 0x7aab;
16954         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16955         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16956 
16957         regval = 0x0800;
16958         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16959         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
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     /* use the provided transmit power */
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 
19037     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19038         if (pi->phyhang_avoid)
19039             wlc_phy_stay_in_carriersearch_nphy(pi, true);
19040 
19041         cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19042 
19043         if (pi->nphy_gband_spurwar_en) {
19044 
19045             wlc_phy_adjust_rx_analpfbw_nphy(
19046                 pi,
19047                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19048 
19049             if (CHSPEC_IS2G(pi->radio_chanspec)) {
19050                 if ((cur_channel == 11)
19051                     && CHSPEC_IS40(pi->radio_chanspec))
19052                     wlc_phy_adjust_min_noisevar_nphy(
19053                         pi, 2,
19054                         nphy_adj_tone_id_buf,
19055                         nphy_adj_noise_var_buf);
19056                 else
19057                     wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19058                                      NULL,
19059                                      NULL);
19060             }
19061 
19062             wlc_phy_adjust_crsminpwr_nphy(pi,
19063                              NPHY_ADJUSTED_MINCRSPOWER);
19064         }
19065 
19066         if ((pi->nphy_gband_spurwar2_en)
19067             && CHSPEC_IS2G(pi->radio_chanspec)) {
19068 
19069             if (CHSPEC_IS40(pi->radio_chanspec)) {
19070                 switch (cur_channel) {
19071                 case 3:
19072                     nphy_adj_tone_id_buf[0] = 57;
19073                     nphy_adj_tone_id_buf[1] = 58;
19074                     nphy_adj_noise_var_buf[0] = 0x22f;
19075                     nphy_adj_noise_var_buf[1] = 0x25f;
19076                     isAdjustNoiseVar = true;
19077                     break;
19078                 case 4:
19079                     nphy_adj_tone_id_buf[0] = 41;
19080                     nphy_adj_tone_id_buf[1] = 42;
19081                     nphy_adj_noise_var_buf[0] = 0x22f;
19082                     nphy_adj_noise_var_buf[1] = 0x25f;
19083                     isAdjustNoiseVar = true;
19084                     break;
19085                 case 5:
19086                     nphy_adj_tone_id_buf[0] = 25;
19087                     nphy_adj_tone_id_buf[1] = 26;
19088                     nphy_adj_noise_var_buf[0] = 0x24f;
19089                     nphy_adj_noise_var_buf[1] = 0x25f;
19090                     isAdjustNoiseVar = true;
19091                     break;
19092                 case 6:
19093                     nphy_adj_tone_id_buf[0] = 9;
19094                     nphy_adj_tone_id_buf[1] = 10;
19095                     nphy_adj_noise_var_buf[0] = 0x22f;
19096                     nphy_adj_noise_var_buf[1] = 0x24f;
19097                     isAdjustNoiseVar = true;
19098                     break;
19099                 case 7:
19100                     nphy_adj_tone_id_buf[0] = 121;
19101                     nphy_adj_tone_id_buf[1] = 122;
19102                     nphy_adj_noise_var_buf[0] = 0x18f;
19103                     nphy_adj_noise_var_buf[1] = 0x24f;
19104                     isAdjustNoiseVar = true;
19105                     break;
19106                 case 8:
19107                     nphy_adj_tone_id_buf[0] = 105;
19108                     nphy_adj_tone_id_buf[1] = 106;
19109                     nphy_adj_noise_var_buf[0] = 0x22f;
19110                     nphy_adj_noise_var_buf[1] = 0x25f;
19111                     isAdjustNoiseVar = true;
19112                     break;
19113                 case 9:
19114                     nphy_adj_tone_id_buf[0] = 89;
19115                     nphy_adj_tone_id_buf[1] = 90;
19116                     nphy_adj_noise_var_buf[0] = 0x22f;
19117                     nphy_adj_noise_var_buf[1] = 0x24f;
19118                     isAdjustNoiseVar = true;
19119                     break;
19120                 case 10:
19121                     nphy_adj_tone_id_buf[0] = 73;
19122                     nphy_adj_tone_id_buf[1] = 74;
19123                     nphy_adj_noise_var_buf[0] = 0x22f;
19124                     nphy_adj_noise_var_buf[1] = 0x24f;
19125                     isAdjustNoiseVar = true;
19126                     break;
19127                 default:
19128                     isAdjustNoiseVar = false;
19129                     break;
19130                 }
19131             }
19132 
19133             if (isAdjustNoiseVar) {
19134                 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19135 
19136                 wlc_phy_adjust_min_noisevar_nphy(
19137                     pi,
19138                     numTonesAdjust,
19139                     nphy_adj_tone_id_buf,
19140                     nphy_adj_noise_var_buf);
19141             } else {
19142                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19143                                  NULL);
19144             }
19145         }
19146 
19147         if ((pi->nphy_aband_spurwar_en) &&
19148             (CHSPEC_IS5G(pi->radio_chanspec))) {
19149             switch (cur_channel) {
19150             case 54:
19151                 nphy_adj_tone_id_buf[0] = 32;
19152                 nphy_adj_noise_var_buf[0] = 0x25f;
19153                 break;
19154             case 38:
19155             case 102:
19156             case 118:
19157                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19158                     (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19159                     nphy_adj_tone_id_buf[0] = 32;
19160                     nphy_adj_noise_var_buf[0] = 0x21f;
19161                 } else {
19162                     nphy_adj_tone_id_buf[0] = 0;
19163                     nphy_adj_noise_var_buf[0] = 0x0;
19164                 }
19165                 break;
19166             case 134:
19167                 nphy_adj_tone_id_buf[0] = 32;
19168                 nphy_adj_noise_var_buf[0] = 0x21f;
19169                 break;
19170             case 151:
19171                 nphy_adj_tone_id_buf[0] = 16;
19172                 nphy_adj_noise_var_buf[0] = 0x23f;
19173                 break;
19174             case 153:
19175             case 161:
19176                 nphy_adj_tone_id_buf[0] = 48;
19177                 nphy_adj_noise_var_buf[0] = 0x23f;
19178                 break;
19179             default:
19180                 nphy_adj_tone_id_buf[0] = 0;
19181                 nphy_adj_noise_var_buf[0] = 0x0;
19182                 break;
19183             }
19184 
19185             if (nphy_adj_tone_id_buf[0]
19186                 && nphy_adj_noise_var_buf[0])
19187                 wlc_phy_adjust_min_noisevar_nphy(
19188                     pi, 1,
19189                     nphy_adj_tone_id_buf,
19190                     nphy_adj_noise_var_buf);
19191             else
19192                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19193                                  NULL);
19194         }
19195 
19196         if (pi->phyhang_avoid)
19197             wlc_phy_stay_in_carriersearch_nphy(pi, false);
19198     }
19199 }
19200 
19201 void wlc_phy_init_nphy(struct brcms_phy *pi)
19202 {
19203     u16 val;
19204     u16 clip1_ths[2];
19205     struct nphy_txgains target_gain;
19206     u8 tx_pwr_ctrl_state;
19207     bool do_nphy_cal = false;
19208     uint core;
19209     u32 d11_clk_ctl_st;
19210     bool do_rssi_cal = false;
19211 
19212     core = 0;
19213 
19214     if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19215         pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19216 
19217     if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19218         ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19219          (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19220         if ((pi->sh->boardflags & BFL_EXTLNA) &&
19221             (CHSPEC_IS2G(pi->radio_chanspec)))
19222             bcma_cc_set32(&pi->d11core->bus->drv_cc,
19223                       BCMA_CC_CHIPCTL, 0x40);
19224     }
19225 
19226     if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19227         bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19228                         ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19229 
19230     if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19231         CHSPEC_IS40(pi->radio_chanspec)) {
19232 
19233         d11_clk_ctl_st = bcma_read32(pi->d11core,
19234                          D11REGOFFS(clk_ctl_st));
19235         bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19236                 ~(CCS_FORCEHT | CCS_HTAREQ));
19237 
19238         bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19239                  d11_clk_ctl_st);
19240     }
19241 
19242     pi->use_int_tx_iqlo_cal_nphy =
19243         (PHY_IPA(pi) ||
19244          (NREV_GE(pi->pubpi.phy_rev, 7) ||
19245           (NREV_GE(pi->pubpi.phy_rev, 5)
19246            && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19247 
19248     pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19249 
19250     pi->nphy_deaf_count = 0;
19251 
19252     wlc_phy_tbl_init_nphy(pi);
19253 
19254     pi->nphy_crsminpwr_adjusted = false;
19255     pi->nphy_noisevars_adjusted = false;
19256 
19257     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19258         write_phy_reg(pi, 0xe7, 0);
19259         write_phy_reg(pi, 0xec, 0);
19260         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19261             write_phy_reg(pi, 0x342, 0);
19262             write_phy_reg(pi, 0x343, 0);
19263             write_phy_reg(pi, 0x346, 0);
19264             write_phy_reg(pi, 0x347, 0);
19265         }
19266         write_phy_reg(pi, 0xe5, 0);
19267         write_phy_reg(pi, 0xe6, 0);
19268     } else {
19269         write_phy_reg(pi, 0xec, 0);
19270     }
19271 
19272     write_phy_reg(pi, 0x91, 0);
19273     write_phy_reg(pi, 0x92, 0);
19274     if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19275         write_phy_reg(pi, 0x93, 0);
19276         write_phy_reg(pi, 0x94, 0);
19277     }
19278 
19279     and_phy_reg(pi, 0xa1, ~3);
19280 
19281     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19282         write_phy_reg(pi, 0x8f, 0);
19283         write_phy_reg(pi, 0xa5, 0);
19284     } else {
19285         write_phy_reg(pi, 0xa5, 0);
19286     }
19287 
19288     if (NREV_IS(pi->pubpi.phy_rev, 2))
19289         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19290     else if (NREV_LT(pi->pubpi.phy_rev, 2))
19291         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19292 
19293     write_phy_reg(pi, 0x203, 32);
19294     write_phy_reg(pi, 0x201, 32);
19295 
19296     if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19297         write_phy_reg(pi, 0x20d, 160);
19298     else
19299         write_phy_reg(pi, 0x20d, 184);
19300 
19301     write_phy_reg(pi, 0x13a, 200);
19302 
19303     write_phy_reg(pi, 0x70, 80);
19304 
19305     write_phy_reg(pi, 0x1ff, 48);
19306 
19307     if (NREV_LT(pi->pubpi.phy_rev, 8))
19308         wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19309 
19310     wlc_phy_stf_chain_upd_nphy(pi);
19311 
19312     if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19313         write_phy_reg(pi, 0x180, 0xaa8);
19314         write_phy_reg(pi, 0x181, 0x9a4);
19315     }
19316 
19317     if (PHY_IPA(pi)) {
19318         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19319 
19320             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19321                     0x29b, (0x1 << 0), (1) << 0);
19322 
19323             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19324                     0x29c, (0x1ff << 7),
19325                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19326 
19327         }
19328 
19329         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19330     } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19331         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19332     }
19333 
19334     wlc_phy_workarounds_nphy(pi);
19335 
19336     wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19337 
19338     val = read_phy_reg(pi, 0x01);
19339     write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19340     write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19341     wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19342 
19343     wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19344 
19345     wlc_phy_pa_override_nphy(pi, OFF);
19346     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19347     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19348     wlc_phy_pa_override_nphy(pi, ON);
19349 
19350     wlc_phy_classifier_nphy(pi, 0, 0);
19351     wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19352 
19353     if (CHSPEC_IS2G(pi->radio_chanspec))
19354         wlc_phy_bphy_init_nphy(pi);
19355 
19356     tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19357     wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19358 
19359     wlc_phy_txpwr_fixpower_nphy(pi);
19360 
19361     wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19362 
19363     wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19364 
19365     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19366         u32 *tx_pwrctrl_tbl = NULL;
19367         u16 idx;
19368         s16 pga_gn = 0;
19369         s16 pad_gn = 0;
19370         s32 rfpwr_offset;
19371 
19372         if (PHY_IPA(pi)) {
19373             tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19374         } else {
19375             if (CHSPEC_IS5G(pi->radio_chanspec)) {
19376                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19377                     tx_pwrctrl_tbl =
19378                         nphy_tpc_5GHz_txgain_rev3;
19379                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19380                     tx_pwrctrl_tbl =
19381                         (pi->srom_fem5g.extpagain ==
19382                          3) ?
19383                         nphy_tpc_5GHz_txgain_HiPwrEPA :
19384                         nphy_tpc_5GHz_txgain_rev4;
19385                 else
19386                     tx_pwrctrl_tbl =
19387                         nphy_tpc_5GHz_txgain_rev5;
19388             } else {
19389                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19390                     if (pi->pubpi.radiorev == 5)
19391                         tx_pwrctrl_tbl =
19392                            nphy_tpc_txgain_epa_2057rev5;
19393                     else if (pi->pubpi.radiorev == 3)
19394                         tx_pwrctrl_tbl =
19395                            nphy_tpc_txgain_epa_2057rev3;
19396                 } else {
19397                     if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19398                         (pi->srom_fem2g.extpagain == 3))
19399                         tx_pwrctrl_tbl =
19400                                nphy_tpc_txgain_HiPwrEPA;
19401                     else
19402                         tx_pwrctrl_tbl =
19403                             nphy_tpc_txgain_rev3;
19404                 }
19405             }
19406         }
19407 
19408         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19409                      192, 32, tx_pwrctrl_tbl);
19410         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19411                      192, 32, tx_pwrctrl_tbl);
19412 
19413         pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19414 
19415         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19416 
19417             for (idx = 0; idx < 128; idx++) {
19418                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19419                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19420                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19421                                  pad_gn);
19422                 wlc_phy_table_write_nphy(
19423                     pi,
19424                     NPHY_TBL_ID_CORE1TXPWRCTL,
19425                     1, 576 + idx, 32,
19426                     &rfpwr_offset);
19427                 wlc_phy_table_write_nphy(
19428                     pi,
19429                     NPHY_TBL_ID_CORE2TXPWRCTL,
19430                     1, 576 + idx, 32,
19431                     &rfpwr_offset);
19432             }
19433         } else {
19434 
19435             for (idx = 0; idx < 128; idx++) {
19436                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19437                 if (CHSPEC_IS2G(pi->radio_chanspec))
19438                     rfpwr_offset = (s16)
19439                          nphy_papd_pga_gain_delta_ipa_2g
19440                                        [pga_gn];
19441                 else
19442                     rfpwr_offset = (s16)
19443                          nphy_papd_pga_gain_delta_ipa_5g
19444                                        [pga_gn];
19445 
19446                 wlc_phy_table_write_nphy(
19447                     pi,
19448                     NPHY_TBL_ID_CORE1TXPWRCTL,
19449                     1, 576 + idx, 32,
19450                     &rfpwr_offset);
19451                 wlc_phy_table_write_nphy(
19452                     pi,
19453                     NPHY_TBL_ID_CORE2TXPWRCTL,
19454                     1, 576 + idx, 32,
19455                     &rfpwr_offset);
19456             }
19457 
19458         }
19459     } else {
19460 
19461         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19462                      192, 32, nphy_tpc_txgain);
19463         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19464                      192, 32, nphy_tpc_txgain);
19465     }
19466 
19467     if (pi->sh->phyrxchain != 0x3)
19468         wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19469                          pi->sh->phyrxchain);
19470 
19471     if (PHY_PERICAL_MPHASE_PENDING(pi))
19472         wlc_phy_cal_perical_mphase_restart(pi);
19473 
19474     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19475         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19476                   (pi->nphy_rssical_chanspec_2G == 0) :
19477                   (pi->nphy_rssical_chanspec_5G == 0);
19478 
19479         if (do_rssi_cal)
19480             wlc_phy_rssi_cal_nphy(pi);
19481         else
19482             wlc_phy_restore_rssical_nphy(pi);
19483     } else {
19484         wlc_phy_rssi_cal_nphy(pi);
19485     }
19486 
19487     if (!SCAN_RM_IN_PROGRESS(pi))
19488         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19489                   (pi->nphy_iqcal_chanspec_2G == 0) :
19490                   (pi->nphy_iqcal_chanspec_5G == 0);
19491 
19492     if (!pi->do_initcal)
19493         do_nphy_cal = false;
19494 
19495     if (do_nphy_cal) {
19496 
19497         target_gain = wlc_phy_get_tx_gain_nphy(pi);
19498 
19499         if (pi->antsel_type == ANTSEL_2x3)
19500             wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19501                         true);
19502 
19503         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19504             wlc_phy_rssi_cal_nphy(pi);
19505 
19506             if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19507                 pi->nphy_cal_orig_pwr_idx[0] =
19508                     pi->nphy_txpwrindex[PHY_CORE_0]
19509                     .
19510                     index_internal;
19511                 pi->nphy_cal_orig_pwr_idx[1] =
19512                     pi->nphy_txpwrindex[PHY_CORE_1]
19513                     .
19514                     index_internal;
19515 
19516                 wlc_phy_precal_txgain_nphy(pi);
19517                 target_gain =
19518                     wlc_phy_get_tx_gain_nphy(pi);
19519             }
19520 
19521             if (wlc_phy_cal_txiqlo_nphy
19522                     (pi, target_gain, true,
19523                     false) == 0) {
19524                 if (wlc_phy_cal_rxiq_nphy
19525                         (pi, target_gain, 2,
19526                         false) == 0)
19527                     wlc_phy_savecal_nphy(pi);
19528 
19529             }
19530         } else if (pi->mphase_cal_phase_id ==
19531                MPHASE_CAL_STATE_IDLE) {
19532             wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19533                         PHY_PERICAL_PHYINIT);
19534         }
19535     } else {
19536         wlc_phy_restorecal_nphy(pi);
19537     }
19538 
19539     wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19540 
19541     wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19542 
19543     wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19544 
19545     if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19546 
19547         write_phy_reg(pi, 0x70, 50);
19548 
19549     wlc_phy_txlpfbw_nphy(pi);
19550 
19551     wlc_phy_spurwar_nphy(pi);
19552 
19553 }
19554 
19555 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19556 {
19557     u16 val;
19558 
19559     wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19560 
19561     val = read_phy_reg(pi, 0x01);
19562     write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19563     udelay(1);
19564     write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19565 
19566     wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19567 
19568     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19569 }
19570 
19571 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19572 {
19573     u16 rfctrlintc_override_val;
19574 
19575     if (!en) {
19576 
19577         pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19578         pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19579 
19580         if (NREV_GE(pi->pubpi.phy_rev, 7))
19581             rfctrlintc_override_val = 0x1480;
19582         else if (NREV_GE(pi->pubpi.phy_rev, 3))
19583             rfctrlintc_override_val =
19584                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19585         else
19586             rfctrlintc_override_val =
19587                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19588 
19589         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19590         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19591     } else {
19592         write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19593         write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19594     }
19595 
19596 }
19597 
19598 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19599 {
19600 
19601     u16 txrx_chain =
19602         (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19603     bool CoreActv_override = false;
19604 
19605     if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19606         txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19607         CoreActv_override = true;
19608 
19609         if (NREV_LE(pi->pubpi.phy_rev, 2))
19610             and_phy_reg(pi, 0xa0, ~0x20);
19611     } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19612         txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19613         CoreActv_override = true;
19614 
19615         if (NREV_LE(pi->pubpi.phy_rev, 2))
19616             or_phy_reg(pi, 0xa0, 0x20);
19617     }
19618 
19619     mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19620 
19621     if (CoreActv_override) {
19622         pi->nphy_perical = PHY_PERICAL_DISABLE;
19623         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19624     } else {
19625         pi->nphy_perical = PHY_PERICAL_MPHASE;
19626         and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19627     }
19628 }
19629 
19630 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19631 {
19632     u16 regval;
19633     u16 tbl_buf[16];
19634     uint i;
19635     struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19636     u16 tbl_opcode;
19637     bool suspend;
19638 
19639     pi->sh->phyrxchain = rxcore_bitmask;
19640 
19641     if (!pi->sh->clk)
19642         return;
19643 
19644     suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19645              MCTL_EN_MAC));
19646     if (!suspend)
19647         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19648 
19649     if (pi->phyhang_avoid)
19650         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19651 
19652     regval = read_phy_reg(pi, 0xa2);
19653     regval &= ~(0xf << 4);
19654     regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19655     write_phy_reg(pi, 0xa2, regval);
19656 
19657     if ((rxcore_bitmask & 0x3) != 0x3) {
19658 
19659         write_phy_reg(pi, 0x20e, 1);
19660 
19661         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19662             if (pi->rx2tx_biasentry == -1) {
19663                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19664                             ARRAY_SIZE(tbl_buf), 80,
19665                             16, tbl_buf);
19666 
19667                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19668                     if (tbl_buf[i] ==
19669                         NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19670                         pi->rx2tx_biasentry = (u8) i;
19671                         tbl_opcode =
19672                             NPHY_REV3_RFSEQ_CMD_NOP;
19673                         wlc_phy_table_write_nphy(
19674                             pi,
19675                             NPHY_TBL_ID_RFSEQ,
19676                             1, i,
19677                             16,
19678                             &tbl_opcode);
19679                         break;
19680                     } else if (tbl_buf[i] ==
19681                            NPHY_REV3_RFSEQ_CMD_END)
19682                         break;
19683                 }
19684             }
19685         }
19686     } else {
19687 
19688         write_phy_reg(pi, 0x20e, 30);
19689 
19690         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19691             if (pi->rx2tx_biasentry != -1) {
19692                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19693                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19694                              1, pi->rx2tx_biasentry,
19695                              16, &tbl_opcode);
19696                 pi->rx2tx_biasentry = -1;
19697             }
19698         }
19699     }
19700 
19701     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19702 
19703     if (pi->phyhang_avoid)
19704         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19705 
19706     if (!suspend)
19707         wlapi_enable_mac(pi->sh->physhim);
19708 }
19709 
19710 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19711 {
19712     u16 regval, rxen_bits;
19713     struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19714 
19715     regval = read_phy_reg(pi, 0xa2);
19716     rxen_bits = (regval >> 4) & 0xf;
19717 
19718     return (u8) rxen_bits;
19719 }
19720 
19721 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19722 {
19723     return PHY_IPA(pi);
19724 }
19725 
19726 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19727 {
19728 }
19729 
19730 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19731 {
19732 
19733     and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19734     and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19735 
19736     or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19737     or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19738 
19739 }
19740 
19741 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19742 {
19743     struct radio_20xx_regs *regs_2057_ptr = NULL;
19744 
19745     if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19746         regs_2057_ptr = regs_2057_rev4;
19747     } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19748            || NREV_IS(pi->pubpi.phy_rev, 9)) {
19749         switch (pi->pubpi.radiorev) {
19750         case 5:
19751 
19752             if (NREV_IS(pi->pubpi.phy_rev, 8))
19753                 regs_2057_ptr = regs_2057_rev5;
19754             else if (NREV_IS(pi->pubpi.phy_rev, 9))
19755                 regs_2057_ptr = regs_2057_rev5v1;
19756             break;
19757 
19758         case 7:
19759 
19760             regs_2057_ptr = regs_2057_rev7;
19761             break;
19762 
19763         case 8:
19764 
19765             regs_2057_ptr = regs_2057_rev8;
19766             break;
19767 
19768         default:
19769             break;
19770         }
19771     }
19772 
19773     wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19774 }
19775 
19776 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19777 {
19778     u16 rcal_reg = 0;
19779     int i;
19780 
19781     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19782 
19783         if (pi->pubpi.radiorev == 5) {
19784 
19785             and_phy_reg(pi, 0x342, ~(0x1 << 1));
19786 
19787             udelay(10);
19788 
19789             mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19790             mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19791                       0x1);
19792         }
19793         mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19794 
19795         udelay(10);
19796 
19797         mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19798 
19799         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19800             rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19801             if (rcal_reg & 0x1)
19802                 break;
19803 
19804             udelay(100);
19805         }
19806 
19807         if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19808              "HW error: radio calib2"))
19809             return 0;
19810 
19811         mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19812 
19813         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19814 
19815         mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19816         if (pi->pubpi.radiorev == 5) {
19817 
19818             mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19819             mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19820                       0x0);
19821         }
19822 
19823         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19824 
19825             mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19826                       rcal_reg);
19827             mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19828                       rcal_reg << 2);
19829         }
19830 
19831     } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19832         u16 savereg;
19833 
19834         savereg =
19835             read_radio_reg(
19836                 pi,
19837                 RADIO_2056_SYN_PLL_MAST2 |
19838                 RADIO_2056_SYN);
19839         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19840                 savereg | 0x7);
19841         udelay(10);
19842 
19843         write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19844                 0x1);
19845         udelay(10);
19846 
19847         write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19848                 0x9);
19849 
19850         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19851             rcal_reg = read_radio_reg(
19852                 pi,
19853                 RADIO_2056_SYN_RCAL_CODE_OUT |
19854                 RADIO_2056_SYN);
19855             if (rcal_reg & 0x80)
19856                 break;
19857 
19858             udelay(100);
19859         }
19860 
19861         if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19862              "HW error: radio calib3"))
19863             return 0;
19864 
19865         write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19866                 0x1);
19867 
19868         rcal_reg =
19869             read_radio_reg(pi,
19870                        RADIO_2056_SYN_RCAL_CODE_OUT |
19871                        RADIO_2056_SYN);
19872 
19873         write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19874                 0x0);
19875 
19876         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19877                 savereg);
19878 
19879         return rcal_reg & 0x1f;
19880     }
19881     return rcal_reg & 0x3e;
19882 }
19883 
19884 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19885 {
19886     u16 rccal_valid;
19887     int i;
19888     bool chip43226_6362A0;
19889 
19890     chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19891                 || (pi->pubpi.radiorev == 4)
19892                 || (pi->pubpi.radiorev == 6));
19893 
19894     rccal_valid = 0;
19895     if (chip43226_6362A0) {
19896         write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19897         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19898     } else {
19899         write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19900 
19901         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19902     }
19903     write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19904     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19905 
19906     for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19907         rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19908         if (rccal_valid & 0x2)
19909             break;
19910 
19911         udelay(500);
19912     }
19913 
19914     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19915 
19916     rccal_valid = 0;
19917     if (chip43226_6362A0) {
19918         write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19919         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19920     } else {
19921         write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19922 
19923         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19924     }
19925     write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19926     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19927 
19928     for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19929         rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19930         if (rccal_valid & 0x2)
19931             break;
19932 
19933         udelay(500);
19934     }
19935 
19936     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19937 
19938     rccal_valid = 0;
19939     if (chip43226_6362A0) {
19940         write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19941 
19942         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19943         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19944     } else {
19945         write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19946         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19947         write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19948     }
19949     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19950 
19951     for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19952         rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19953         if (rccal_valid & 0x2)
19954             break;
19955 
19956         udelay(500);
19957     }
19958 
19959     if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19960         return 0;
19961 
19962     write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19963 
19964     return rccal_valid;
19965 }
19966 
19967 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19968 {
19969 
19970     mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19971 
19972     mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19973     mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19974     mdelay(2);
19975     mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19976     mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19977 
19978     if (pi->phy_init_por) {
19979         wlc_phy_radio205x_rcal(pi);
19980         wlc_phy_radio2057_rccal(pi);
19981     }
19982 
19983     mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19984 }
19985 
19986 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19987 {
19988     const struct radio_regs *regs_SYN_2056_ptr = NULL;
19989     const struct radio_regs *regs_TX_2056_ptr = NULL;
19990     const struct radio_regs *regs_RX_2056_ptr = NULL;
19991 
19992     if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19993         regs_SYN_2056_ptr = regs_SYN_2056;
19994         regs_TX_2056_ptr = regs_TX_2056;
19995         regs_RX_2056_ptr = regs_RX_2056;
19996     } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
19997         regs_SYN_2056_ptr = regs_SYN_2056_A1;
19998         regs_TX_2056_ptr = regs_TX_2056_A1;
19999         regs_RX_2056_ptr = regs_RX_2056_A1;
20000     } else {
20001         switch (pi->pubpi.radiorev) {
20002         case 5:
20003             regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20004             regs_TX_2056_ptr = regs_TX_2056_rev5;
20005             regs_RX_2056_ptr = regs_RX_2056_rev5;
20006             break;
20007 
20008         case 6:
20009             regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20010             regs_TX_2056_ptr = regs_TX_2056_rev6;
20011             regs_RX_2056_ptr = regs_RX_2056_rev6;
20012             break;
20013 
20014         case 7:
20015         case 9:
20016             regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20017             regs_TX_2056_ptr = regs_TX_2056_rev7;
20018             regs_RX_2056_ptr = regs_RX_2056_rev7;
20019             break;
20020 
20021         case 8:
20022             regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20023             regs_TX_2056_ptr = regs_TX_2056_rev8;
20024             regs_RX_2056_ptr = regs_RX_2056_rev8;
20025             break;
20026 
20027         case 11:
20028             regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20029             regs_TX_2056_ptr = regs_TX_2056_rev11;
20030             regs_RX_2056_ptr = regs_RX_2056_rev11;
20031             break;
20032 
20033         default:
20034             return;
20035         }
20036     }
20037 
20038     wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20039 
20040     wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20041 
20042     wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20043 
20044     wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20045 
20046     wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20047 }
20048 
20049 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20050 {
20051     mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20052 
20053     mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20054     mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20055     udelay(1000);
20056     mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20057 
20058     if ((pi->sh->boardflags2 & BFL2_LEGACY)
20059         || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20060         mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20061     else
20062         mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20063 
20064     mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20065 
20066     if (pi->phy_init_por)
20067         wlc_phy_radio205x_rcal(pi);
20068 }
20069 
20070 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20071 {
20072 
20073     and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20074     or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20075 
20076     or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20077 }
20078 
20079 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20080 {
20081     wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20082 }
20083 
20084 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20085 {
20086 
20087     and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20088               ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20089 
20090     if (((pi->sh->sromrev >= 4)
20091          && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20092         || ((pi->sh->sromrev < 4))) {
20093         and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20094         and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20095     }
20096 
20097     mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20098     write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20099 
20100     and_radio_reg(pi, RADIO_2055_CAL_MISC,
20101               ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20102 
20103     or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20104 
20105     or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20106 
20107     udelay(1000);
20108 
20109     or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20110 
20111     SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20112            RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20113 
20114     if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20115           RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20116          "HW error: radio calibration1\n"))
20117         return;
20118 
20119     and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20120               ~(RADIO_2055_CAL_LPO_ENABLE));
20121 
20122     wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20123 
20124     write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20125     write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20126 
20127     write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20128     write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20129 
20130     mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20131               RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20132     mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20133               RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20134     if (pi->nphy_gain_boost) {
20135         and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20136                   ~(RADIO_2055_GAINBST_DISABLE));
20137         and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20138                   ~(RADIO_2055_GAINBST_DISABLE));
20139     } else {
20140         or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20141                  RADIO_2055_GAINBST_DISABLE);
20142         or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20143                  RADIO_2055_GAINBST_DISABLE);
20144     }
20145 
20146     udelay(2);
20147 }
20148 
20149 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20150 {
20151     if (on) {
20152         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20153             if (!pi->radio_is_on) {
20154                 wlc_phy_radio_preinit_205x(pi);
20155                 wlc_phy_radio_init_2057(pi);
20156                 wlc_phy_radio_postinit_2057(pi);
20157             }
20158 
20159             wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20160                          pi->radio_chanspec);
20161         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20162             wlc_phy_radio_preinit_205x(pi);
20163             wlc_phy_radio_init_2056(pi);
20164             wlc_phy_radio_postinit_2056(pi);
20165 
20166             wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20167                          pi->radio_chanspec);
20168         } else {
20169             wlc_phy_radio_preinit_2055(pi);
20170             wlc_phy_radio_init_2055(pi);
20171             wlc_phy_radio_postinit_2055(pi);
20172         }
20173 
20174         pi->radio_is_on = true;
20175 
20176     } else {
20177 
20178         if (NREV_GE(pi->pubpi.phy_rev, 3)
20179             && NREV_LT(pi->pubpi.phy_rev, 7)) {
20180             and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20181             mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20182 
20183             write_radio_reg(pi,
20184                     RADIO_2056_TX_PADA_BOOST_TUNE |
20185                     RADIO_2056_TX0, 0);
20186             write_radio_reg(pi,
20187                     RADIO_2056_TX_PADG_BOOST_TUNE |
20188                     RADIO_2056_TX0, 0);
20189             write_radio_reg(pi,
20190                     RADIO_2056_TX_PGAA_BOOST_TUNE |
20191                     RADIO_2056_TX0, 0);
20192             write_radio_reg(pi,
20193                     RADIO_2056_TX_PGAG_BOOST_TUNE |
20194                     RADIO_2056_TX0, 0);
20195             mod_radio_reg(pi,
20196                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20197                       RADIO_2056_TX0, 0xf0, 0);
20198             write_radio_reg(pi,
20199                     RADIO_2056_TX_MIXG_BOOST_TUNE |
20200                     RADIO_2056_TX0, 0);
20201 
20202             write_radio_reg(pi,
20203                     RADIO_2056_TX_PADA_BOOST_TUNE |
20204                     RADIO_2056_TX1, 0);
20205             write_radio_reg(pi,
20206                     RADIO_2056_TX_PADG_BOOST_TUNE |
20207                     RADIO_2056_TX1, 0);
20208             write_radio_reg(pi,
20209                     RADIO_2056_TX_PGAA_BOOST_TUNE |
20210                     RADIO_2056_TX1, 0);
20211             write_radio_reg(pi,
20212                     RADIO_2056_TX_PGAG_BOOST_TUNE |
20213                     RADIO_2056_TX1, 0);
20214             mod_radio_reg(pi,
20215                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20216                       RADIO_2056_TX1, 0xf0, 0);
20217             write_radio_reg(pi,
20218                     RADIO_2056_TX_MIXG_BOOST_TUNE |
20219                     RADIO_2056_TX1, 0);
20220 
20221             pi->radio_is_on = false;
20222         }
20223 
20224         if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20225             and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20226             pi->radio_is_on = false;
20227         }
20228 
20229     }
20230 }
20231 
20232 static bool
20233 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20234                const struct chan_info_nphy_radio2057 **t0,
20235                const struct chan_info_nphy_radio205x **t1,
20236                const struct chan_info_nphy_radio2057_rev5 **t2,
20237                const struct chan_info_nphy_2055 **t3)
20238 {
20239     uint i;
20240     const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20241     const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20242     const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20243     u32 tbl_len = 0;
20244 
20245     int freq = 0;
20246 
20247     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20248 
20249         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20250 
20251             chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20252             tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20253 
20254         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20255                || NREV_IS(pi->pubpi.phy_rev, 9)) {
20256             switch (pi->pubpi.radiorev) {
20257 
20258             case 5:
20259 
20260                 if (pi->pubpi.radiover == 0x0) {
20261 
20262                     chan_info_tbl_p_2 =
20263                         chan_info_nphyrev8_2057_rev5;
20264                     tbl_len = ARRAY_SIZE(
20265                           chan_info_nphyrev8_2057_rev5);
20266 
20267                 } else if (pi->pubpi.radiover == 0x1) {
20268 
20269                     chan_info_tbl_p_2 =
20270                         chan_info_nphyrev9_2057_rev5v1;
20271                     tbl_len = ARRAY_SIZE(
20272                         chan_info_nphyrev9_2057_rev5v1);
20273 
20274                 }
20275                 break;
20276 
20277             case 7:
20278                 chan_info_tbl_p_0 =
20279                     chan_info_nphyrev8_2057_rev7;
20280                 tbl_len = ARRAY_SIZE(
20281                           chan_info_nphyrev8_2057_rev7);
20282                 break;
20283 
20284             case 8:
20285                 chan_info_tbl_p_0 =
20286                     chan_info_nphyrev8_2057_rev8;
20287                 tbl_len = ARRAY_SIZE(
20288                           chan_info_nphyrev8_2057_rev8);
20289                 break;
20290 
20291             default:
20292                 break;
20293             }
20294         } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20295 
20296             chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20297             tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20298         } else {
20299             goto fail;
20300         }
20301 
20302         for (i = 0; i < tbl_len; i++) {
20303             if (pi->pubpi.radiorev == 5) {
20304 
20305                 if (chan_info_tbl_p_2[i].chan == channel)
20306                     break;
20307             } else {
20308 
20309                 if (chan_info_tbl_p_0[i].chan == channel)
20310                     break;
20311             }
20312         }
20313 
20314         if (i >= tbl_len)
20315             goto fail;
20316 
20317         if (pi->pubpi.radiorev == 5) {
20318             *t2 = &chan_info_tbl_p_2[i];
20319             freq = chan_info_tbl_p_2[i].freq;
20320         } else {
20321             *t0 = &chan_info_tbl_p_0[i];
20322             freq = chan_info_tbl_p_0[i].freq;
20323         }
20324 
20325     } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20326         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20327             chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20328             tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20329         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20330             chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20331             tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20332         } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20333                || NREV_IS(pi->pubpi.phy_rev, 6)) {
20334             switch (pi->pubpi.radiorev) {
20335             case 5:
20336                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20337                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20338                 break;
20339             case 6:
20340                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20341                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20342                 break;
20343             case 7:
20344             case 9:
20345                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20346                 tbl_len =
20347                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20348                 break;
20349             case 8:
20350                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20351                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20352                 break;
20353             case 11:
20354                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20355                 tbl_len = ARRAY_SIZE(
20356                             chan_info_nphyrev6_2056v11);
20357                 break;
20358             default:
20359                 break;
20360             }
20361         }
20362 
20363         for (i = 0; i < tbl_len; i++) {
20364             if (chan_info_tbl_p_1[i].chan == channel)
20365                 break;
20366         }
20367 
20368         if (i >= tbl_len)
20369             goto fail;
20370 
20371         *t1 = &chan_info_tbl_p_1[i];
20372         freq = chan_info_tbl_p_1[i].freq;
20373 
20374     } else {
20375         for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20376             if (chan_info_nphy_2055[i].chan == channel)
20377                 break;
20378 
20379         if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20380             goto fail;
20381 
20382         *t3 = &chan_info_nphy_2055[i];
20383         freq = chan_info_nphy_2055[i].freq;
20384     }
20385 
20386     *f = freq;
20387     return true;
20388 
20389 fail:
20390     *f = WL_CHAN_FREQ_RANGE_2G;
20391     return false;
20392 }
20393 
20394 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20395 {
20396     int freq;
20397     const struct chan_info_nphy_radio2057 *t0 = NULL;
20398     const struct chan_info_nphy_radio205x *t1 = NULL;
20399     const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20400     const struct chan_info_nphy_2055 *t3 = NULL;
20401 
20402     if (channel == 0)
20403         channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20404 
20405     wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20406 
20407     if (CHSPEC_IS2G(pi->radio_chanspec))
20408         return WL_CHAN_FREQ_RANGE_2G;
20409 
20410     if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20411         return WL_CHAN_FREQ_RANGE_5GL;
20412     else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20413         return WL_CHAN_FREQ_RANGE_5GM;
20414     else
20415         return WL_CHAN_FREQ_RANGE_5GH;
20416 }
20417 
20418 static void
20419 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20420                  const struct chan_info_nphy_2055 *ci)
20421 {
20422 
20423     write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20424     write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20425     write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20426     write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20427 
20428     BRCMS_PHY_WAR_PR51571(pi);
20429 
20430     write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20431     write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20432     write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20433     write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20434 
20435     BRCMS_PHY_WAR_PR51571(pi);
20436 
20437     write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20438     write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20439     write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20440     write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20441 
20442     BRCMS_PHY_WAR_PR51571(pi);
20443 
20444     write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20445             ci->RF_core1_lgbuf_a_tune);
20446     write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20447             ci->RF_core1_lgbuf_g_tune);
20448     write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20449     write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20450             ci->RF_core1_tx_pga_pad_tn);
20451 
20452     BRCMS_PHY_WAR_PR51571(pi);
20453 
20454     write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20455             ci->RF_core1_tx_mx_bgtrim);
20456     write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20457             ci->RF_core2_lgbuf_a_tune);
20458     write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20459             ci->RF_core2_lgbuf_g_tune);
20460     write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20461 
20462     BRCMS_PHY_WAR_PR51571(pi);
20463 
20464     write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20465             ci->RF_core2_tx_pga_pad_tn);
20466     write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20467             ci->RF_core2_tx_mx_bgtrim);
20468 
20469     udelay(50);
20470 
20471     write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20472     write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20473 
20474     BRCMS_PHY_WAR_PR51571(pi);
20475 
20476     write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20477 
20478     udelay(300);
20479 }
20480 
20481 static void
20482 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20483                  const struct chan_info_nphy_radio205x *ci)
20484 {
20485     const struct radio_regs *regs_SYN_2056_ptr = NULL;
20486 
20487     write_radio_reg(pi,
20488             RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20489             ci->RF_SYN_pll_vcocal1);
20490     write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20491             ci->RF_SYN_pll_vcocal2);
20492     write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20493             ci->RF_SYN_pll_refdiv);
20494     write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20495             ci->RF_SYN_pll_mmd2);
20496     write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20497             ci->RF_SYN_pll_mmd1);
20498     write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20499             ci->RF_SYN_pll_loopfilter1);
20500     write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20501             ci->RF_SYN_pll_loopfilter2);
20502     write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20503             ci->RF_SYN_pll_loopfilter3);
20504     write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20505             ci->RF_SYN_pll_loopfilter4);
20506     write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20507             ci->RF_SYN_pll_loopfilter5);
20508     write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20509             ci->RF_SYN_reserved_addr27);
20510     write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20511             ci->RF_SYN_reserved_addr28);
20512     write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20513             ci->RF_SYN_reserved_addr29);
20514     write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20515             ci->RF_SYN_logen_VCOBUF1);
20516     write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20517             ci->RF_SYN_logen_MIXER2);
20518     write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20519             ci->RF_SYN_logen_BUF3);
20520     write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20521             ci->RF_SYN_logen_BUF4);
20522 
20523     write_radio_reg(pi,
20524             RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20525             ci->RF_RX0_lnaa_tune);
20526     write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20527             ci->RF_RX0_lnag_tune);
20528     write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20529             ci->RF_TX0_intpaa_boost_tune);
20530     write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20531             ci->RF_TX0_intpag_boost_tune);
20532     write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20533             ci->RF_TX0_pada_boost_tune);
20534     write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20535             ci->RF_TX0_padg_boost_tune);
20536     write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20537             ci->RF_TX0_pgaa_boost_tune);
20538     write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20539             ci->RF_TX0_pgag_boost_tune);
20540     write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20541             ci->RF_TX0_mixa_boost_tune);
20542     write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20543             ci->RF_TX0_mixg_boost_tune);
20544 
20545     write_radio_reg(pi,
20546             RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20547             ci->RF_RX1_lnaa_tune);
20548     write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20549             ci->RF_RX1_lnag_tune);
20550     write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20551             ci->RF_TX1_intpaa_boost_tune);
20552     write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20553             ci->RF_TX1_intpag_boost_tune);
20554     write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20555             ci->RF_TX1_pada_boost_tune);
20556     write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20557             ci->RF_TX1_padg_boost_tune);
20558     write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20559             ci->RF_TX1_pgaa_boost_tune);
20560     write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20561             ci->RF_TX1_pgag_boost_tune);
20562     write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20563             ci->RF_TX1_mixa_boost_tune);
20564     write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20565             ci->RF_TX1_mixg_boost_tune);
20566 
20567     if (NREV_IS(pi->pubpi.phy_rev, 3))
20568         regs_SYN_2056_ptr = regs_SYN_2056;
20569     else if (NREV_IS(pi->pubpi.phy_rev, 4))
20570         regs_SYN_2056_ptr = regs_SYN_2056_A1;
20571     else {
20572         switch (pi->pubpi.radiorev) {
20573         case 5:
20574             regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20575             break;
20576         case 6:
20577             regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20578             break;
20579         case 7:
20580         case 9:
20581             regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20582             break;
20583         case 8:
20584             regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20585             break;
20586         case 11:
20587             regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20588             break;
20589         }
20590     }
20591     if (CHSPEC_IS2G(pi->radio_chanspec))
20592         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20593                 RADIO_2056_SYN,
20594                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20595     else
20596         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20597                 RADIO_2056_SYN,
20598                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20599 
20600     if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20601         if (CHSPEC_IS2G(pi->radio_chanspec)) {
20602             write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20603                     RADIO_2056_SYN, 0x1f);
20604             write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20605                     RADIO_2056_SYN, 0x1f);
20606 
20607             if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20608                 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20609                 write_radio_reg(pi,
20610                         RADIO_2056_SYN_PLL_LOOPFILTER4 |
20611                         RADIO_2056_SYN, 0x14);
20612                 write_radio_reg(pi,
20613                         RADIO_2056_SYN_PLL_CP2 |
20614                         RADIO_2056_SYN, 0x00);
20615             } else {
20616                 write_radio_reg(pi,
20617                         RADIO_2056_SYN_PLL_LOOPFILTER4 |
20618                         RADIO_2056_SYN, 0xb);
20619                 write_radio_reg(pi,
20620                         RADIO_2056_SYN_PLL_CP2 |
20621                         RADIO_2056_SYN, 0x14);
20622             }
20623         }
20624     }
20625 
20626     if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20627         (CHSPEC_IS2G(pi->radio_chanspec))) {
20628         write_radio_reg(pi,
20629                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20630                 0x1f);
20631         write_radio_reg(pi,
20632                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20633                 0x1f);
20634         write_radio_reg(pi,
20635                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20636                 0xb);
20637         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20638                 0x20);
20639     }
20640 
20641     if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20642         if (CHSPEC_IS5G(pi->radio_chanspec)) {
20643             write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20644                     RADIO_2056_SYN, 0x1f);
20645             write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20646                     RADIO_2056_SYN, 0x1f);
20647             write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20648                     RADIO_2056_SYN, 0x5);
20649             write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20650                     RADIO_2056_SYN, 0xc);
20651         }
20652     }
20653 
20654     if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20655         u16 pag_boost_tune;
20656         u16 padg_boost_tune;
20657         u16 pgag_boost_tune;
20658         u16 mixg_boost_tune;
20659         u16 bias, cascbias;
20660         uint core;
20661 
20662         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20663 
20664             if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20665 
20666                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20667                          PADG_IDAC, 0xcc);
20668 
20669                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20670                     (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20671                     bias = 0x40;
20672                     cascbias = 0x45;
20673                     pag_boost_tune = 0x5;
20674                     pgag_boost_tune = 0x33;
20675                     padg_boost_tune = 0x77;
20676                     mixg_boost_tune = 0x55;
20677                 } else {
20678                     bias = 0x25;
20679                     cascbias = 0x20;
20680 
20681                     if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20682                          pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20683                         pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20684                         bias = 0x2a;
20685                         cascbias = 0x38;
20686                     }
20687 
20688                     pag_boost_tune = 0x4;
20689                     pgag_boost_tune = 0x03;
20690                     padg_boost_tune = 0x77;
20691                     mixg_boost_tune = 0x65;
20692                 }
20693 
20694                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20695                          INTPAG_IMAIN_STAT, bias);
20696                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20697                          INTPAG_IAUX_STAT, bias);
20698                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20699                          INTPAG_CASCBIAS, cascbias);
20700 
20701                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20702                          INTPAG_BOOST_TUNE,
20703                          pag_boost_tune);
20704                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20705                          PGAG_BOOST_TUNE,
20706                          pgag_boost_tune);
20707                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20708                          PADG_BOOST_TUNE,
20709                          padg_boost_tune);
20710                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20711                          MIXG_BOOST_TUNE,
20712                          mixg_boost_tune);
20713             } else {
20714 
20715                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20716                        0x40 : 0x20;
20717 
20718                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20719                          INTPAG_IMAIN_STAT, bias);
20720                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20721                          INTPAG_IAUX_STAT, bias);
20722                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723                          INTPAG_CASCBIAS, 0x30);
20724             }
20725             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20726                      0xee);
20727         }
20728     }
20729 
20730     if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20731         && CHSPEC_IS5G(pi->radio_chanspec)) {
20732         u16 paa_boost_tune;
20733         u16 pada_boost_tune;
20734         u16 pgaa_boost_tune;
20735         u16 mixa_boost_tune;
20736         u16 freq, pabias, cascbias;
20737         uint core;
20738 
20739         freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20740 
20741         if (freq < 5150) {
20742 
20743             paa_boost_tune = 0xa;
20744             pada_boost_tune = 0x77;
20745             pgaa_boost_tune = 0xf;
20746             mixa_boost_tune = 0xf;
20747         } else if (freq < 5340) {
20748 
20749             paa_boost_tune = 0x8;
20750             pada_boost_tune = 0x77;
20751             pgaa_boost_tune = 0xfb;
20752             mixa_boost_tune = 0xf;
20753         } else if (freq < 5650) {
20754 
20755             paa_boost_tune = 0x0;
20756             pada_boost_tune = 0x77;
20757             pgaa_boost_tune = 0xb;
20758             mixa_boost_tune = 0xf;
20759         } else {
20760 
20761             paa_boost_tune = 0x0;
20762             pada_boost_tune = 0x77;
20763             if (freq != 5825)
20764                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20765             else
20766                 pgaa_boost_tune = 6;
20767 
20768             mixa_boost_tune = 0xf;
20769         }
20770 
20771         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20772             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20773                      INTPAA_BOOST_TUNE, paa_boost_tune);
20774             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20775                      PADA_BOOST_TUNE, pada_boost_tune);
20776             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777                      PGAA_BOOST_TUNE, pgaa_boost_tune);
20778             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779                      MIXA_BOOST_TUNE, mixa_boost_tune);
20780 
20781             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20782                      TXSPARE1, 0x30);
20783             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20784                      PA_SPARE2, 0xee);
20785 
20786             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20787                      PADA_CASCBIAS, 0x3);
20788 
20789             cascbias = 0x30;
20790 
20791             if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20792                  pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20793                 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20794                 cascbias = 0x35;
20795 
20796             pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20797 
20798             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799                      INTPAA_IAUX_STAT, pabias);
20800             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20801                      INTPAA_IMAIN_STAT, pabias);
20802             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20803                      INTPAA_CASCBIAS, cascbias);
20804         }
20805     }
20806 
20807     udelay(50);
20808 
20809     wlc_phy_radio205x_vcocal_nphy(pi);
20810 }
20811 
20812 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20813 {
20814     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20815         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20816         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20817         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20818                   (1 << 2));
20819         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20820     } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20821         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20822         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20823         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20824         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20825         write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20826     }
20827 
20828     udelay(300);
20829 }
20830 
20831 static void
20832 wlc_phy_chanspec_radio2057_setup(
20833     struct brcms_phy *pi,
20834     const struct chan_info_nphy_radio2057 *ci,
20835     const struct chan_info_nphy_radio2057_rev5 *
20836     ci2)
20837 {
20838     int coreNum;
20839     u16 txmix2g_tune_boost_pu = 0;
20840     u16 pad2g_tune_pus = 0;
20841 
20842     if (pi->pubpi.radiorev == 5) {
20843 
20844         write_radio_reg(pi,
20845                 RADIO_2057_VCOCAL_COUNTVAL0,
20846                 ci2->RF_vcocal_countval0);
20847         write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20848                 ci2->RF_vcocal_countval1);
20849         write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20850                 ci2->RF_rfpll_refmaster_sparextalsize);
20851         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20852                 ci2->RF_rfpll_loopfilter_r1);
20853         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20854                 ci2->RF_rfpll_loopfilter_c2);
20855         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20856                 ci2->RF_rfpll_loopfilter_c1);
20857         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20858                 ci2->RF_cp_kpd_idac);
20859         write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20860         write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20861         write_radio_reg(pi,
20862                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20863         write_radio_reg(pi,
20864                 RADIO_2057_LOGEN_MX2G_TUNE,
20865                 ci2->RF_logen_mx2g_tune);
20866         write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20867                 ci2->RF_logen_indbuf2g_tune);
20868 
20869         write_radio_reg(pi,
20870                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20871                 ci2->RF_txmix2g_tune_boost_pu_core0);
20872         write_radio_reg(pi,
20873                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20874                 ci2->RF_pad2g_tune_pus_core0);
20875         write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20876                 ci2->RF_lna2g_tune_core0);
20877 
20878         write_radio_reg(pi,
20879                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20880                 ci2->RF_txmix2g_tune_boost_pu_core1);
20881         write_radio_reg(pi,
20882                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20883                 ci2->RF_pad2g_tune_pus_core1);
20884         write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20885                 ci2->RF_lna2g_tune_core1);
20886 
20887     } else {
20888 
20889         write_radio_reg(pi,
20890                 RADIO_2057_VCOCAL_COUNTVAL0,
20891                 ci->RF_vcocal_countval0);
20892         write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20893                 ci->RF_vcocal_countval1);
20894         write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20895                 ci->RF_rfpll_refmaster_sparextalsize);
20896         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20897                 ci->RF_rfpll_loopfilter_r1);
20898         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20899                 ci->RF_rfpll_loopfilter_c2);
20900         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20901                 ci->RF_rfpll_loopfilter_c1);
20902         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20903         write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20904         write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20905         write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20906         write_radio_reg(pi,
20907                 RADIO_2057_LOGEN_MX2G_TUNE,
20908                 ci->RF_logen_mx2g_tune);
20909         write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20910                 ci->RF_logen_mx5g_tune);
20911         write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20912                 ci->RF_logen_indbuf2g_tune);
20913         write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20914                 ci->RF_logen_indbuf5g_tune);
20915 
20916         write_radio_reg(pi,
20917                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20918                 ci->RF_txmix2g_tune_boost_pu_core0);
20919         write_radio_reg(pi,
20920                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20921                 ci->RF_pad2g_tune_pus_core0);
20922         write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20923                 ci->RF_pga_boost_tune_core0);
20924         write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20925                 ci->RF_txmix5g_boost_tune_core0);
20926         write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20927                 ci->RF_pad5g_tune_misc_pus_core0);
20928         write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20929                 ci->RF_lna2g_tune_core0);
20930         write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20931                 ci->RF_lna5g_tune_core0);
20932 
20933         write_radio_reg(pi,
20934                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20935                 ci->RF_txmix2g_tune_boost_pu_core1);
20936         write_radio_reg(pi,
20937                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20938                 ci->RF_pad2g_tune_pus_core1);
20939         write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20940                 ci->RF_pga_boost_tune_core1);
20941         write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20942                 ci->RF_txmix5g_boost_tune_core1);
20943         write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20944                 ci->RF_pad5g_tune_misc_pus_core1);
20945         write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20946                 ci->RF_lna2g_tune_core1);
20947         write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20948                 ci->RF_lna5g_tune_core1);
20949     }
20950 
20951     if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20952 
20953         if (CHSPEC_IS2G(pi->radio_chanspec)) {
20954             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20955                     0x3f);
20956             write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20957             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20958                     0x8);
20959             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20960                     0x8);
20961         } else {
20962             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20963                     0x1f);
20964             write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20965             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20966                     0x8);
20967             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20968                     0x8);
20969         }
20970     } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20971            (pi->pubpi.radiorev == 8)) {
20972 
20973         if (CHSPEC_IS2G(pi->radio_chanspec)) {
20974             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20975                     0x1b);
20976             write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20977             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20978                     0xa);
20979             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20980                     0xa);
20981         } else {
20982             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20983                     0x1f);
20984             write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20985             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20986                     0x8);
20987             write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20988                     0x8);
20989         }
20990 
20991     }
20992 
20993     if (CHSPEC_IS2G(pi->radio_chanspec)) {
20994         if (PHY_IPA(pi)) {
20995             if (pi->pubpi.radiorev == 3)
20996                 txmix2g_tune_boost_pu = 0x6b;
20997 
20998             if (pi->pubpi.radiorev == 5)
20999                 pad2g_tune_pus = 0x73;
21000 
21001         } else {
21002             if (pi->pubpi.radiorev != 5) {
21003                 pad2g_tune_pus = 0x3;
21004 
21005                 txmix2g_tune_boost_pu = 0x61;
21006             }
21007         }
21008 
21009         for (coreNum = 0; coreNum <= 1; coreNum++) {
21010 
21011             if (txmix2g_tune_boost_pu != 0)
21012                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21013                          TXMIX2G_TUNE_BOOST_PU,
21014                          txmix2g_tune_boost_pu);
21015 
21016             if (pad2g_tune_pus != 0)
21017                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21018                          PAD2G_TUNE_PUS,
21019                          pad2g_tune_pus);
21020         }
21021     }
21022 
21023     udelay(50);
21024 
21025     wlc_phy_radio205x_vcocal_nphy(pi);
21026 }
21027 
21028 static void
21029 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21030                 const struct nphy_sfo_cfg *ci)
21031 {
21032     u16 val;
21033 
21034     val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21035     if (CHSPEC_IS5G(chanspec) && !val) {
21036 
21037         val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21038         bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21039               (val | MAC_PHY_FORCE_CLK));
21040 
21041         or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21042                (BBCFG_RESETCCA | BBCFG_RESETRX));
21043 
21044         bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21045 
21046         or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21047     } else if (!CHSPEC_IS5G(chanspec) && val) {
21048 
21049         and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21050 
21051         val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21052         bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21053               (val | MAC_PHY_FORCE_CLK));
21054 
21055         and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21056                 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21057 
21058         bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21059     }
21060 
21061     write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21062     write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21063     write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21064 
21065     write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21066     write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21067     write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21068 
21069     if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21070         wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21071 
21072         or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21073     } else {
21074         wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21075                     NPHY_ClassifierCtrl_ofdm_en);
21076 
21077         if (CHSPEC_IS2G(chanspec))
21078             and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21079     }
21080 
21081     if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21082         wlc_phy_txpwr_fixpower_nphy(pi);
21083 
21084     if (NREV_LT(pi->pubpi.phy_rev, 3))
21085         wlc_phy_adjust_lnagaintbl_nphy(pi);
21086 
21087     wlc_phy_txlpfbw_nphy(pi);
21088 
21089     if (NREV_GE(pi->pubpi.phy_rev, 3)
21090         && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21091         u8 spuravoid = 0;
21092 
21093         val = CHSPEC_CHANNEL(chanspec);
21094         if (!CHSPEC_IS40(pi->radio_chanspec)) {
21095             if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21096                 if ((val == 13) || (val == 14) || (val == 153))
21097                     spuravoid = 1;
21098             } else if (((val >= 5) && (val <= 8)) || (val == 13)
21099                    || (val == 14)) {
21100                 spuravoid = 1;
21101             }
21102         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21103             if (val == 54)
21104                 spuravoid = 1;
21105         } else if (pi->nphy_aband_spurwar_en &&
21106             ((val == 38) || (val == 102) || (val == 118))) {
21107             if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21108                 && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21109                 spuravoid = 0;
21110             } else {
21111                 spuravoid = 1;
21112             }
21113         }
21114 
21115         if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21116             spuravoid = 1;
21117 
21118         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21119             (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21120             bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21121                              spuravoid);
21122         } else {
21123             wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21124             bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21125                              spuravoid);
21126             wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21127         }
21128 
21129         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21130             (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21131             if (spuravoid == 1) {
21132                 bcma_write16(pi->d11core,
21133                          D11REGOFFS(tsf_clk_frac_l),
21134                          0x5341);
21135                 bcma_write16(pi->d11core,
21136                          D11REGOFFS(tsf_clk_frac_h), 0x8);
21137             } else {
21138                 bcma_write16(pi->d11core,
21139                          D11REGOFFS(tsf_clk_frac_l),
21140                          0x8889);
21141                 bcma_write16(pi->d11core,
21142                          D11REGOFFS(tsf_clk_frac_h), 0x8);
21143             }
21144         }
21145 
21146         if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21147               (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21148             wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21149 
21150         mod_phy_reg(pi, 0x01, (0x1 << 15),
21151                 ((spuravoid > 0) ? (0x1 << 15) : 0));
21152 
21153         wlc_phy_resetcca_nphy(pi);
21154 
21155         pi->phy_isspuravoid = (spuravoid > 0);
21156     }
21157 
21158     if (NREV_LT(pi->pubpi.phy_rev, 7))
21159         write_phy_reg(pi, 0x17e, 0x3830);
21160 
21161     wlc_phy_spurwar_nphy(pi);
21162 }
21163 
21164 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21165 {
21166     int freq;
21167     const struct chan_info_nphy_radio2057 *t0 = NULL;
21168     const struct chan_info_nphy_radio205x *t1 = NULL;
21169     const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21170     const struct chan_info_nphy_2055 *t3 = NULL;
21171 
21172     if (!wlc_phy_chan2freq_nphy
21173             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21174         return;
21175 
21176     wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21177 
21178     if (CHSPEC_BW(chanspec) != pi->bw)
21179         wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21180 
21181     if (CHSPEC_IS40(chanspec)) {
21182         if (CHSPEC_SB_UPPER(chanspec)) {
21183             or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21184             if (NREV_GE(pi->pubpi.phy_rev, 7))
21185                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21186         } else {
21187             and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21188             if (NREV_GE(pi->pubpi.phy_rev, 7))
21189                 and_phy_reg(pi, 0x310,
21190                         (~PRIM_SEL_UP20 & 0xffff));
21191         }
21192     }
21193 
21194     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21195         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21196 
21197             if ((pi->pubpi.radiorev <= 4)
21198                 || (pi->pubpi.radiorev == 6)) {
21199                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21200                           0x2,
21201                           (CHSPEC_IS5G(chanspec) ? (1 << 1)
21202                            : 0));
21203                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21204                           0x2,
21205                           (CHSPEC_IS5G(chanspec) ? (1 << 1)
21206                            : 0));
21207             }
21208 
21209             wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21210             wlc_phy_chanspec_nphy_setup(pi, chanspec,
21211                 (pi->pubpi.radiorev == 5) ?
21212                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21213                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21214 
21215         } else {
21216 
21217             mod_radio_reg(pi,
21218                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21219                       0x4,
21220                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21221             wlc_phy_chanspec_radio2056_setup(pi, t1);
21222 
21223             wlc_phy_chanspec_nphy_setup(pi, chanspec,
21224                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21225         }
21226 
21227     } else {
21228 
21229         mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21230                   (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21231                    : (0x05 << 4)));
21232 
21233         wlc_phy_chanspec_radio2055_setup(pi, t3);
21234         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21235                         (const struct nphy_sfo_cfg *)
21236                          &(t3->PHY_BW1a));
21237     }
21238 
21239 }
21240 
21241 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21242 {
21243     struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21244     u16 mask = 0xfc00;
21245     u32 mc = 0;
21246 
21247     if (NREV_GE(pi->pubpi.phy_rev, 7))
21248         return;
21249 
21250     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21251         u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21252 
21253         if (!lut_init)
21254             return;
21255 
21256         if (pi->srom_fem2g.antswctrllut == 0) {
21257             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21258                          1, 0x02, 16, &v0);
21259             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21260                          1, 0x03, 16, &v1);
21261             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21262                          1, 0x08, 16, &v2);
21263             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264                          1, 0x0C, 16, &v3);
21265         }
21266 
21267         if (pi->srom_fem5g.antswctrllut == 0) {
21268             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21269                          1, 0x12, 16, &v0);
21270             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21271                          1, 0x13, 16, &v1);
21272             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273                          1, 0x18, 16, &v2);
21274             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275                          1, 0x1C, 16, &v3);
21276         }
21277     } else {
21278 
21279         write_phy_reg(pi, 0xc8, 0x0);
21280         write_phy_reg(pi, 0xc9, 0x0);
21281 
21282         bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21283 
21284         mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21285         mc &= ~MCTL_GPOUT_SEL_MASK;
21286         bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21287 
21288         bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21289 
21290         bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21291 
21292         if (lut_init) {
21293             write_phy_reg(pi, 0xf8, 0x02d8);
21294             write_phy_reg(pi, 0xf9, 0x0301);
21295             write_phy_reg(pi, 0xfa, 0x02d8);
21296             write_phy_reg(pi, 0xfb, 0x0301);
21297         }
21298     }
21299 }
21300 
21301 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21302 {
21303     u16 curr_ctl, new_ctl;
21304     bool suspended = false;
21305 
21306     if (D11REV_IS(pi->sh->corerev, 16)) {
21307         suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21308                  MCTL_EN_MAC) ? false : true;
21309         if (!suspended)
21310             wlapi_suspend_mac_and_wait(pi->sh->physhim);
21311     }
21312 
21313     curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21314 
21315     new_ctl = (curr_ctl & (~mask)) | (val & mask);
21316 
21317     mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21318 
21319     if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21320         wlapi_enable_mac(pi->sh->physhim);
21321 
21322     return new_ctl;
21323 }
21324 
21325 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21326 {
21327     u16 trigger_mask, status_mask;
21328     u16 orig_RfseqCoreActv;
21329 
21330     switch (cmd) {
21331     case NPHY_RFSEQ_RX2TX:
21332         trigger_mask = NPHY_RfseqTrigger_rx2tx;
21333         status_mask = NPHY_RfseqStatus_rx2tx;
21334         break;
21335     case NPHY_RFSEQ_TX2RX:
21336         trigger_mask = NPHY_RfseqTrigger_tx2rx;
21337         status_mask = NPHY_RfseqStatus_tx2rx;
21338         break;
21339     case NPHY_RFSEQ_RESET2RX:
21340         trigger_mask = NPHY_RfseqTrigger_reset2rx;
21341         status_mask = NPHY_RfseqStatus_reset2rx;
21342         break;
21343     case NPHY_RFSEQ_UPDATEGAINH:
21344         trigger_mask = NPHY_RfseqTrigger_updategainh;
21345         status_mask = NPHY_RfseqStatus_updategainh;
21346         break;
21347     case NPHY_RFSEQ_UPDATEGAINL:
21348         trigger_mask = NPHY_RfseqTrigger_updategainl;
21349         status_mask = NPHY_RfseqStatus_updategainl;
21350         break;
21351     case NPHY_RFSEQ_UPDATEGAINU:
21352         trigger_mask = NPHY_RfseqTrigger_updategainu;
21353         status_mask = NPHY_RfseqStatus_updategainu;
21354         break;
21355     default:
21356         return;
21357     }
21358 
21359     orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21360     or_phy_reg(pi, 0xa1,
21361            (NPHY_RfseqMode_CoreActv_override |
21362             NPHY_RfseqMode_Trigger_override));
21363     or_phy_reg(pi, 0xa3, trigger_mask);
21364     SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21365     write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21366     WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21367 }
21368 
21369 static void
21370 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21371                      u8 core_mask, u8 off)
21372 {
21373     u16 rfmxgain = 0, lpfgain = 0;
21374     u16 tgain = 0;
21375 
21376     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21377 
21378         switch (cmd) {
21379         case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21380             wlc_phy_rfctrl_override_nphy_rev7(
21381                 pi, (0x1 << 5),
21382                 value, core_mask, off,
21383                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21384             wlc_phy_rfctrl_override_nphy_rev7(
21385                 pi, (0x1 << 4), value,
21386                 core_mask, off,
21387                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388             wlc_phy_rfctrl_override_nphy_rev7(
21389                 pi, (0x1 << 3), value,
21390                 core_mask, off,
21391                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21392             break;
21393         case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21394             wlc_phy_rfctrl_override_nphy_rev7(
21395                 pi, (0x1 << 2),
21396                 value, core_mask, off,
21397                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21398             wlc_phy_rfctrl_override_nphy_rev7(
21399                 pi, (0x1 << 1), value,
21400                 core_mask, off,
21401                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402             wlc_phy_rfctrl_override_nphy_rev7(
21403                 pi, (0x1 << 0), value,
21404                 core_mask, off,
21405                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21406             wlc_phy_rfctrl_override_nphy_rev7(
21407                 pi, (0x1 << 1), value,
21408                 core_mask, off,
21409                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21410             wlc_phy_rfctrl_override_nphy_rev7(
21411                 pi, (0x1 << 11), 0,
21412                 core_mask, off,
21413                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21414             break;
21415         case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21416             wlc_phy_rfctrl_override_nphy_rev7(
21417                 pi, (0x1 << 2),
21418                 value, core_mask, off,
21419                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21420             wlc_phy_rfctrl_override_nphy_rev7(
21421                 pi, (0x1 << 1), value,
21422                 core_mask, off,
21423                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21424             wlc_phy_rfctrl_override_nphy_rev7(
21425                 pi, (0x1 << 0), value,
21426                 core_mask, off,
21427                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21428             wlc_phy_rfctrl_override_nphy_rev7(
21429                 pi, (0x1 << 2), value,
21430                 core_mask, off,
21431                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21432             wlc_phy_rfctrl_override_nphy_rev7(
21433                 pi, (0x1 << 11), 1,
21434                 core_mask, off,
21435                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21436             break;
21437         case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21438             rfmxgain = value & 0x000ff;
21439             lpfgain = value & 0x0ff00;
21440             lpfgain = lpfgain >> 8;
21441 
21442             wlc_phy_rfctrl_override_nphy_rev7(
21443                 pi, (0x1 << 11),
21444                 rfmxgain, core_mask,
21445                 off,
21446                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21447             wlc_phy_rfctrl_override_nphy_rev7(
21448                 pi, (0x3 << 13),
21449                 lpfgain, core_mask,
21450                 off,
21451                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21452             break;
21453         case NPHY_REV7_RfctrlOverride_cmd_txgain:
21454             tgain = value & 0x7fff;
21455             lpfgain = value & 0x8000;
21456             lpfgain = lpfgain >> 14;
21457 
21458             wlc_phy_rfctrl_override_nphy_rev7(
21459                 pi, (0x1 << 12),
21460                 tgain, core_mask, off,
21461                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21462             wlc_phy_rfctrl_override_nphy_rev7(
21463                 pi, (0x1 << 13),
21464                 lpfgain, core_mask,
21465                 off,
21466                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21467             break;
21468         }
21469     }
21470 }
21471 
21472 static void
21473 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21474                    u8 coresel, u8 rail, u8 rssi_type)
21475 {
21476     u16 valuetostuff;
21477 
21478     offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21479          NPHY_RSSICAL_MAXREAD : offset;
21480     offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21481          -NPHY_RSSICAL_MAXREAD - 1 : offset;
21482 
21483     valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21484 
21485     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21486          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21487         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21488         write_phy_reg(pi, 0x1a6, valuetostuff);
21489 
21490     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21491          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21492         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21493         write_phy_reg(pi, 0x1ac, valuetostuff);
21494 
21495     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21496          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21497         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21498         write_phy_reg(pi, 0x1b2, valuetostuff);
21499 
21500     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21501          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21502         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21503         write_phy_reg(pi, 0x1b8, valuetostuff);
21504 
21505     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21506          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21507         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21508         write_phy_reg(pi, 0x1a4, valuetostuff);
21509 
21510     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21511          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21512         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21513         write_phy_reg(pi, 0x1aa, valuetostuff);
21514 
21515     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21516          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21517         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21518         write_phy_reg(pi, 0x1b0, valuetostuff);
21519 
21520     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21521          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21522         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21523         write_phy_reg(pi, 0x1b6, valuetostuff);
21524 
21525     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21528         write_phy_reg(pi, 0x1a5, valuetostuff);
21529     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21530          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21531         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21532         write_phy_reg(pi, 0x1ab, valuetostuff);
21533 
21534     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21535          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21536         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21537         write_phy_reg(pi, 0x1b1, valuetostuff);
21538 
21539     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21540          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21541         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21542         write_phy_reg(pi, 0x1b7, valuetostuff);
21543 
21544     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21547         write_phy_reg(pi, 0x1a7, valuetostuff);
21548     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21549          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551         write_phy_reg(pi, 0x1ad, valuetostuff);
21552     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21553          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555         write_phy_reg(pi, 0x1b3, valuetostuff);
21556     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21557          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21558         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21559         write_phy_reg(pi, 0x1b9, valuetostuff);
21560 
21561     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21562          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21563         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21564         write_phy_reg(pi, 0x1a8, valuetostuff);
21565 
21566     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21567          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21568         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21569         write_phy_reg(pi, 0x1ae, valuetostuff);
21570 
21571     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21572          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21573         (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21574         write_phy_reg(pi, 0x1b4, valuetostuff);
21575 
21576     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21577          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21578         (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21579         write_phy_reg(pi, 0x1ba, valuetostuff);
21580 
21581     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21582          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583         (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21584         write_phy_reg(pi, 0x1a9, valuetostuff);
21585     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21586          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21587         (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21588         write_phy_reg(pi, 0x1b5, valuetostuff);
21589 
21590     if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21591          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21592         (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21593         write_phy_reg(pi, 0x1af, valuetostuff);
21594 
21595     if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21596          (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21597         (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21598         write_phy_reg(pi, 0x1bb, valuetostuff);
21599 }
21600 
21601 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21602 {
21603     if (PHY_IPA(pi)) {
21604         if (NREV_GE(pi->pubpi.phy_rev, 7))
21605             write_radio_reg(pi,
21606                     ((core == PHY_CORE_0) ?
21607                      RADIO_2057_TX0_TX_SSI_MUX :
21608                      RADIO_2057_TX1_TX_SSI_MUX),
21609                     (CHSPEC_IS5G(pi->radio_chanspec) ?
21610                     0xc : 0xe));
21611         else
21612             write_radio_reg(pi,
21613                     RADIO_2056_TX_TX_SSI_MUX |
21614                     ((core == PHY_CORE_0) ?
21615                      RADIO_2056_TX0 : RADIO_2056_TX1),
21616                     (CHSPEC_IS5G(pi->radio_chanspec) ?
21617                     0xc : 0xe));
21618     } else {
21619         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21620             write_radio_reg(pi,
21621                     ((core == PHY_CORE_0) ?
21622                      RADIO_2057_TX0_TX_SSI_MUX :
21623                      RADIO_2057_TX1_TX_SSI_MUX),
21624                     0x11);
21625 
21626             if (pi->pubpi.radioid == BCM2057_ID)
21627                 write_radio_reg(pi,
21628                         RADIO_2057_IQTEST_SEL_PU, 0x1);
21629 
21630         } else {
21631             write_radio_reg(pi,
21632                     RADIO_2056_TX_TX_SSI_MUX |
21633                     ((core == PHY_CORE_0) ?
21634                      RADIO_2056_TX0 : RADIO_2056_TX1),
21635                     0x11);
21636         }
21637     }
21638 }
21639 
21640 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21641 {
21642     u16 mask, val;
21643     u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21644         startseq;
21645     u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21646         rfctrlovr_trigger_val;
21647     u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21648     u16 rfctrlcmd_val, rfctrlovr_val;
21649     u8 core;
21650 
21651     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21652         if (core_code == RADIO_MIMO_CORESEL_OFF) {
21653             mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21654             mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21655 
21656             mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21657             mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21658 
21659             mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21660             mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21661 
21662             mask = (0x1 << 2) |
21663                    (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21664             mod_phy_reg(pi, 0xf9, mask, 0);
21665             mod_phy_reg(pi, 0xfb, mask, 0);
21666 
21667         } else {
21668             for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21669                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21670                     && core == PHY_CORE_1)
21671                     continue;
21672                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21673                      && core == PHY_CORE_0)
21674                     continue;
21675 
21676                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21677                         0x8f : 0xa5, (0x1 << 9), 1 << 9);
21678 
21679                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21680                     rssi_type == NPHY_RSSI_SEL_W2 ||
21681                     rssi_type == NPHY_RSSI_SEL_NB) {
21682                     mod_phy_reg(pi,
21683                             (core ==
21684                              PHY_CORE_0) ? 0xa6 : 0xa7,
21685                             (0x3 << 8), 0);
21686 
21687                     mask = (0x1 << 2) |
21688                            (0x1 << 3) |
21689                            (0x1 << 4) | (0x1 << 5);
21690                     mod_phy_reg(pi,
21691                             (core ==
21692                              PHY_CORE_0) ? 0xf9 : 0xfb,
21693                             mask, 0);
21694 
21695                     if (rssi_type == NPHY_RSSI_SEL_W1) {
21696                         if (CHSPEC_IS5G(
21697                               pi->radio_chanspec)) {
21698                             mask = (0x1 << 2);
21699                             val = 1 << 2;
21700                         } else {
21701                             mask = (0x1 << 3);
21702                             val = 1 << 3;
21703                         }
21704                     } else if (rssi_type ==
21705                            NPHY_RSSI_SEL_W2) {
21706                         mask = (0x1 << 4);
21707                         val = 1 << 4;
21708                     } else {
21709                         mask = (0x1 << 5);
21710                         val = 1 << 5;
21711                     }
21712                     mod_phy_reg(pi,
21713                             (core ==
21714                              PHY_CORE_0) ? 0xf9 : 0xfb,
21715                             mask, val);
21716 
21717                     mask = (0x1 << 5);
21718                     val = 1 << 5;
21719                     mod_phy_reg(pi, (core == PHY_CORE_0) ?
21720                             0xe5 : 0xe6, mask, val);
21721                 } else {
21722                     if (rssi_type == NPHY_RSSI_SEL_TBD) {
21723                         mask = (0x3 << 8);
21724                         val = 1 << 8;
21725                         mod_phy_reg(pi,
21726                                 (core ==
21727                                  PHY_CORE_0) ? 0xa6
21728                                 : 0xa7, mask, val);
21729                         mask = (0x3 << 10);
21730                         val = 1 << 10;
21731                         mod_phy_reg(pi,
21732                                 (core ==
21733                                  PHY_CORE_0) ? 0xa6
21734                                 : 0xa7, mask, val);
21735                     } else if (rssi_type ==
21736                            NPHY_RSSI_SEL_IQ) {
21737                         mask = (0x3 << 8);
21738                         val = 2 << 8;
21739                         mod_phy_reg(pi,
21740                                 (core ==
21741                                  PHY_CORE_0) ? 0xa6
21742                                 : 0xa7, mask, val);
21743                         mask = (0x3 << 10);
21744                         val = 2 << 10;
21745                         mod_phy_reg(pi,
21746                                 (core ==
21747                                  PHY_CORE_0) ? 0xa6
21748                                 : 0xa7, mask, val);
21749                     } else {
21750                         mask = (0x3 << 8);
21751                         val = 3 << 8;
21752                         mod_phy_reg(pi,
21753                                 (core ==
21754                                  PHY_CORE_0) ? 0xa6
21755                                 : 0xa7, mask, val);
21756                         mask = (0x3 << 10);
21757                         val = 3 << 10;
21758                         mod_phy_reg(pi,
21759                                 (core ==
21760                                  PHY_CORE_0) ? 0xa6
21761                                 : 0xa7, mask, val);
21762                         brcms_phy_wr_tx_mux(pi, core);
21763                         afectrlovr_rssi_val = 1 << 9;
21764                         mod_phy_reg(pi,
21765                                (core ==
21766                                 PHY_CORE_0) ? 0x8f
21767                                : 0xa5, (0x1 << 9),
21768                                afectrlovr_rssi_val);
21769                     }
21770                 }
21771             }
21772         }
21773     } else {
21774 
21775         if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21776             (rssi_type == NPHY_RSSI_SEL_W2) ||
21777             (rssi_type == NPHY_RSSI_SEL_NB))
21778             val = 0x0;
21779         else if (rssi_type == NPHY_RSSI_SEL_TBD)
21780             val = 0x1;
21781         else if (rssi_type == NPHY_RSSI_SEL_IQ)
21782             val = 0x2;
21783         else
21784             val = 0x3;
21785 
21786         mask = ((0x3 << 12) | (0x3 << 14));
21787         val = (val << 12) | (val << 14);
21788         mod_phy_reg(pi, 0xa6, mask, val);
21789         mod_phy_reg(pi, 0xa7, mask, val);
21790 
21791         if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21792             (rssi_type == NPHY_RSSI_SEL_W2) ||
21793             (rssi_type == NPHY_RSSI_SEL_NB)) {
21794             if (rssi_type == NPHY_RSSI_SEL_W1)
21795                 val = 0x1;
21796             if (rssi_type == NPHY_RSSI_SEL_W2)
21797                 val = 0x2;
21798             if (rssi_type == NPHY_RSSI_SEL_NB)
21799                 val = 0x3;
21800 
21801             mask = (0x3 << 4);
21802             val = (val << 4);
21803             mod_phy_reg(pi, 0x7a, mask, val);
21804             mod_phy_reg(pi, 0x7d, mask, val);
21805         }
21806 
21807         if (core_code == RADIO_MIMO_CORESEL_OFF) {
21808             afectrlovr_rssi_val = 0;
21809             rfctrlcmd_rxen_val = 0;
21810             rfctrlcmd_coresel_val = 0;
21811             rfctrlovr_rssi_val = 0;
21812             rfctrlovr_rxen_val = 0;
21813             rfctrlovr_coresel_val = 0;
21814             rfctrlovr_trigger_val = 0;
21815             startseq = 0;
21816         } else {
21817             afectrlovr_rssi_val = 1;
21818             rfctrlcmd_rxen_val = 1;
21819             rfctrlcmd_coresel_val = core_code;
21820             rfctrlovr_rssi_val = 1;
21821             rfctrlovr_rxen_val = 1;
21822             rfctrlovr_coresel_val = 1;
21823             rfctrlovr_trigger_val = 1;
21824             startseq = 1;
21825         }
21826 
21827         afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21828         afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21829                        12) | (afectrlovr_rssi_val << 13);
21830         mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21831                 afectrlovr_rssi_val);
21832 
21833         if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21834             (rssi_type == NPHY_RSSI_SEL_W2) ||
21835             (rssi_type == NPHY_RSSI_SEL_NB)) {
21836             rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21837             rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21838                     (rfctrlcmd_coresel_val << 3);
21839 
21840             rfctrlovr_mask = ((0x1 << 5) |
21841                       (0x1 << 12) |
21842                       (0x1 << 1) | (0x1 << 0));
21843             rfctrlovr_val = (rfctrlovr_rssi_val <<
21844                      5) |
21845                     (rfctrlovr_rxen_val << 12) |
21846                     (rfctrlovr_coresel_val << 1) |
21847                     (rfctrlovr_trigger_val << 0);
21848 
21849             mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21850             mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21851 
21852             mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21853             udelay(20);
21854 
21855             mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21856         }
21857     }
21858 }
21859 
21860 int
21861 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21862                u8 nsamps)
21863 {
21864     s16 rssi0, rssi1;
21865     u16 afectrlCore1_save = 0;
21866     u16 afectrlCore2_save = 0;
21867     u16 afectrlOverride1_save = 0;
21868     u16 afectrlOverride2_save = 0;
21869     u16 rfctrlOverrideAux0_save = 0;
21870     u16 rfctrlOverrideAux1_save = 0;
21871     u16 rfctrlMiscReg1_save = 0;
21872     u16 rfctrlMiscReg2_save = 0;
21873     u16 rfctrlcmd_save = 0;
21874     u16 rfctrloverride_save = 0;
21875     u16 rfctrlrssiothers1_save = 0;
21876     u16 rfctrlrssiothers2_save = 0;
21877     s8 tmp_buf[4];
21878     u8 ctr = 0, samp = 0;
21879     s32 rssi_out_val;
21880     u16 gpiosel_orig;
21881 
21882     afectrlCore1_save = read_phy_reg(pi, 0xa6);
21883     afectrlCore2_save = read_phy_reg(pi, 0xa7);
21884     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21885         rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21886         rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21887         afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21888         afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21889         rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21890         rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21891     } else {
21892         afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21893         rfctrlcmd_save = read_phy_reg(pi, 0x78);
21894         rfctrloverride_save = read_phy_reg(pi, 0xec);
21895         rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21896         rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21897     }
21898 
21899     wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21900 
21901     gpiosel_orig = read_phy_reg(pi, 0xca);
21902     if (NREV_LT(pi->pubpi.phy_rev, 2))
21903         write_phy_reg(pi, 0xca, 5);
21904 
21905     for (ctr = 0; ctr < 4; ctr++)
21906         rssi_buf[ctr] = 0;
21907 
21908     for (samp = 0; samp < nsamps; samp++) {
21909         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21910             rssi0 = read_phy_reg(pi, 0x1c9);
21911             rssi1 = read_phy_reg(pi, 0x1ca);
21912         } else {
21913             rssi0 = read_phy_reg(pi, 0x219);
21914             rssi1 = read_phy_reg(pi, 0x21a);
21915         }
21916 
21917         ctr = 0;
21918         tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21919         tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21920         tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21921         tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21922 
21923         for (ctr = 0; ctr < 4; ctr++)
21924             rssi_buf[ctr] += tmp_buf[ctr];
21925 
21926     }
21927 
21928     rssi_out_val = rssi_buf[3] & 0xff;
21929     rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21930     rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21931     rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21932 
21933     if (NREV_LT(pi->pubpi.phy_rev, 2))
21934         write_phy_reg(pi, 0xca, gpiosel_orig);
21935 
21936     write_phy_reg(pi, 0xa6, afectrlCore1_save);
21937     write_phy_reg(pi, 0xa7, afectrlCore2_save);
21938     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21939         write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21940         write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21941         write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21942         write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21943         write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21944         write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21945     } else {
21946         write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21947         write_phy_reg(pi, 0x78, rfctrlcmd_save);
21948         write_phy_reg(pi, 0xec, rfctrloverride_save);
21949         write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21950         write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21951     }
21952 
21953     return rssi_out_val;
21954 }
21955 
21956 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21957 {
21958     u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21959     u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21960     u16 pwrdet_rxtx_core1_save;
21961     u16 pwrdet_rxtx_core2_save;
21962     u16 afectrlCore1_save;
21963     u16 afectrlCore2_save;
21964     u16 afectrlOverride_save;
21965     u16 afectrlOverride2_save;
21966     u16 pd_pll_ts_save;
21967     u16 gpioSel_save;
21968     s32 radio_temp[4];
21969     s32 radio_temp2[4];
21970     u16 syn_tempprocsense_save;
21971     s16 offset = 0;
21972 
21973     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21974         u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21975         u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21976         u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21977         s32 auxADC_Vl;
21978         u16 RfctrlOverride5_save, RfctrlOverride6_save;
21979         u16 RfctrlMiscReg5_save;
21980         u16 RSSIMultCoef0QPowerDet_save;
21981         u16 tempsense_Rcal;
21982 
21983         syn_tempprocsense_save =
21984             read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21985 
21986         afectrlCore1_save = read_phy_reg(pi, 0xa6);
21987         afectrlCore2_save = read_phy_reg(pi, 0xa7);
21988         afectrlOverride_save = read_phy_reg(pi, 0x8f);
21989         afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21990         RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21991         RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21992         RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21993         RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21994         read_phy_reg(pi, 0x345); /* RfctrlMiscReg6_save */
21995 
21996         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21997                     &auxADC_Vmid_save);
21998         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21999                     &auxADC_Av_save);
22000         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22001                     &auxADC_rssi_ctrlL_save);
22002         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22003                     &auxADC_rssi_ctrlH_save);
22004 
22005         write_phy_reg(pi, 0x1ae, 0x0);
22006 
22007         auxADC_rssi_ctrlL = 0x0;
22008         auxADC_rssi_ctrlH = 0x20;
22009         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22010                      &auxADC_rssi_ctrlL);
22011         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22012                      &auxADC_rssi_ctrlH);
22013 
22014         tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22015 
22016         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22017                 tempsense_Rcal | 0x01);
22018 
22019         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22020                           1, 0, 0,
22021                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
22022         mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22023         mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22024         mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22025         mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22026 
22027         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22028         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22029         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22030         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22031         udelay(5);
22032         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22033         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22034         mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22035         mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22036         mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22037         mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22038         mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22039         mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22040         mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22041         mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22042 
22043         auxADC_Vmid = 0xA3;
22044         auxADC_Av = 0x0;
22045         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22046                      &auxADC_Vmid);
22047         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22048                      &auxADC_Av);
22049 
22050         udelay(3);
22051 
22052         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22053         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22054                 tempsense_Rcal | 0x03);
22055 
22056         udelay(5);
22057         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22058 
22059         auxADC_Av = 0x7;
22060         if (radio_temp[1] + radio_temp2[1] < -30) {
22061             auxADC_Vmid = 0x45;
22062             auxADC_Vl = 263;
22063         } else if (radio_temp[1] + radio_temp2[1] < -9) {
22064             auxADC_Vmid = 0x200;
22065             auxADC_Vl = 467;
22066         } else if (radio_temp[1] + radio_temp2[1] < 11) {
22067             auxADC_Vmid = 0x266;
22068             auxADC_Vl = 634;
22069         } else {
22070             auxADC_Vmid = 0x2D5;
22071             auxADC_Vl = 816;
22072         }
22073 
22074         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22075                      &auxADC_Vmid);
22076         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22077                      &auxADC_Av);
22078 
22079         udelay(3);
22080 
22081         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22082         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22083                 tempsense_Rcal | 0x01);
22084 
22085         udelay(5);
22086         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22087 
22088         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22089                 syn_tempprocsense_save);
22090 
22091         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22092         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22093         write_phy_reg(pi, 0x8f, afectrlOverride_save);
22094         write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22095         write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22096         write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22097         write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22098         write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22099         write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22100 
22101         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22102                      &auxADC_Vmid_save);
22103         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22104                      &auxADC_Av_save);
22105         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22106                      &auxADC_rssi_ctrlL_save);
22107         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22108                      &auxADC_rssi_ctrlH_save);
22109 
22110         if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22111             radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22112                      + 88 * (auxADC_Vl) - 27111 +
22113                      128) / 256;
22114         } else {
22115             radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22116                      + 82 * (auxADC_Vl) - 28861 +
22117                      128) / 256;
22118         }
22119 
22120         offset = (s16) pi->phy_tempsense_offset;
22121 
22122     } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22123         syn_tempprocsense_save =
22124             read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22125 
22126         afectrlCore1_save = read_phy_reg(pi, 0xa6);
22127         afectrlCore2_save = read_phy_reg(pi, 0xa7);
22128         afectrlOverride_save = read_phy_reg(pi, 0x8f);
22129         afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22130         gpioSel_save = read_phy_reg(pi, 0xca);
22131 
22132         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22133 
22134         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22135         if (NREV_LT(pi->pubpi.phy_rev, 7))
22136             write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22137 
22138         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22139         if (NREV_GE(pi->pubpi.phy_rev, 7))
22140             write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22141         else
22142             write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22143 
22144         radio_temp[0] =
22145             (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22146 
22147         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22148                 syn_tempprocsense_save);
22149 
22150         write_phy_reg(pi, 0xca, gpioSel_save);
22151         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22152         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22153         write_phy_reg(pi, 0x8f, afectrlOverride_save);
22154         write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22155 
22156         offset = (s16) pi->phy_tempsense_offset;
22157     } else {
22158 
22159         pwrdet_rxtx_core1_save =
22160             read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22161         pwrdet_rxtx_core2_save =
22162             read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22163         core1_txrf_iqcal1_save =
22164             read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22165         core1_txrf_iqcal2_save =
22166             read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22167         core2_txrf_iqcal1_save =
22168             read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22169         core2_txrf_iqcal2_save =
22170             read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22171         pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22172 
22173         afectrlCore1_save = read_phy_reg(pi, 0xa6);
22174         afectrlCore2_save = read_phy_reg(pi, 0xa7);
22175         afectrlOverride_save = read_phy_reg(pi, 0xa5);
22176         gpioSel_save = read_phy_reg(pi, 0xca);
22177 
22178         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22179         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22180         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22181         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22182         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22183         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22184         write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22185 
22186         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22187         xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22188 
22189         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22190         xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22191 
22192         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22193         xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22194 
22195         radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22196         radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22197         radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22198         radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22199 
22200         radio_temp[0] =
22201             (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22202              radio_temp[3]);
22203 
22204         radio_temp[0] =
22205             (radio_temp[0] +
22206              (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22207 
22208         radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22209 
22210         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22211                 pwrdet_rxtx_core1_save);
22212         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22213                 pwrdet_rxtx_core2_save);
22214         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22215                 core1_txrf_iqcal1_save);
22216         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22217                 core2_txrf_iqcal1_save);
22218         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22219                 core1_txrf_iqcal2_save);
22220         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22221                 core2_txrf_iqcal2_save);
22222         write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22223 
22224         write_phy_reg(pi, 0xca, gpioSel_save);
22225         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22226         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22227         write_phy_reg(pi, 0xa5, afectrlOverride_save);
22228     }
22229 
22230     return (s16) radio_temp[0] + offset;
22231 }
22232 
22233 static void
22234 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22235 {
22236     u8 core;
22237 
22238     for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22239         if (rssi_type == NPHY_RSSI_SEL_NB) {
22240             if (core == PHY_CORE_0) {
22241                 mod_radio_reg(pi,
22242                           RADIO_2055_CORE1_B0_NBRSSI_VCM,
22243                           RADIO_2055_NBRSSI_VCM_I_MASK,
22244                           vcm_buf[2 *
22245                               core] <<
22246                           RADIO_2055_NBRSSI_VCM_I_SHIFT);
22247                 mod_radio_reg(pi,
22248                           RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22249                           RADIO_2055_NBRSSI_VCM_Q_MASK,
22250                           vcm_buf[2 * core +
22251                               1] <<
22252                           RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22253             } else {
22254                 mod_radio_reg(pi,
22255                           RADIO_2055_CORE2_B0_NBRSSI_VCM,
22256                           RADIO_2055_NBRSSI_VCM_I_MASK,
22257                           vcm_buf[2 *
22258                               core] <<
22259                           RADIO_2055_NBRSSI_VCM_I_SHIFT);
22260                 mod_radio_reg(pi,
22261                           RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22262                           RADIO_2055_NBRSSI_VCM_Q_MASK,
22263                           vcm_buf[2 * core +
22264                               1] <<
22265                           RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22266             }
22267         } else {
22268             if (core == PHY_CORE_0)
22269                 mod_radio_reg(pi,
22270                           RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22271                           RADIO_2055_WBRSSI_VCM_IQ_MASK,
22272                           vcm_buf[2 *
22273                               core] <<
22274                           RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22275             else
22276                 mod_radio_reg(pi,
22277                           RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22278                           RADIO_2055_WBRSSI_VCM_IQ_MASK,
22279                           vcm_buf[2 *
22280                               core] <<
22281                           RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22282         }
22283     }
22284 }
22285 
22286 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22287 {
22288     u16 classif_state;
22289     u16 clip_state[2];
22290     u16 clip_off[] = { 0xffff, 0xffff };
22291     s32 target_code;
22292     u8 vcm, min_vcm;
22293     u8 vcm_final = 0;
22294     u8 result_idx;
22295     s32 poll_results[8][4] = {
22296         {0, 0, 0, 0},
22297         {0, 0, 0, 0},
22298         {0, 0, 0, 0},
22299         {0, 0, 0, 0},
22300         {0, 0, 0, 0},
22301         {0, 0, 0, 0},
22302         {0, 0, 0, 0},
22303         {0, 0, 0, 0}
22304     };
22305     s32 poll_result_core[4] = { 0, 0, 0, 0 };
22306     s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22307     s32 fine_digital_offset[4];
22308     s32 poll_results_min[4] = { 0, 0, 0, 0 };
22309     s32 min_poll;
22310     u8 vcm_level_max;
22311     u8 core;
22312     u8 wb_cnt;
22313     u8 rssi_type;
22314     u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22315     u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22316     u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22317     u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22318     u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22319     u16 NPHY_RfctrlCmd_save;
22320     u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22321     u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22322     u8 rxcore_state;
22323     u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22324     u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22325     u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22326     u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22327 
22328     NPHY_REV7_RfctrlOverride3_save =
22329         NPHY_REV7_RfctrlOverride4_save =
22330         NPHY_REV7_RfctrlOverride5_save =
22331         NPHY_REV7_RfctrlOverride6_save =
22332         NPHY_REV7_RfctrlMiscReg3_save =
22333         NPHY_REV7_RfctrlMiscReg4_save =
22334         NPHY_REV7_RfctrlMiscReg5_save =
22335         NPHY_REV7_RfctrlMiscReg6_save = 0;
22336 
22337     classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22338     wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22339     wlc_phy_clip_det_nphy(pi, 0, clip_state);
22340     wlc_phy_clip_det_nphy(pi, 1, clip_off);
22341 
22342     NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22343     NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22344     NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22345     NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22346     NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22347     NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22348     NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22349     NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22350     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22351         NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22352         NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22353         NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22354         NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22355     }
22356     NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22357     NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22358     NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22359     NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22360     NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22361     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22362         NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22363         NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22364         NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22365         NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22366     }
22367     NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22368     NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22369 
22370     wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22371                      RADIO_MIMO_CORESEL_ALLRXTX);
22372     wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22373                      RADIO_MIMO_CORESEL_ALLRXTX);
22374 
22375     if (NREV_GE(pi->pubpi.phy_rev, 7))
22376         wlc_phy_rfctrl_override_1tomany_nphy(
22377             pi,
22378             NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22379             0, 0, 0);
22380     else
22381         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22382 
22383     if (NREV_GE(pi->pubpi.phy_rev, 7))
22384         wlc_phy_rfctrl_override_1tomany_nphy(
22385             pi,
22386             NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22387             1, 0, 0);
22388     else
22389         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22390 
22391     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22392         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22393                           1, 0, 0,
22394                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
22395         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22396                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
22397     } else {
22398         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22399         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22400     }
22401 
22402     if (CHSPEC_IS5G(pi->radio_chanspec)) {
22403         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22404             wlc_phy_rfctrl_override_nphy_rev7(
22405                 pi, (0x1 << 5),
22406                 0, 0, 0,
22407                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22408             wlc_phy_rfctrl_override_nphy_rev7(
22409                 pi, (0x1 << 4), 1, 0,
22410                 0,
22411                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412         } else {
22413             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22414             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22415         }
22416 
22417     } else {
22418         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22419             wlc_phy_rfctrl_override_nphy_rev7(
22420                 pi, (0x1 << 4),
22421                 0, 0, 0,
22422                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423             wlc_phy_rfctrl_override_nphy_rev7(
22424                 pi, (0x1 << 5), 1, 0,
22425                 0,
22426                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427         } else {
22428             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22429             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22430         }
22431     }
22432 
22433     rxcore_state = wlc_phy_rxcore_getstate_nphy(
22434         (struct brcms_phy_pub *) pi);
22435 
22436     vcm_level_max = 8;
22437 
22438     for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22439 
22440         if ((rxcore_state & (1 << core)) == 0)
22441             continue;
22442 
22443         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22444                            core ==
22445                            PHY_CORE_0 ?
22446                            RADIO_MIMO_CORESEL_CORE1 :
22447                            RADIO_MIMO_CORESEL_CORE2,
22448                            NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22449         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22450                            core ==
22451                            PHY_CORE_0 ?
22452                            RADIO_MIMO_CORESEL_CORE1 :
22453                            RADIO_MIMO_CORESEL_CORE2,
22454                            NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22455 
22456         for (vcm = 0; vcm < vcm_level_max; vcm++) {
22457             if (NREV_GE(pi->pubpi.phy_rev, 7))
22458                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22459                           RADIO_2057_NB_MASTER_CORE0 :
22460                           RADIO_2057_NB_MASTER_CORE1,
22461                           RADIO_2057_VCM_MASK, vcm);
22462             else
22463                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22464                           ((core ==
22465                         PHY_CORE_0) ? RADIO_2056_RX0 :
22466                            RADIO_2056_RX1),
22467                           RADIO_2056_VCM_MASK,
22468                           vcm << RADIO_2056_RSSI_VCM_SHIFT);
22469 
22470             wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22471                            &poll_results[vcm][0],
22472                            NPHY_RSSICAL_NPOLL);
22473         }
22474 
22475         for (result_idx = 0; result_idx < 4; result_idx++) {
22476             if ((core == result_idx / 2) &&
22477                 (result_idx % 2 == 0)) {
22478 
22479                 min_d = NPHY_RSSICAL_MAXD;
22480                 min_vcm = 0;
22481                 min_poll =
22482                     NPHY_RSSICAL_MAXREAD *
22483                     NPHY_RSSICAL_NPOLL + 1;
22484                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22485                     curr_d =
22486                         poll_results[vcm][result_idx] *
22487                         poll_results[vcm][result_idx] +
22488                         poll_results[vcm][result_idx +
22489                                   1] *
22490                         poll_results[vcm][result_idx +
22491                                   1];
22492                     if (curr_d < min_d) {
22493                         min_d = curr_d;
22494                         min_vcm = vcm;
22495                     }
22496                     if (poll_results[vcm][result_idx] <
22497                         min_poll)
22498                         min_poll =
22499                             poll_results[vcm]
22500                             [result_idx];
22501                 }
22502                 vcm_final = min_vcm;
22503                 poll_results_min[result_idx] = min_poll;
22504             }
22505         }
22506 
22507         if (NREV_GE(pi->pubpi.phy_rev, 7))
22508             mod_radio_reg(pi, (core == PHY_CORE_0) ?
22509                       RADIO_2057_NB_MASTER_CORE0 :
22510                       RADIO_2057_NB_MASTER_CORE1,
22511                       RADIO_2057_VCM_MASK, vcm_final);
22512         else
22513             mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22514                       ((core ==
22515                     PHY_CORE_0) ? RADIO_2056_RX0 :
22516                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22517                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22518 
22519         for (result_idx = 0; result_idx < 4; result_idx++) {
22520             if (core == result_idx / 2) {
22521                 fine_digital_offset[result_idx] =
22522                     (NPHY_RSSICAL_NB_TARGET *
22523                      NPHY_RSSICAL_NPOLL) -
22524                     poll_results[vcm_final][result_idx];
22525                 if (fine_digital_offset[result_idx] < 0) {
22526                     fine_digital_offset[result_idx] =
22527                         abs(fine_digital_offset
22528                             [result_idx]);
22529                     fine_digital_offset[result_idx] +=
22530                         (NPHY_RSSICAL_NPOLL / 2);
22531                     fine_digital_offset[result_idx] /=
22532                         NPHY_RSSICAL_NPOLL;
22533                     fine_digital_offset[result_idx] =
22534                         -fine_digital_offset[
22535                                     result_idx];
22536                 } else {
22537                     fine_digital_offset[result_idx] +=
22538                         (NPHY_RSSICAL_NPOLL / 2);
22539                     fine_digital_offset[result_idx] /=
22540                         NPHY_RSSICAL_NPOLL;
22541                 }
22542 
22543                 if (poll_results_min[result_idx] ==
22544                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22545                     fine_digital_offset[result_idx] =
22546                         (NPHY_RSSICAL_NB_TARGET -
22547                          NPHY_RSSICAL_MAXREAD - 1);
22548 
22549                 wlc_phy_scale_offset_rssi_nphy(
22550                     pi, 0x0,
22551                     (s8)
22552                     fine_digital_offset
22553                     [result_idx],
22554                     (result_idx / 2 == 0) ?
22555                     RADIO_MIMO_CORESEL_CORE1 :
22556                     RADIO_MIMO_CORESEL_CORE2,
22557                     (result_idx % 2 == 0) ?
22558                     NPHY_RAIL_I : NPHY_RAIL_Q,
22559                     NPHY_RSSI_SEL_NB);
22560             }
22561         }
22562 
22563     }
22564 
22565     for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22566 
22567         if ((rxcore_state & (1 << core)) == 0)
22568             continue;
22569 
22570         for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22571             if (wb_cnt == 0) {
22572                 rssi_type = NPHY_RSSI_SEL_W1;
22573                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22574             } else {
22575                 rssi_type = NPHY_RSSI_SEL_W2;
22576                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22577             }
22578 
22579             wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22580                                core ==
22581                                PHY_CORE_0 ?
22582                                RADIO_MIMO_CORESEL_CORE1
22583                                :
22584                                RADIO_MIMO_CORESEL_CORE2,
22585                                NPHY_RAIL_I, rssi_type);
22586             wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22587                                core ==
22588                                PHY_CORE_0 ?
22589                                RADIO_MIMO_CORESEL_CORE1
22590                                :
22591                                RADIO_MIMO_CORESEL_CORE2,
22592                                NPHY_RAIL_Q, rssi_type);
22593 
22594             wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22595                            NPHY_RSSICAL_NPOLL);
22596 
22597             for (result_idx = 0; result_idx < 4; result_idx++) {
22598                 if (core == result_idx / 2) {
22599                     fine_digital_offset[result_idx] =
22600                         (target_code *
22601                          NPHY_RSSICAL_NPOLL) -
22602                         poll_result_core[result_idx];
22603                     if (fine_digital_offset[result_idx] <
22604                         0) {
22605                         fine_digital_offset[result_idx]
22606                             = abs(
22607                                 fine_digital_offset
22608                                 [result_idx]);
22609                         fine_digital_offset[result_idx]
22610                             += (NPHY_RSSICAL_NPOLL
22611                                 / 2);
22612                         fine_digital_offset[result_idx]
22613                             /= NPHY_RSSICAL_NPOLL;
22614                         fine_digital_offset[result_idx]
22615                             = -fine_digital_offset
22616                                 [result_idx];
22617                     } else {
22618                         fine_digital_offset[result_idx]
22619                             += (NPHY_RSSICAL_NPOLL
22620                                 / 2);
22621                         fine_digital_offset[result_idx]
22622                             /= NPHY_RSSICAL_NPOLL;
22623                     }
22624 
22625                     wlc_phy_scale_offset_rssi_nphy(
22626                         pi, 0x0,
22627                         (s8)
22628                         fine_digital_offset
22629                         [core *
22630                          2],
22631                         (core == PHY_CORE_0) ?
22632                         RADIO_MIMO_CORESEL_CORE1 :
22633                         RADIO_MIMO_CORESEL_CORE2,
22634                         (result_idx % 2 == 0) ?
22635                         NPHY_RAIL_I :
22636                         NPHY_RAIL_Q,
22637                         rssi_type);
22638                 }
22639             }
22640 
22641         }
22642     }
22643 
22644     write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22645     write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22646 
22647     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22648 
22649     mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22650     mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22651     mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22652 
22653     mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22654     mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22655     mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22656 
22657     write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22658     write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22659     write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22660     write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22661     write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22662     write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22663     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22664         write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22665         write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22666         write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22667         write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22668     }
22669     write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22670     write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22671     write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22672     write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22673     write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22674     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22675         write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22676         write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22677         write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22678         write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22679     }
22680     write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22681     write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22682 
22683     if (CHSPEC_IS2G(pi->radio_chanspec)) {
22684         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22685             pi->rssical_cache.rssical_radio_regs_2G[0] =
22686                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22687             pi->rssical_cache.rssical_radio_regs_2G[1] =
22688                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22689         } else {
22690             pi->rssical_cache.rssical_radio_regs_2G[0] =
22691                 read_radio_reg(pi,
22692                            RADIO_2056_RX_RSSI_MISC |
22693                            RADIO_2056_RX0);
22694             pi->rssical_cache.rssical_radio_regs_2G[1] =
22695                 read_radio_reg(pi,
22696                            RADIO_2056_RX_RSSI_MISC |
22697                            RADIO_2056_RX1);
22698         }
22699 
22700         pi->rssical_cache.rssical_phyregs_2G[0] =
22701             read_phy_reg(pi, 0x1a6);
22702         pi->rssical_cache.rssical_phyregs_2G[1] =
22703             read_phy_reg(pi, 0x1ac);
22704         pi->rssical_cache.rssical_phyregs_2G[2] =
22705             read_phy_reg(pi, 0x1b2);
22706         pi->rssical_cache.rssical_phyregs_2G[3] =
22707             read_phy_reg(pi, 0x1b8);
22708         pi->rssical_cache.rssical_phyregs_2G[4] =
22709             read_phy_reg(pi, 0x1a4);
22710         pi->rssical_cache.rssical_phyregs_2G[5] =
22711             read_phy_reg(pi, 0x1aa);
22712         pi->rssical_cache.rssical_phyregs_2G[6] =
22713             read_phy_reg(pi, 0x1b0);
22714         pi->rssical_cache.rssical_phyregs_2G[7] =
22715             read_phy_reg(pi, 0x1b6);
22716         pi->rssical_cache.rssical_phyregs_2G[8] =
22717             read_phy_reg(pi, 0x1a5);
22718         pi->rssical_cache.rssical_phyregs_2G[9] =
22719             read_phy_reg(pi, 0x1ab);
22720         pi->rssical_cache.rssical_phyregs_2G[10] =
22721             read_phy_reg(pi, 0x1b1);
22722         pi->rssical_cache.rssical_phyregs_2G[11] =
22723             read_phy_reg(pi, 0x1b7);
22724 
22725         pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22726     } else {
22727         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22728             pi->rssical_cache.rssical_radio_regs_5G[0] =
22729                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22730             pi->rssical_cache.rssical_radio_regs_5G[1] =
22731                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22732         } else {
22733             pi->rssical_cache.rssical_radio_regs_5G[0] =
22734                 read_radio_reg(pi,
22735                            RADIO_2056_RX_RSSI_MISC |
22736                            RADIO_2056_RX0);
22737             pi->rssical_cache.rssical_radio_regs_5G[1] =
22738                 read_radio_reg(pi,
22739                            RADIO_2056_RX_RSSI_MISC |
22740                            RADIO_2056_RX1);
22741         }
22742 
22743         pi->rssical_cache.rssical_phyregs_5G[0] =
22744             read_phy_reg(pi, 0x1a6);
22745         pi->rssical_cache.rssical_phyregs_5G[1] =
22746             read_phy_reg(pi, 0x1ac);
22747         pi->rssical_cache.rssical_phyregs_5G[2] =
22748             read_phy_reg(pi, 0x1b2);
22749         pi->rssical_cache.rssical_phyregs_5G[3] =
22750             read_phy_reg(pi, 0x1b8);
22751         pi->rssical_cache.rssical_phyregs_5G[4] =
22752             read_phy_reg(pi, 0x1a4);
22753         pi->rssical_cache.rssical_phyregs_5G[5] =
22754             read_phy_reg(pi, 0x1aa);
22755         pi->rssical_cache.rssical_phyregs_5G[6] =
22756             read_phy_reg(pi, 0x1b0);
22757         pi->rssical_cache.rssical_phyregs_5G[7] =
22758             read_phy_reg(pi, 0x1b6);
22759         pi->rssical_cache.rssical_phyregs_5G[8] =
22760             read_phy_reg(pi, 0x1a5);
22761         pi->rssical_cache.rssical_phyregs_5G[9] =
22762             read_phy_reg(pi, 0x1ab);
22763         pi->rssical_cache.rssical_phyregs_5G[10] =
22764             read_phy_reg(pi, 0x1b1);
22765         pi->rssical_cache.rssical_phyregs_5G[11] =
22766             read_phy_reg(pi, 0x1b7);
22767 
22768         pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22769     }
22770 
22771     wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22772     wlc_phy_clip_det_nphy(pi, 1, clip_state);
22773 }
22774 
22775 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22776 {
22777     s32 target_code;
22778     u16 classif_state;
22779     u16 clip_state[2];
22780     u16 rssi_ctrl_state[2], pd_state[2];
22781     u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22782     u16 rfctrlintc_override_val;
22783     u16 clip_off[] = { 0xffff, 0xffff };
22784     u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22785     u8 vcm, min_vcm, vcm_tmp[4];
22786     u8 vcm_final[4] = { 0, 0, 0, 0 };
22787     u8 result_idx, ctr;
22788     s32 poll_results[4][4] = {
22789         {0, 0, 0, 0},
22790         {0, 0, 0, 0},
22791         {0, 0, 0, 0},
22792         {0, 0, 0, 0}
22793     };
22794     s32 poll_miniq[4][2] = {
22795         {0, 0},
22796         {0, 0},
22797         {0, 0},
22798         {0, 0}
22799     };
22800     s32 min_d, curr_d;
22801     s32 fine_digital_offset[4];
22802     s32 poll_results_min[4] = { 0, 0, 0, 0 };
22803     s32 min_poll;
22804 
22805     switch (rssi_type) {
22806     case NPHY_RSSI_SEL_NB:
22807         target_code = NPHY_RSSICAL_NB_TARGET;
22808         break;
22809     case NPHY_RSSI_SEL_W1:
22810         target_code = NPHY_RSSICAL_W1_TARGET;
22811         break;
22812     case NPHY_RSSI_SEL_W2:
22813         target_code = NPHY_RSSICAL_W2_TARGET;
22814         break;
22815     default:
22816         return;
22817     }
22818 
22819     classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22820     wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22821     wlc_phy_clip_det_nphy(pi, 0, clip_state);
22822     wlc_phy_clip_det_nphy(pi, 1, clip_off);
22823 
22824     rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22825     rfctrlintc_override_val =
22826         CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22827 
22828     rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22829     rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22830     write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22831     write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22832 
22833     rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22834     rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22835     write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22836     write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22837 
22838     pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22839           RADIO_2055_WBRSSI_G2_PD;
22840     pd_state[0] =
22841         read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22842     pd_state[1] =
22843         read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22844     mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22845     mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22846     rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22847              RADIO_2055_WBRSSI_G2_SEL;
22848     rssi_ctrl_state[0] =
22849         read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22850     rssi_ctrl_state[1] =
22851         read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22852     wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22853 
22854     wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22855                        NPHY_RAIL_I, rssi_type);
22856     wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22857                        NPHY_RAIL_Q, rssi_type);
22858 
22859     for (vcm = 0; vcm < 4; vcm++) {
22860 
22861         vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22862         if (rssi_type != NPHY_RSSI_SEL_W2)
22863             wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22864 
22865         wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22866                        NPHY_RSSICAL_NPOLL);
22867 
22868         if ((rssi_type == NPHY_RSSI_SEL_W1)
22869             || (rssi_type == NPHY_RSSI_SEL_W2)) {
22870             for (ctr = 0; ctr < 2; ctr++)
22871                 poll_miniq[vcm][ctr] =
22872                     min(poll_results[vcm][ctr * 2 + 0],
22873                         poll_results[vcm][ctr * 2 + 1]);
22874         }
22875     }
22876 
22877     for (result_idx = 0; result_idx < 4; result_idx++) {
22878         min_d = NPHY_RSSICAL_MAXD;
22879         min_vcm = 0;
22880         min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22881         for (vcm = 0; vcm < 4; vcm++) {
22882             curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22883                       poll_results[vcm][result_idx] :
22884                       poll_miniq[vcm][result_idx / 2]) -
22885                      (target_code * NPHY_RSSICAL_NPOLL));
22886             if (curr_d < min_d) {
22887                 min_d = curr_d;
22888                 min_vcm = vcm;
22889             }
22890             if (poll_results[vcm][result_idx] < min_poll)
22891                 min_poll = poll_results[vcm][result_idx];
22892         }
22893         vcm_final[result_idx] = min_vcm;
22894         poll_results_min[result_idx] = min_poll;
22895     }
22896 
22897     if (rssi_type != NPHY_RSSI_SEL_W2)
22898         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22899 
22900     for (result_idx = 0; result_idx < 4; result_idx++) {
22901         fine_digital_offset[result_idx] =
22902             (target_code * NPHY_RSSICAL_NPOLL) -
22903             poll_results[vcm_final[result_idx]][result_idx];
22904         if (fine_digital_offset[result_idx] < 0) {
22905             fine_digital_offset[result_idx] =
22906                 abs(fine_digital_offset[result_idx]);
22907             fine_digital_offset[result_idx] +=
22908                 (NPHY_RSSICAL_NPOLL / 2);
22909             fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22910             fine_digital_offset[result_idx] =
22911                 -fine_digital_offset[result_idx];
22912         } else {
22913             fine_digital_offset[result_idx] +=
22914                 (NPHY_RSSICAL_NPOLL / 2);
22915             fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22916         }
22917 
22918         if (poll_results_min[result_idx] ==
22919             NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22920             fine_digital_offset[result_idx] =
22921                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22922 
22923         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22924                            (s8)
22925                            fine_digital_offset[result_idx],
22926                            (result_idx / 2 ==
22927                         0) ? RADIO_MIMO_CORESEL_CORE1 :
22928                            RADIO_MIMO_CORESEL_CORE2,
22929                            (result_idx % 2 ==
22930                         0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22931                            rssi_type);
22932     }
22933 
22934     mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22935     mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22936     if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22937         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22938                      NPHY_RSSI_SEL_NB);
22939     else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22940         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22941                      NPHY_RSSI_SEL_W1);
22942     else /* RADIO_2055_WBRSSI_G2_SEL */
22943         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22944                      NPHY_RSSI_SEL_W2);
22945     if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22946         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22947                      NPHY_RSSI_SEL_NB);
22948     else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22949         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22950                      NPHY_RSSI_SEL_W1);
22951     else /* RADIO_2055_WBRSSI_G1_SEL */
22952         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22953                      NPHY_RSSI_SEL_W2);
22954     wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22955 
22956     write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22957     write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22958     write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22959     write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22960 
22961     wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22962     wlc_phy_clip_det_nphy(pi, 1, clip_state);
22963 
22964     wlc_phy_resetcca_nphy(pi);
22965 }
22966 
22967 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22968 {
22969     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22970         wlc_phy_rssi_cal_nphy_rev3(pi);
22971     } else {
22972         wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22973         wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22974         wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22975     }
22976 }
22977 
22978 int
22979 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22980 {
22981     s16 rxpwr, rxpwr0, rxpwr1;
22982     s16 phyRx2_l;
22983 
22984     rxpwr = 0;
22985     rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22986     rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22987 
22988     if (rxpwr0 > 127)
22989         rxpwr0 -= 256;
22990     if (rxpwr1 > 127)
22991         rxpwr1 -= 256;
22992 
22993     phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22994     if (phyRx2_l > 127)
22995         phyRx2_l -= 256;
22996 
22997     if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
22998         rxpwr0 = rxpwr1;
22999         rxpwr1 = phyRx2_l;
23000     }
23001 
23002     if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23003         rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23004     else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23005         rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23006     else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23007         rxpwr = (rxpwr0 + rxpwr1) >> 1;
23008 
23009     return rxpwr;
23010 }
23011 
23012 static void
23013 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23014                  u16 num_samps)
23015 {
23016     u16 t;
23017     u32 *data_buf = NULL;
23018 
23019     data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23020     if (data_buf == NULL)
23021         return;
23022 
23023     if (pi->phyhang_avoid)
23024         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23025 
23026     for (t = 0; t < num_samps; t++)
23027         data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23028                   (((unsigned int)tone_buf[t].q) & 0x3ff);
23029     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23030                  data_buf);
23031 
23032     kfree(data_buf);
23033 
23034     if (pi->phyhang_avoid)
23035         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23036 }
23037 
23038 static u16
23039 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23040                   u8 dac_test_mode)
23041 {
23042     u8 phy_bw, is_phybw40;
23043     u16 num_samps, t, spur;
23044     s32 theta = 0, rot = 0;
23045     u32 tbl_len;
23046     struct cordic_iq *tone_buf = NULL;
23047 
23048     is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23049     phy_bw = (is_phybw40 == 1) ? 40 : 20;
23050     tbl_len = (phy_bw << 3);
23051 
23052     if (dac_test_mode == 1) {
23053         spur = read_phy_reg(pi, 0x01);
23054         spur = (spur >> 15) & 1;
23055         phy_bw = (spur == 1) ? 82 : 80;
23056         phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23057 
23058         tbl_len = (phy_bw << 1);
23059     }
23060 
23061     tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23062                  GFP_ATOMIC);
23063     if (tone_buf == NULL)
23064         return 0;
23065 
23066     num_samps = (u16) tbl_len;
23067     rot = ((f_kHz * 36) / phy_bw) / 100;
23068     theta = 0;
23069 
23070     for (t = 0; t < num_samps; t++) {
23071 
23072         tone_buf[t] = cordic_calc_iq(theta);
23073 
23074         theta += rot;
23075 
23076         tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23077         tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23078     }
23079 
23080     wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23081 
23082     kfree(tone_buf);
23083 
23084     return num_samps;
23085 }
23086 
23087 static void
23088 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23089             u16 wait, u8 iqmode, u8 dac_test_mode,
23090             bool modify_bbmult)
23091 {
23092     u16 bb_mult;
23093     u8 phy_bw, sample_cmd;
23094     u16 orig_RfseqCoreActv;
23095     u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4;
23096 
23097     if (pi->phyhang_avoid)
23098         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23099 
23100     phy_bw = 20;
23101     if (CHSPEC_IS40(pi->radio_chanspec))
23102         phy_bw = 40;
23103 
23104     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23105 
23106         lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23107         lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23108         if (!(lpf_bw_ctl_override3 | lpf_bw_ctl_override4)) {
23109             wlc_phy_rfctrl_override_nphy_rev7(
23110                 pi,
23111                 (0x1 << 7),
23112                 wlc_phy_read_lpf_bw_ctl_nphy
23113                     (pi,
23114                     0), 0, 0,
23115                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23116 
23117             pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23118         }
23119         read_phy_reg(pi, 0x340); /* lpf_bw_ctl_miscreg3 */
23120         read_phy_reg(pi, 0x341); /* lpf_bw_ctl_miscreg4 */
23121     }
23122 
23123     if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23124 
23125         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23126                     &bb_mult);
23127         pi->nphy_bb_mult_save =
23128             BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23129     }
23130 
23131     if (modify_bbmult) {
23132         bb_mult = (phy_bw == 20) ? 100 : 71;
23133         bb_mult = (bb_mult << 8) + bb_mult;
23134         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23135                      &bb_mult);
23136     }
23137 
23138     if (pi->phyhang_avoid)
23139         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23140 
23141     write_phy_reg(pi, 0xc6, num_samps - 1);
23142 
23143     if (loops != 0xffff)
23144         write_phy_reg(pi, 0xc4, loops - 1);
23145     else
23146         write_phy_reg(pi, 0xc4, loops);
23147 
23148     write_phy_reg(pi, 0xc5, wait);
23149 
23150     orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23151     or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23152     if (iqmode) {
23153 
23154         and_phy_reg(pi, 0xc2, 0x7FFF);
23155 
23156         or_phy_reg(pi, 0xc2, 0x8000);
23157     } else {
23158 
23159         sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23160         write_phy_reg(pi, 0xc3, sample_cmd);
23161     }
23162 
23163     SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23164 
23165     write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23166 }
23167 
23168 int
23169 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23170              u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23171 {
23172     u16 num_samps;
23173     u16 loops = 0xffff;
23174     u16 wait = 0;
23175 
23176     num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23177                           dac_test_mode);
23178     if (num_samps == 0)
23179         return -EBADE;
23180 
23181     wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23182                 dac_test_mode, modify_bbmult);
23183 
23184     return 0;
23185 }
23186 
23187 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23188 {
23189     u16 playback_status;
23190     u16 bb_mult;
23191 
23192     if (pi->phyhang_avoid)
23193         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23194 
23195     playback_status = read_phy_reg(pi, 0xc7);
23196     if (playback_status & 0x1)
23197         or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23198     else if (playback_status & 0x2)
23199         and_phy_reg(pi, 0xc2,
23200                 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23201 
23202     and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23203 
23204     if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23205 
23206         bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23207         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23208                      &bb_mult);
23209 
23210         pi->nphy_bb_mult_save = 0;
23211     }
23212 
23213     if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23214         if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23215             wlc_phy_rfctrl_override_nphy_rev7(
23216                 pi,
23217                 (0x1 << 7),
23218                 0, 0, 1,
23219                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23220             pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23221         }
23222     }
23223 
23224     if (pi->phyhang_avoid)
23225         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23226 }
23227 
23228 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23229 {
23230     u32 *tx_pwrctrl_tbl = NULL;
23231     uint phyrev = pi->pubpi.phy_rev;
23232 
23233     if (PHY_IPA(pi)) {
23234         tx_pwrctrl_tbl =
23235             wlc_phy_get_ipa_gaintbl_nphy(pi);
23236     } else {
23237         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23238             if (NREV_IS(phyrev, 3))
23239                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23240             else if (NREV_IS(phyrev, 4))
23241                 tx_pwrctrl_tbl =
23242                     (pi->srom_fem5g.extpagain == 3) ?
23243                     nphy_tpc_5GHz_txgain_HiPwrEPA :
23244                     nphy_tpc_5GHz_txgain_rev4;
23245             else
23246                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23247         } else {
23248             if (NREV_GE(phyrev, 7)) {
23249                 if (pi->pubpi.radiorev == 3)
23250                     tx_pwrctrl_tbl =
23251                         nphy_tpc_txgain_epa_2057rev3;
23252                 else if (pi->pubpi.radiorev == 5)
23253                     tx_pwrctrl_tbl =
23254                         nphy_tpc_txgain_epa_2057rev5;
23255             } else {
23256                 if (NREV_GE(phyrev, 5) &&
23257                    (pi->srom_fem2g.extpagain == 3))
23258                     tx_pwrctrl_tbl =
23259                         nphy_tpc_txgain_HiPwrEPA;
23260                 else
23261                     tx_pwrctrl_tbl =
23262                         nphy_tpc_txgain_rev3;
23263             }
23264         }
23265     }
23266     return tx_pwrctrl_tbl;
23267 }
23268 
23269 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23270 {
23271     u16 base_idx[2], curr_gain[2];
23272     u8 core_no;
23273     struct nphy_txgains target_gain;
23274     u32 *tx_pwrctrl_tbl = NULL;
23275 
23276     if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23277         if (pi->phyhang_avoid)
23278             wlc_phy_stay_in_carriersearch_nphy(pi, true);
23279 
23280         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23281                     curr_gain);
23282 
23283         if (pi->phyhang_avoid)
23284             wlc_phy_stay_in_carriersearch_nphy(pi, false);
23285 
23286         for (core_no = 0; core_no < 2; core_no++) {
23287             if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23288                 target_gain.ipa[core_no] =
23289                     curr_gain[core_no] & 0x0007;
23290                 target_gain.pad[core_no] =
23291                     ((curr_gain[core_no] & 0x00F8) >> 3);
23292                 target_gain.pga[core_no] =
23293                     ((curr_gain[core_no] & 0x0F00) >> 8);
23294                 target_gain.txgm[core_no] =
23295                     ((curr_gain[core_no] & 0x7000) >> 12);
23296                 target_gain.txlpf[core_no] =
23297                     ((curr_gain[core_no] & 0x8000) >> 15);
23298             } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23299                 target_gain.ipa[core_no] =
23300                     curr_gain[core_no] & 0x000F;
23301                 target_gain.pad[core_no] =
23302                     ((curr_gain[core_no] & 0x00F0) >> 4);
23303                 target_gain.pga[core_no] =
23304                     ((curr_gain[core_no] & 0x0F00) >> 8);
23305                 target_gain.txgm[core_no] =
23306                     ((curr_gain[core_no] & 0x7000) >> 12);
23307             } else {
23308                 target_gain.ipa[core_no] =
23309                     curr_gain[core_no] & 0x0003;
23310                 target_gain.pad[core_no] =
23311                     ((curr_gain[core_no] & 0x000C) >> 2);
23312                 target_gain.pga[core_no] =
23313                     ((curr_gain[core_no] & 0x0070) >> 4);
23314                 target_gain.txgm[core_no] =
23315                     ((curr_gain[core_no] & 0x0380) >> 7);
23316             }
23317         }
23318     } else {
23319         uint phyrev = pi->pubpi.phy_rev;
23320 
23321         base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23322         base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23323         for (core_no = 0; core_no < 2; core_no++) {
23324             if (NREV_GE(phyrev, 3)) {
23325                 tx_pwrctrl_tbl =
23326                     brcms_phy_get_tx_pwrctrl_tbl(pi);
23327                 if (NREV_GE(phyrev, 7)) {
23328                     target_gain.ipa[core_no] =
23329                         (tx_pwrctrl_tbl
23330                          [base_idx[core_no]]
23331                          >> 16) & 0x7;
23332                     target_gain.pad[core_no] =
23333                         (tx_pwrctrl_tbl
23334                          [base_idx[core_no]]
23335                          >> 19) & 0x1f;
23336                     target_gain.pga[core_no] =
23337                         (tx_pwrctrl_tbl
23338                          [base_idx[core_no]]
23339                          >> 24) & 0xf;
23340                     target_gain.txgm[core_no] =
23341                         (tx_pwrctrl_tbl
23342                          [base_idx[core_no]]
23343                          >> 28) & 0x7;
23344                     target_gain.txlpf[core_no] =
23345                         (tx_pwrctrl_tbl
23346                          [base_idx[core_no]]
23347                          >> 31) & 0x1;
23348                 } else {
23349                     target_gain.ipa[core_no] =
23350                         (tx_pwrctrl_tbl
23351                          [base_idx[core_no]]
23352                          >> 16) & 0xf;
23353                     target_gain.pad[core_no] =
23354                         (tx_pwrctrl_tbl
23355                          [base_idx[core_no]]
23356                          >> 20) & 0xf;
23357                     target_gain.pga[core_no] =
23358                         (tx_pwrctrl_tbl
23359                          [base_idx[core_no]]
23360                          >> 24) & 0xf;
23361                     target_gain.txgm[core_no] =
23362                         (tx_pwrctrl_tbl
23363                         [base_idx[core_no]]
23364                          >> 28) & 0x7;
23365                 }
23366             } else {
23367                 target_gain.ipa[core_no] =
23368                     (nphy_tpc_txgain[base_idx[core_no]] >>
23369                      16) & 0x3;
23370                 target_gain.pad[core_no] =
23371                     (nphy_tpc_txgain[base_idx[core_no]] >>
23372                      18) & 0x3;
23373                 target_gain.pga[core_no] =
23374                     (nphy_tpc_txgain[base_idx[core_no]] >>
23375                      20) & 0x7;
23376                 target_gain.txgm[core_no] =
23377                     (nphy_tpc_txgain[base_idx[core_no]] >>
23378                      23) & 0x7;
23379             }
23380         }
23381     }
23382 
23383     return target_gain;
23384 }
23385 
23386 static void
23387 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23388                   struct nphy_txgains target_gain,
23389                   struct nphy_iqcal_params *params)
23390 {
23391     u8 k;
23392     u16 gain_index;
23393     u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23394 
23395     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23396         if (NREV_GE(pi->pubpi.phy_rev, 7))
23397             params->txlpf = target_gain.txlpf[core_no];
23398 
23399         params->txgm = target_gain.txgm[core_no];
23400         params->pga = target_gain.pga[core_no];
23401         params->pad = target_gain.pad[core_no];
23402         params->ipa = target_gain.ipa[core_no];
23403         if (NREV_GE(pi->pubpi.phy_rev, 7))
23404             params->cal_gain =
23405                 ((params->txlpf << 15) | (params->txgm << 12) |
23406                  (params->pga << 8) |
23407                  (params->pad << 3) | (params->ipa));
23408         else
23409             params->cal_gain =
23410                 ((params->txgm << 12) | (params->pga << 8) |
23411                  (params->pad << 4) | (params->ipa));
23412 
23413         params->ncorr[0] = 0x79;
23414         params->ncorr[1] = 0x79;
23415         params->ncorr[2] = 0x79;
23416         params->ncorr[3] = 0x79;
23417         params->ncorr[4] = 0x79;
23418     } else {
23419 
23420         gain_index = ((target_gain.pad[core_no] << 0) |
23421                   (target_gain.pga[core_no] << 4) |
23422                   (target_gain.txgm[core_no] << 8));
23423 
23424         for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23425             if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23426                 gain_index)
23427                 break;
23428         }
23429 
23430         params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23431         params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23432         params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23433         params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23434                     (params->pad << 2));
23435         params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23436         params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23437         params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23438         params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23439     }
23440 }
23441 
23442 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23443 {
23444     u16 jtag_core, core;
23445 
23446     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23447 
23448         for (core = 0; core <= 1; core++) {
23449 
23450             pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23451                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23452                         TX_SSI_MASTER);
23453 
23454             pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23455                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23456                         IQCAL_VCM_HG);
23457 
23458             pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23459                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23460                         IQCAL_IDAC);
23461 
23462             pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23463                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23464                         TSSI_VCM);
23465 
23466             pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23467 
23468             pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23469                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23470                         TX_SSI_MUX);
23471 
23472             if (pi->pubpi.radiorev != 5)
23473                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23474                     READ_RADIO_REG3(pi, RADIO_2057, TX,
23475                             core,
23476                             TSSIA);
23477 
23478             pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23479                    READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23480 
23481             pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23482                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23483                         TSSI_MISC1);
23484 
23485             if (CHSPEC_IS5G(pi->radio_chanspec)) {
23486                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23487                          TX_SSI_MASTER, 0x0a);
23488                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23489                          IQCAL_VCM_HG, 0x43);
23490                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23491                          IQCAL_IDAC, 0x55);
23492                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23493                          TSSI_VCM, 0x00);
23494                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23495                          TSSIG, 0x00);
23496                 if (pi->use_int_tx_iqlo_cal_nphy) {
23497                     WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23498                              core, TX_SSI_MUX, 0x4);
23499                     if (!(pi->
23500                     internal_tx_iqlo_cal_tapoff_intpa_nphy))
23501                         WRITE_RADIO_REG3(pi, RADIO_2057,
23502                                  TX, core,
23503                                  TSSIA, 0x31);
23504                     else
23505                         WRITE_RADIO_REG3(pi, RADIO_2057,
23506                                  TX, core,
23507                                  TSSIA, 0x21);
23508                 }
23509                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23510                          TSSI_MISC1, 0x00);
23511             } else {
23512                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23513                          TX_SSI_MASTER, 0x06);
23514                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23515                          IQCAL_VCM_HG, 0x43);
23516                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23517                          IQCAL_IDAC, 0x55);
23518                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23519                          TSSI_VCM, 0x00);
23520 
23521                 if (pi->pubpi.radiorev != 5)
23522                     WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23523                              core, TSSIA, 0x00);
23524                 if (pi->use_int_tx_iqlo_cal_nphy) {
23525                     WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23526                              core, TX_SSI_MUX,
23527                              0x06);
23528                     if (!(pi->
23529                     internal_tx_iqlo_cal_tapoff_intpa_nphy))
23530                         WRITE_RADIO_REG3(pi, RADIO_2057,
23531                                  TX, core,
23532                                  TSSIG, 0x31);
23533                     else
23534                         WRITE_RADIO_REG3(pi, RADIO_2057,
23535                                  TX, core,
23536                                  TSSIG, 0x21);
23537                 }
23538                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23539                          TSSI_MISC1, 0x00);
23540             }
23541         }
23542     } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23543 
23544         for (core = 0; core <= 1; core++) {
23545             jtag_core =
23546                 (core ==
23547                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23548 
23549             pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23550                 read_radio_reg(pi,
23551                            RADIO_2056_TX_TX_SSI_MASTER |
23552                            jtag_core);
23553 
23554             pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23555                 read_radio_reg(pi,
23556                            RADIO_2056_TX_IQCAL_VCM_HG |
23557                            jtag_core);
23558 
23559             pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23560                 read_radio_reg(pi,
23561                            RADIO_2056_TX_IQCAL_IDAC |
23562                            jtag_core);
23563 
23564             pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23565                 read_radio_reg(
23566                     pi,
23567                     RADIO_2056_TX_TSSI_VCM |
23568                     jtag_core);
23569 
23570             pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23571                 read_radio_reg(pi,
23572                            RADIO_2056_TX_TX_AMP_DET |
23573                            jtag_core);
23574 
23575             pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23576                 read_radio_reg(pi,
23577                            RADIO_2056_TX_TX_SSI_MUX |
23578                            jtag_core);
23579 
23580             pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23581                 read_radio_reg(pi,
23582                            RADIO_2056_TX_TSSIA | jtag_core);
23583 
23584             pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23585                 read_radio_reg(pi,
23586                            RADIO_2056_TX_TSSIG | jtag_core);
23587 
23588             pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23589                 read_radio_reg(pi,
23590                            RADIO_2056_TX_TSSI_MISC1 |
23591                            jtag_core);
23592 
23593             pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23594                 read_radio_reg(pi,
23595                            RADIO_2056_TX_TSSI_MISC2 |
23596                            jtag_core);
23597 
23598             pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23599                 read_radio_reg(pi,
23600                            RADIO_2056_TX_TSSI_MISC3 |
23601                            jtag_core);
23602 
23603             if (CHSPEC_IS5G(pi->radio_chanspec)) {
23604                 write_radio_reg(pi,
23605                         RADIO_2056_TX_TX_SSI_MASTER |
23606                         jtag_core, 0x0a);
23607                 write_radio_reg(pi,
23608                         RADIO_2056_TX_IQCAL_VCM_HG |
23609                         jtag_core, 0x40);
23610                 write_radio_reg(pi,
23611                         RADIO_2056_TX_IQCAL_IDAC |
23612                         jtag_core, 0x55);
23613                 write_radio_reg(pi,
23614                         RADIO_2056_TX_TSSI_VCM |
23615                         jtag_core, 0x00);
23616                 write_radio_reg(pi,
23617                         RADIO_2056_TX_TX_AMP_DET |
23618                         jtag_core, 0x00);
23619 
23620                 if (PHY_IPA(pi)) {
23621                     write_radio_reg(
23622                         pi,
23623                         RADIO_2056_TX_TX_SSI_MUX
23624                         | jtag_core, 0x4);
23625                     write_radio_reg(pi,
23626                             RADIO_2056_TX_TSSIA |
23627                             jtag_core, 0x1);
23628                 } else {
23629                     write_radio_reg(
23630                         pi,
23631                         RADIO_2056_TX_TX_SSI_MUX
23632                         | jtag_core, 0x00);
23633                     write_radio_reg(pi,
23634                             RADIO_2056_TX_TSSIA |
23635                             jtag_core, 0x2f);
23636                 }
23637                 write_radio_reg(pi,
23638                         RADIO_2056_TX_TSSIG | jtag_core,
23639                         0x00);
23640                 write_radio_reg(pi,
23641                         RADIO_2056_TX_TSSI_MISC1 |
23642                         jtag_core, 0x00);
23643 
23644                 write_radio_reg(pi,
23645                         RADIO_2056_TX_TSSI_MISC2 |
23646                         jtag_core, 0x00);
23647                 write_radio_reg(pi,
23648                         RADIO_2056_TX_TSSI_MISC3 |
23649                         jtag_core, 0x00);
23650             } else {
23651                 write_radio_reg(pi,
23652                         RADIO_2056_TX_TX_SSI_MASTER |
23653                         jtag_core, 0x06);
23654                 write_radio_reg(pi,
23655                         RADIO_2056_TX_IQCAL_VCM_HG |
23656                         jtag_core, 0x40);
23657                 write_radio_reg(pi,
23658                         RADIO_2056_TX_IQCAL_IDAC |
23659                         jtag_core, 0x55);
23660                 write_radio_reg(pi,
23661                         RADIO_2056_TX_TSSI_VCM |
23662                         jtag_core, 0x00);
23663                 write_radio_reg(pi,
23664                         RADIO_2056_TX_TX_AMP_DET |
23665                         jtag_core, 0x00);
23666                 write_radio_reg(pi,
23667                         RADIO_2056_TX_TSSIA | jtag_core,
23668                         0x00);
23669 
23670                 if (PHY_IPA(pi)) {
23671 
23672                     write_radio_reg(
23673                         pi,
23674                         RADIO_2056_TX_TX_SSI_MUX
23675                         | jtag_core, 0x06);
23676                     if (NREV_LT(pi->pubpi.phy_rev, 5))
23677                         write_radio_reg(
23678                             pi,
23679                             RADIO_2056_TX_TSSIG
23680                             | jtag_core,
23681                             0x11);
23682                     else
23683                         write_radio_reg(
23684                             pi,
23685                             RADIO_2056_TX_TSSIG
23686                             | jtag_core,
23687                             0x1);
23688                 } else {
23689                     write_radio_reg(
23690                         pi,
23691                         RADIO_2056_TX_TX_SSI_MUX
23692                         | jtag_core, 0x00);
23693                     write_radio_reg(pi,
23694                             RADIO_2056_TX_TSSIG |
23695                             jtag_core, 0x20);
23696                 }
23697 
23698                 write_radio_reg(pi,
23699                         RADIO_2056_TX_TSSI_MISC1 |
23700                         jtag_core, 0x00);
23701                 write_radio_reg(pi,
23702                         RADIO_2056_TX_TSSI_MISC2 |
23703                         jtag_core, 0x00);
23704                 write_radio_reg(pi,
23705                         RADIO_2056_TX_TSSI_MISC3 |
23706                         jtag_core, 0x00);
23707             }
23708         }
23709     } else {
23710 
23711         pi->tx_rx_cal_radio_saveregs[0] =
23712             read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23713         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23714         pi->tx_rx_cal_radio_saveregs[1] =
23715             read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23716         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23717 
23718         pi->tx_rx_cal_radio_saveregs[2] =
23719             read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23720         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23721         pi->tx_rx_cal_radio_saveregs[3] =
23722             read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23723         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23724 
23725         pi->tx_rx_cal_radio_saveregs[4] =
23726             read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23727         pi->tx_rx_cal_radio_saveregs[5] =
23728             read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23729 
23730         if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23731             0) {
23732 
23733             write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23734             write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23735         } else {
23736 
23737             write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23738             write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23739         }
23740 
23741         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23742 
23743             or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23744             or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23745         } else {
23746 
23747             and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23748             and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23749         }
23750     }
23751 }
23752 
23753 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23754 {
23755     u16 jtag_core, core;
23756 
23757     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23758         for (core = 0; core <= 1; core++) {
23759 
23760             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23761                      TX_SSI_MASTER,
23762                      pi->
23763                      tx_rx_cal_radio_saveregs[(core * 11) +
23764                                   0]);
23765 
23766             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23767                      pi->
23768                      tx_rx_cal_radio_saveregs[(core * 11) +
23769                                   1]);
23770 
23771             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23772                      pi->
23773                      tx_rx_cal_radio_saveregs[(core * 11) +
23774                                   2]);
23775 
23776             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23777                      pi->
23778                      tx_rx_cal_radio_saveregs[(core * 11) +
23779                                   3]);
23780 
23781             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23782                      pi->
23783                      tx_rx_cal_radio_saveregs[(core * 11) +
23784                                   5]);
23785 
23786             if (pi->pubpi.radiorev != 5)
23787                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23788                          TSSIA,
23789                          pi->tx_rx_cal_radio_saveregs
23790                                  [(core * 11) + 6]);
23791 
23792             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23793                      pi->
23794                      tx_rx_cal_radio_saveregs[(core * 11) +
23795                                   7]);
23796 
23797             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23798                      pi->
23799                      tx_rx_cal_radio_saveregs[(core * 11) +
23800                                   8]);
23801         }
23802     } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23803         for (core = 0; core <= 1; core++) {
23804             jtag_core = (core == PHY_CORE_0) ?
23805                      RADIO_2056_TX0 : RADIO_2056_TX1;
23806 
23807             write_radio_reg(pi,
23808                     RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23809                     pi->
23810                     tx_rx_cal_radio_saveregs[(core * 11) +
23811                                  0]);
23812 
23813             write_radio_reg(pi,
23814                     RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23815                     pi->
23816                     tx_rx_cal_radio_saveregs[(core * 11) +
23817                                  1]);
23818 
23819             write_radio_reg(pi,
23820                     RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23821                     pi->
23822                     tx_rx_cal_radio_saveregs[(core * 11) +
23823                                  2]);
23824 
23825             write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23826                     pi->
23827                     tx_rx_cal_radio_saveregs[(core * 11) +
23828                                  3]);
23829 
23830             write_radio_reg(pi,
23831                     RADIO_2056_TX_TX_AMP_DET | jtag_core,
23832                     pi->
23833                     tx_rx_cal_radio_saveregs[(core * 11) +
23834                                  4]);
23835 
23836             write_radio_reg(pi,
23837                     RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23838                     pi->
23839                     tx_rx_cal_radio_saveregs[(core * 11) +
23840                                  5]);
23841 
23842             write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23843                     pi->
23844                     tx_rx_cal_radio_saveregs[(core * 11) +
23845                                  6]);
23846 
23847             write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23848                     pi->
23849                     tx_rx_cal_radio_saveregs[(core * 11) +
23850                                  7]);
23851 
23852             write_radio_reg(pi,
23853                     RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23854                     pi->
23855                     tx_rx_cal_radio_saveregs[(core * 11) +
23856                                  8]);
23857 
23858             write_radio_reg(pi,
23859                     RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23860                     pi->
23861                     tx_rx_cal_radio_saveregs[(core * 11) +
23862                                  9]);
23863 
23864             write_radio_reg(pi,
23865                     RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23866                     pi->
23867                     tx_rx_cal_radio_saveregs[(core * 11) +
23868                                  10]);
23869         }
23870     } else {
23871 
23872         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23873                 pi->tx_rx_cal_radio_saveregs[0]);
23874         write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23875                 pi->tx_rx_cal_radio_saveregs[1]);
23876         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23877                 pi->tx_rx_cal_radio_saveregs[2]);
23878         write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23879                 pi->tx_rx_cal_radio_saveregs[3]);
23880         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23881                 pi->tx_rx_cal_radio_saveregs[4]);
23882         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23883                 pi->tx_rx_cal_radio_saveregs[5]);
23884     }
23885 }
23886 
23887 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23888 {
23889     u16 val, mask;
23890 
23891     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23892         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23893         pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23894 
23895         mask = ((0x3 << 8) | (0x3 << 10));
23896         val = (0x2 << 8);
23897         val |= (0x2 << 10);
23898         mod_phy_reg(pi, 0xa6, mask, val);
23899         mod_phy_reg(pi, 0xa7, mask, val);
23900 
23901         val = read_phy_reg(pi, 0x8f);
23902         pi->tx_rx_cal_phy_saveregs[2] = val;
23903         val |= ((0x1 << 9) | (0x1 << 10));
23904         write_phy_reg(pi, 0x8f, val);
23905 
23906         val = read_phy_reg(pi, 0xa5);
23907         pi->tx_rx_cal_phy_saveregs[3] = val;
23908         val |= ((0x1 << 9) | (0x1 << 10));
23909         write_phy_reg(pi, 0xa5, val);
23910 
23911         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23912         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23913 
23914         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23915                     &val);
23916         pi->tx_rx_cal_phy_saveregs[5] = val;
23917         val = 0;
23918         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23919                      &val);
23920 
23921         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23922                     &val);
23923         pi->tx_rx_cal_phy_saveregs[6] = val;
23924         val = 0;
23925         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23926                      &val);
23927 
23928         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23929         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23930 
23931         if (!(pi->use_int_tx_iqlo_cal_nphy))
23932             wlc_phy_rfctrlintc_override_nphy(
23933                 pi,
23934                 NPHY_RfctrlIntc_override_PA,
23935                 1,
23936                 RADIO_MIMO_CORESEL_CORE1
23937                 |
23938                 RADIO_MIMO_CORESEL_CORE2);
23939         else
23940             wlc_phy_rfctrlintc_override_nphy(
23941                 pi,
23942                 NPHY_RfctrlIntc_override_PA,
23943                 0,
23944                 RADIO_MIMO_CORESEL_CORE1
23945                 |
23946                 RADIO_MIMO_CORESEL_CORE2);
23947 
23948         wlc_phy_rfctrlintc_override_nphy(pi,
23949                          NPHY_RfctrlIntc_override_TRSW,
23950                          0x2, RADIO_MIMO_CORESEL_CORE1);
23951         wlc_phy_rfctrlintc_override_nphy(pi,
23952                          NPHY_RfctrlIntc_override_TRSW,
23953                          0x8, RADIO_MIMO_CORESEL_CORE2);
23954 
23955         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23956         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23957         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23958                 0x29b, (0x1 << 0), (0) << 0);
23959 
23960         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23961                 0x29b, (0x1 << 0), (0) << 0);
23962 
23963         if (NREV_IS(pi->pubpi.phy_rev, 7)
23964             || NREV_GE(pi->pubpi.phy_rev, 8))
23965             wlc_phy_rfctrl_override_nphy_rev7(
23966                 pi, (0x1 << 7),
23967                 wlc_phy_read_lpf_bw_ctl_nphy
23968                     (pi,
23969                     0), 0, 0,
23970                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23971 
23972         if (pi->use_int_tx_iqlo_cal_nphy
23973             && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23974 
23975             if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23976 
23977                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23978                           1 << 4);
23979 
23980                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23981                     mod_radio_reg(
23982                         pi,
23983                         RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23984                         1, 0);
23985                     mod_radio_reg(
23986                         pi,
23987                         RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23988                         1, 0);
23989                 } else {
23990                     mod_radio_reg(
23991                          pi,
23992                          RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23993                          1, 0);
23994                     mod_radio_reg(
23995                          pi,
23996                          RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23997                          1, 0);
23998                 }
23999             } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24000                 wlc_phy_rfctrl_override_nphy_rev7(
24001                     pi,
24002                     (0x1 << 3), 0,
24003                     0x3, 0,
24004                     NPHY_REV7_RFCTRLOVERRIDE_ID0);
24005             }
24006         }
24007     } else {
24008         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24009         pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24010 
24011         mask = ((0x3 << 12) | (0x3 << 14));
24012         val = (0x2 << 12);
24013         val |= (0x2 << 14);
24014         mod_phy_reg(pi, 0xa6, mask, val);
24015         mod_phy_reg(pi, 0xa7, mask, val);
24016 
24017         val = read_phy_reg(pi, 0xa5);
24018         pi->tx_rx_cal_phy_saveregs[2] = val;
24019         val |= ((0x1 << 12) | (0x1 << 13));
24020         write_phy_reg(pi, 0xa5, val);
24021 
24022         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24023                     &val);
24024         pi->tx_rx_cal_phy_saveregs[3] = val;
24025         val |= 0x2000;
24026         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24027                      &val);
24028 
24029         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24030                     &val);
24031         pi->tx_rx_cal_phy_saveregs[4] = val;
24032         val |= 0x2000;
24033         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24034                      &val);
24035 
24036         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24037         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24038         val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24039         write_phy_reg(pi, 0x91, val);
24040         write_phy_reg(pi, 0x92, val);
24041     }
24042 }
24043 
24044 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24045 {
24046     u16 mask;
24047 
24048     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24049         write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24050         write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24051         write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24052         write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24053         write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24054 
24055         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24056                      &pi->tx_rx_cal_phy_saveregs[5]);
24057         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24058                      &pi->tx_rx_cal_phy_saveregs[6]);
24059 
24060         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24061         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24062 
24063         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24064         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24065 
24066         if (NREV_IS(pi->pubpi.phy_rev, 7)
24067             || NREV_GE(pi->pubpi.phy_rev, 8))
24068             wlc_phy_rfctrl_override_nphy_rev7(
24069                 pi, (0x1 << 7), 0, 0,
24070                 1,
24071                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24072 
24073         wlc_phy_resetcca_nphy(pi);
24074 
24075         if (pi->use_int_tx_iqlo_cal_nphy
24076             && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24077 
24078             if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24079                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24080                     mod_radio_reg(
24081                         pi,
24082                         RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24083                         1, 1);
24084                     mod_radio_reg(
24085                         pi,
24086                         RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24087                         1, 1);
24088                 } else {
24089                     mod_radio_reg(
24090                          pi,
24091                          RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24092                          1, 1);
24093                     mod_radio_reg(
24094                          pi,
24095                          RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24096                          1, 1);
24097                 }
24098 
24099                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24100                           0);
24101             } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24102                 wlc_phy_rfctrl_override_nphy_rev7(
24103                     pi,
24104                     (0x1 << 3), 0,
24105                     0x3, 1,
24106                     NPHY_REV7_RFCTRLOVERRIDE_ID0);
24107             }
24108         }
24109     } else {
24110         mask = ((0x3 << 12) | (0x3 << 14));
24111         mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24112         mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24113         write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24114 
24115         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24116                      &pi->tx_rx_cal_phy_saveregs[3]);
24117 
24118         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24119                      &pi->tx_rx_cal_phy_saveregs[4]);
24120 
24121         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24122         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24123     }
24124 }
24125 
24126 void
24127 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24128 {
24129     u16 tssi_reg;
24130     s32 temp, pwrindex[2];
24131     s32 idle_tssi[2];
24132     s32 rssi_buf[4];
24133     s32 tssival[2];
24134     u8 tssi_type;
24135 
24136     tssi_reg = read_phy_reg(pi, 0x1e9);
24137 
24138     temp = (s32) (tssi_reg & 0x3f);
24139     idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24140 
24141     temp = (s32) ((tssi_reg >> 8) & 0x3f);
24142     idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24143 
24144     tssi_type =
24145         CHSPEC_IS5G(pi->radio_chanspec) ?
24146         (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24147 
24148     wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24149 
24150     tssival[0] = rssi_buf[0] / ((s32) num_samps);
24151     tssival[1] = rssi_buf[2] / ((s32) num_samps);
24152 
24153     pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24154     pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24155 
24156     if (pwrindex[0] < 0)
24157         pwrindex[0] = 0;
24158     else if (pwrindex[0] > 63)
24159         pwrindex[0] = 63;
24160 
24161     if (pwrindex[1] < 0)
24162         pwrindex[1] = 0;
24163     else if (pwrindex[1] > 63)
24164         pwrindex[1] = 63;
24165 
24166     wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24167                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24168     wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24169                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24170 }
24171 
24172 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24173 {
24174     int index;
24175     u32 bbmult_scale;
24176     u16 bbmult;
24177     u16 tblentry;
24178 
24179     static const struct nphy_txiqcal_ladder ladder_lo[] = {
24180         {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24181         {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24182         {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24183     };
24184 
24185     static const struct nphy_txiqcal_ladder ladder_iq[] = {
24186         {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24187         {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24188         {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24189     };
24190 
24191     bbmult = (core == PHY_CORE_0) ?
24192          ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24193          (pi->nphy_txcal_bbmult & 0xff);
24194 
24195     for (index = 0; index < 18; index++) {
24196         bbmult_scale = ladder_lo[index].percent * bbmult;
24197         bbmult_scale /= 100;
24198 
24199         tblentry =
24200             ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24201         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24202                      &tblentry);
24203 
24204         bbmult_scale = ladder_iq[index].percent * bbmult;
24205         bbmult_scale /= 100;
24206 
24207         tblentry =
24208             ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24209         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24210                      16, &tblentry);
24211     }
24212 }
24213 
24214 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24215 {
24216     u16 tmp;
24217     tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24218 
24219     tmp = (tmp & (0x7f << 8)) >> 8;
24220     return (u8) tmp;
24221 }
24222 
24223 static void
24224 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24225 {
24226     mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24227 
24228     if (NREV_GT(pi->pubpi.phy_rev, 1))
24229         mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24230 }
24231 
24232 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24233 {
24234     u16 m0m1;
24235 
24236     wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24237 
24238     return m0m1;
24239 }
24240 
24241 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24242 {
24243     u16 m0m1 = (u16) ((m0 << 8) | m1);
24244 
24245     wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24246     wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24247 }
24248 
24249 static void
24250 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24251                 struct nphy_papd_restore_state *state, u8 core)
24252 {
24253     s32 tone_freq;
24254     u8 off_core;
24255     u16 mixgain = 0;
24256 
24257     off_core = core ^ 0x1;
24258     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24259 
24260         if (NREV_IS(pi->pubpi.phy_rev, 7)
24261             || NREV_GE(pi->pubpi.phy_rev, 8))
24262             wlc_phy_rfctrl_override_nphy_rev7(
24263                 pi, (0x1 << 7),
24264                 wlc_phy_read_lpf_bw_ctl_nphy
24265                     (pi,
24266                     0), 0, 0,
24267                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24268 
24269         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24270             if (pi->pubpi.radiorev == 5)
24271                 mixgain = (core == 0) ? 0x20 : 0x00;
24272             else if ((pi->pubpi.radiorev == 7)
24273                  || (pi->pubpi.radiorev == 8))
24274                 mixgain = 0x00;
24275             else if ((pi->pubpi.radiorev <= 4)
24276                  || (pi->pubpi.radiorev == 6))
24277                 mixgain = 0x00;
24278         } else {
24279             if ((pi->pubpi.radiorev == 4) ||
24280                 (pi->pubpi.radiorev == 6))
24281                 mixgain = 0x50;
24282             else if ((pi->pubpi.radiorev == 3)
24283                  || (pi->pubpi.radiorev == 7)
24284                  || (pi->pubpi.radiorev == 8))
24285                 mixgain = 0x0;
24286         }
24287 
24288         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24289                           mixgain, (1 << core), 0,
24290                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24291 
24292         wlc_phy_rfctrl_override_1tomany_nphy(
24293             pi,
24294             NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24295             1, (1 << core), 0);
24296         wlc_phy_rfctrl_override_1tomany_nphy(
24297             pi,
24298             NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24299             0, (1 << off_core), 0);
24300 
24301         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24302                           0, 0x3, 0,
24303                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24304         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24305                           (1 << core), 0,
24306                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24307         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24308                           (1 << core), 0,
24309                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24310         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24311                           (1 << core), 0,
24312                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
24313         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24314                           (1 << core), 0,
24315                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24316         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24317                           (1 << core), 0,
24318                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24319         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24320                           (1 << core), 0,
24321                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24322         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24323                           (1 << core), 0,
24324                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24325 
24326         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24327                           0, (1 << core), 0,
24328                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24329         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24330                           (1 << core), 0,
24331                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24332 
24333         state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24334                             0xa6 : 0xa7);
24335         state->afeoverride[core] =
24336             read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24337         state->afectrl[off_core] =
24338             read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24339         state->afeoverride[off_core] =
24340             read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24341 
24342         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24343                 (0x1 << 2), 0);
24344         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24345                  0xa5), (0x1 << 2), (0x1 << 2));
24346 
24347         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24348                 (0x1 << 2), (0x1 << 2));
24349         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24350                  0x8f), (0x1 << 2), (0x1 << 2));
24351 
24352         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24353             state->pwrup[core] =
24354                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24355                         TXRXCOUPLE_2G_PWRUP);
24356             state->atten[core] =
24357                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24358                         TXRXCOUPLE_2G_ATTEN);
24359             state->pwrup[off_core] =
24360                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24361                         TXRXCOUPLE_2G_PWRUP);
24362             state->atten[off_core] =
24363                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24364                         TXRXCOUPLE_2G_ATTEN);
24365 
24366             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24367                      TXRXCOUPLE_2G_PWRUP, 0xc);
24368 
24369             if ((pi->pubpi.radiorev == 3) ||
24370                 (pi->pubpi.radiorev == 4) ||
24371                 (pi->pubpi.radiorev == 6))
24372                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24373                          TXRXCOUPLE_2G_ATTEN, 0xf0);
24374             else if (pi->pubpi.radiorev == 5)
24375                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24376                          TXRXCOUPLE_2G_ATTEN,
24377                          (core == 0) ? 0xf7 : 0xf2);
24378             else if ((pi->pubpi.radiorev == 7)
24379                  || (pi->pubpi.radiorev == 8))
24380                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24381                          TXRXCOUPLE_2G_ATTEN, 0xf0);
24382 
24383             WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24384                      TXRXCOUPLE_2G_PWRUP, 0x0);
24385             WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24386                      TXRXCOUPLE_2G_ATTEN, 0xff);
24387         } else {
24388             state->pwrup[core] =
24389                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24390                         TXRXCOUPLE_5G_PWRUP);
24391             state->atten[core] =
24392                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24393                         TXRXCOUPLE_5G_ATTEN);
24394             state->pwrup[off_core] =
24395                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24396                         TXRXCOUPLE_5G_PWRUP);
24397             state->atten[off_core] =
24398                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24399                         TXRXCOUPLE_5G_ATTEN);
24400 
24401             WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24402                      TXRXCOUPLE_5G_PWRUP, 0xc);
24403 
24404             if ((pi->pubpi.radiorev == 7)
24405                 || (pi->pubpi.radiorev == 8))
24406                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24407                          TXRXCOUPLE_5G_ATTEN, 0xf4);
24408 
24409             else
24410                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24411                          TXRXCOUPLE_5G_ATTEN, 0xf0);
24412 
24413             WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24414                      TXRXCOUPLE_5G_PWRUP, 0x0);
24415             WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24416                      TXRXCOUPLE_5G_ATTEN, 0xff);
24417         }
24418 
24419         tone_freq = 4000;
24420 
24421         wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24422 
24423         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24424                 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24425 
24426         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24427                 0x2a4, (0x1 << 13), (1) << 13);
24428 
24429         mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24430                 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24431 
24432         mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24433                 0x2a4, (0x1 << 13), (0) << 13);
24434 
24435     } else {
24436 
24437         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24438 
24439         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24440 
24441         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24442 
24443         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24444         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24445 
24446         state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24447                             0xa6 : 0xa7);
24448         state->afeoverride[core] =
24449             read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24450 
24451         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24452                 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24453         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24454                  0xa5),
24455                 (0x1 << 0) |
24456                 (0x1 << 1) |
24457                 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24458 
24459         state->vga_master[core] =
24460             READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24461         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24462         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24463             state->fbmix[core] =
24464                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24465                         TXFBMIX_G);
24466             state->intpa_master[core] =
24467                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24468                         INTPAG_MASTER);
24469 
24470             WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24471                      0x03);
24472             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24473                      INTPAG_MASTER, 0x04);
24474         } else {
24475             state->fbmix[core] =
24476                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24477                         TXFBMIX_A);
24478             state->intpa_master[core] =
24479                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24480                         INTPAA_MASTER);
24481 
24482             WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24483                      0x03);
24484             WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24485                      INTPAA_MASTER, 0x04);
24486 
24487         }
24488 
24489         tone_freq = 4000;
24490 
24491         wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24492 
24493         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24494                 0x29b, (0x1 << 0), (1) << 0);
24495 
24496         mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24497                 0x29b, (0x1 << 0), (0) << 0);
24498 
24499         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24500     }
24501 }
24502 
24503 static void
24504 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24505                   struct nphy_papd_restore_state *state)
24506 {
24507     u8 core;
24508 
24509     wlc_phy_stopplayback_nphy(pi);
24510 
24511     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24512 
24513         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24514 
24515             if (CHSPEC_IS2G(pi->radio_chanspec)) {
24516                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24517                          TXRXCOUPLE_2G_PWRUP, 0);
24518                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24519                          TXRXCOUPLE_2G_ATTEN,
24520                          state->atten[core]);
24521             } else {
24522                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24523                          TXRXCOUPLE_5G_PWRUP, 0);
24524                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24525                          TXRXCOUPLE_5G_ATTEN,
24526                          state->atten[core]);
24527             }
24528         }
24529 
24530         if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24531             wlc_phy_rfctrl_override_nphy_rev7(
24532                 pi, (0x1 << 2),
24533                 1, 0x3, 0,
24534                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24535         else
24536             wlc_phy_rfctrl_override_nphy_rev7(
24537                 pi, (0x1 << 2),
24538                 0, 0x3, 1,
24539                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24540 
24541         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24542                           0, 0x3, 1,
24543                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24544         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24545                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
24546         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24547                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
24548         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24549                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24550         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24551                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24552         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24553                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24554         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24555                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24556         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24557                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24558         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24559                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24560         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24561                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
24562         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24563                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24564         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24565                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24566         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24567                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24569                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24570         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24571                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24572         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24573                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
24574 
24575         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24576 
24577             write_phy_reg(pi, (core == PHY_CORE_0) ?
24578                       0xa6 : 0xa7, state->afectrl[core]);
24579             write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24580                       0xa5, state->afeoverride[core]);
24581         }
24582 
24583         wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24584                         (state->mm & 0xff));
24585 
24586         if (NREV_IS(pi->pubpi.phy_rev, 7)
24587             || NREV_GE(pi->pubpi.phy_rev, 8))
24588             wlc_phy_rfctrl_override_nphy_rev7(
24589                 pi, (0x1 << 7), 0, 0,
24590                 1,
24591                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24592     } else {
24593         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24594         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24595         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24596 
24597         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24598         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24599 
24600         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24601 
24602             WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24603                      state->vga_master[core]);
24604             if (CHSPEC_IS2G(pi->radio_chanspec)) {
24605                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24606                          TXFBMIX_G, state->fbmix[core]);
24607                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24608                          INTPAG_MASTER,
24609                          state->intpa_master[core]);
24610             } else {
24611                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24612                          TXFBMIX_A, state->fbmix[core]);
24613                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24614                          INTPAA_MASTER,
24615                          state->intpa_master[core]);
24616             }
24617 
24618             write_phy_reg(pi, (core == PHY_CORE_0) ?
24619                       0xa6 : 0xa7, state->afectrl[core]);
24620             write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24621                       0xa5, state->afeoverride[core]);
24622         }
24623 
24624         wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24625                         (state->mm & 0xff));
24626 
24627         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24628     }
24629 }
24630 
24631 static void
24632 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24633         u32 end)
24634 {
24635     u32 *buf, *src, *dst, sz;
24636 
24637     sz = end - start + 1;
24638 
24639     buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24640     if (NULL == buf)
24641         return;
24642 
24643     src = buf;
24644     dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24645 
24646     wlc_phy_table_read_nphy(pi,
24647                 (core ==
24648                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24649                  NPHY_TBL_ID_EPSILONTBL1),
24650                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24651 
24652     do {
24653         u32 phy_a1, phy_a2;
24654         s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24655 
24656         phy_a1 = end - min(end, (winsz >> 1));
24657         phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24658                    end + (winsz >> 1));
24659         phy_a3 = phy_a2 - phy_a1 + 1;
24660         phy_a6 = 0;
24661         phy_a7 = 0;
24662 
24663         do {
24664             wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24665                             &phy_a5);
24666             phy_a6 += phy_a4;
24667             phy_a7 += phy_a5;
24668         } while (phy_a2-- != phy_a1);
24669 
24670         phy_a6 /= phy_a3;
24671         phy_a7 /= phy_a3;
24672         dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24673     } while (end-- != start);
24674 
24675     wlc_phy_table_write_nphy(pi,
24676                  (core ==
24677                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24678                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24679 
24680     kfree(buf);
24681 }
24682 
24683 static void
24684 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24685         enum phy_cal_mode cal_mode, u8 core)
24686 {
24687     u16 phy_a1, phy_a2, phy_a3;
24688     u16 phy_a4, phy_a5;
24689     u8 phy_a7, m[2];
24690     u32 phy_a8 = 0;
24691     struct nphy_txgains phy_a9;
24692 
24693     if (NREV_LT(pi->pubpi.phy_rev, 3))
24694         return;
24695 
24696     phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24697 
24698     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24699 
24700         phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24701 
24702         if (CHSPEC_IS2G(pi->radio_chanspec))
24703             phy_a5 = ((phy_a9.txlpf[core] << 15) |
24704                   (phy_a9.txgm[core] << 12) |
24705                   (phy_a9.pga[core] << 8) |
24706                   (txgains->gains.pad[core] << 3) |
24707                   (phy_a9.ipa[core]));
24708         else
24709             phy_a5 = ((phy_a9.txlpf[core] << 15) |
24710                   (phy_a9.txgm[core] << 12) |
24711                   (txgains->gains.pga[core] << 8) |
24712                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24713 
24714         wlc_phy_rfctrl_override_1tomany_nphy(
24715             pi,
24716             NPHY_REV7_RfctrlOverride_cmd_txgain,
24717             phy_a5, (1 << core), 0);
24718 
24719         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720             if ((pi->pubpi.radiorev <= 4)
24721                 || (pi->pubpi.radiorev == 6))
24722                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24723                       60 : 79;
24724             else
24725                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24726                       45 : 64;
24727         } else {
24728             m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24729         }
24730 
24731         m[phy_a7] = 0;
24732         wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24733 
24734         phy_a2 = 63;
24735 
24736         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24737             if ((pi->pubpi.radiorev == 4)
24738                 || (pi->pubpi.radiorev == 6)) {
24739                 phy_a1 = 30;
24740                 phy_a3 = 30;
24741             } else {
24742                 phy_a1 = 25;
24743                 phy_a3 = 25;
24744             }
24745         } else {
24746             if ((pi->pubpi.radiorev == 5)
24747                 || (pi->pubpi.radiorev == 7)
24748                 || (pi->pubpi.radiorev == 8)) {
24749                 phy_a1 = 25;
24750                 phy_a3 = 25;
24751             } else {
24752                 phy_a1 = 35;
24753                 phy_a3 = 35;
24754             }
24755         }
24756 
24757         if (cal_mode == CAL_GCTRL) {
24758             if ((pi->pubpi.radiorev == 5)
24759                 && (CHSPEC_IS2G(pi->radio_chanspec)))
24760                 phy_a1 = 55;
24761             else if (((pi->pubpi.radiorev == 7) &&
24762                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24763                  ((pi->pubpi.radiorev == 8) &&
24764                   (CHSPEC_IS2G(pi->radio_chanspec))))
24765                 phy_a1 = 60;
24766             else
24767                 phy_a1 = 63;
24768 
24769         } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24770 
24771             phy_a1 = 35;
24772             phy_a3 = 35;
24773         }
24774 
24775         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24776                 0x29b, (0x1 << 0), (1) << 0);
24777 
24778         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24779                 0x29b, (0x1 << 0), (0) << 0);
24780 
24781         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24782                 0x2a4, (0x1 << 13), (1) << 13);
24783 
24784         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24785                 0x2a4, (0x1 << 13), (0) << 13);
24786 
24787         write_phy_reg(pi, 0x2a1, 0x80);
24788         write_phy_reg(pi, 0x2a2, 0x100);
24789 
24790         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24791                 0x2a4, (0x7 << 4), (11) << 4);
24792 
24793         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24794                 0x2a4, (0x7 << 8), (11) << 8);
24795 
24796         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24797                 0x2a4, (0x7 << 0), (0x3) << 0);
24798 
24799         write_phy_reg(pi, 0x2e5, 0x20);
24800 
24801         mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24802 
24803         mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24804 
24805         mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24806 
24807         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24808                           1, ((core == 0) ? 1 : 2), 0,
24809                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24810         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24811                           0, ((core == 0) ? 2 : 1), 0,
24812                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24813 
24814         write_phy_reg(pi, 0x2be, 1);
24815         SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24816 
24817         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24818                           0, 0x3, 0,
24819                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
24820 
24821         wlc_phy_table_write_nphy(pi,
24822                      (core ==
24823                       PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24824                      : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24825                      32, &phy_a8);
24826 
24827         if (cal_mode != CAL_GCTRL) {
24828             if (CHSPEC_IS5G(pi->radio_chanspec))
24829                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24830         }
24831 
24832         wlc_phy_rfctrl_override_1tomany_nphy(
24833             pi,
24834             NPHY_REV7_RfctrlOverride_cmd_txgain,
24835             phy_a5, (1 << core), 1);
24836 
24837     } else {
24838 
24839         if (txgains) {
24840             if (txgains->useindex) {
24841                 phy_a4 = 15 - ((txgains->index) >> 3);
24842                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24843                     if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24844                         pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24845                         phy_a5 = 0x10f7 | (phy_a4 << 8);
24846                     } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24847                         phy_a5 = 0x00f7 | (phy_a4 << 8);
24848                     } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24849                         phy_a5 = 0x10f7 | (phy_a4 << 8);
24850                     } else {
24851                         phy_a5 = 0x50f7 | (phy_a4 << 8);
24852                     }
24853                 } else {
24854                     phy_a5 = 0x70f7 | (phy_a4 << 8);
24855                 }
24856                 wlc_phy_rfctrl_override_nphy(pi,
24857                                  (0x1 << 13),
24858                                  phy_a5,
24859                                  (1 << core), 0);
24860             } else {
24861                 wlc_phy_rfctrl_override_nphy(pi,
24862                                  (0x1 << 13),
24863                                  0x5bf7,
24864                                  (1 << core), 0);
24865             }
24866         }
24867 
24868         if (CHSPEC_IS2G(pi->radio_chanspec))
24869             m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24870         else
24871             m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24872 
24873         m[phy_a7] = 0;
24874         wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24875 
24876         phy_a2 = 63;
24877 
24878         if (cal_mode == CAL_FULL) {
24879             phy_a1 = 25;
24880             phy_a3 = 25;
24881         } else if (cal_mode == CAL_SOFT) {
24882             phy_a1 = 25;
24883             phy_a3 = 25;
24884         } else if (cal_mode == CAL_GCTRL) {
24885             phy_a1 = 63;
24886             phy_a3 = 25;
24887         } else {
24888 
24889             phy_a1 = 25;
24890             phy_a3 = 25;
24891         }
24892 
24893         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24894                 0x29b, (0x1 << 0), (1) << 0);
24895 
24896         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24897                 0x29b, (0x1 << 0), (0) << 0);
24898 
24899         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24900             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24901                     0x2a4, (0x1 << 13), (1) << 13);
24902 
24903             mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24904                     0x2a4, (0x1 << 13), (0) << 13);
24905 
24906             write_phy_reg(pi, 0x2a1, 0x20);
24907             write_phy_reg(pi, 0x2a2, 0x60);
24908 
24909             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24910                     0x2a4, (0xf << 4), (9) << 4);
24911 
24912             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24913                     0x2a4, (0xf << 8), (9) << 8);
24914 
24915             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24916                     0x2a4, (0xf << 0), (0x2) << 0);
24917 
24918             write_phy_reg(pi, 0x2e5, 0x20);
24919         } else {
24920             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24921                     0x2a4, (0x1 << 11), (1) << 11);
24922 
24923             mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24924                     0x2a4, (0x1 << 11), (0) << 11);
24925 
24926             write_phy_reg(pi, 0x2a1, 0x80);
24927             write_phy_reg(pi, 0x2a2, 0x600);
24928 
24929             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24930                     0x2a4, (0x7 << 4), (0) << 4);
24931 
24932             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24933                     0x2a4, (0x7 << 8), (0) << 8);
24934 
24935             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24936                     0x2a4, (0x7 << 0), (0x3) << 0);
24937 
24938             mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24939 
24940         }
24941 
24942         mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24943 
24944         mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24945 
24946         mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24947 
24948         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24949 
24950         write_phy_reg(pi, 0x2be, 1);
24951         SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24952 
24953         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24954 
24955         wlc_phy_table_write_nphy(pi,
24956                      (core ==
24957                       PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24958                      : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24959                      32, &phy_a8);
24960 
24961         if (cal_mode != CAL_GCTRL)
24962             wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24963     }
24964 }
24965 
24966 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24967 {
24968     int phy_a1;
24969     int phy_a2;
24970     bool phy_a3;
24971     struct nphy_ipa_txcalgains phy_a4;
24972     bool phy_a5 = false;
24973     bool phy_a6 = true;
24974     s32 phy_a7, phy_a8;
24975     u32 phy_a9;
24976     int phy_a10;
24977     int phy_a12;
24978     u8 phy_a13 = 0;
24979     u8 phy_a14;
24980     u8 *phy_a15 = NULL;
24981 
24982     phy_a4.useindex = true;
24983     phy_a12 = start_gain;
24984 
24985     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24986 
24987         phy_a2 = 20;
24988         phy_a1 = 1;
24989 
24990         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24991             if (pi->pubpi.radiorev == 5) {
24992 
24993                 phy_a15 = pad_gain_codes_used_2057rev5;
24994                 phy_a13 =
24995                     ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
24996 
24997             } else if ((pi->pubpi.radiorev == 7)
24998                    || (pi->pubpi.radiorev == 8)) {
24999 
25000                 phy_a15 = pad_gain_codes_used_2057rev7;
25001                 phy_a13 =
25002                     ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25003 
25004             } else {
25005 
25006                 phy_a15 = pad_all_gain_codes_2057;
25007                 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25008                       1;
25009             }
25010 
25011         } else {
25012 
25013             phy_a15 = pga_all_gain_codes_2057;
25014             phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25015         }
25016 
25017         phy_a14 = 0;
25018 
25019         for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25020             if (CHSPEC_IS2G(pi->radio_chanspec))
25021                 phy_a4.gains.pad[core] =
25022                     (u16) phy_a15[phy_a12];
25023             else
25024                 phy_a4.gains.pga[core] =
25025                     (u16) phy_a15[phy_a12];
25026 
25027             wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25028 
25029             wlc_phy_table_read_nphy(pi,
25030                         (core ==
25031                          PHY_CORE_0 ?
25032                          NPHY_TBL_ID_EPSILONTBL0 :
25033                          NPHY_TBL_ID_EPSILONTBL1), 1,
25034                         63, 32, &phy_a9);
25035 
25036             wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25037 
25038             phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25039                   (phy_a8 == 4095) || (phy_a8 == -4096));
25040 
25041             if (!phy_a6 && (phy_a3 != phy_a5)) {
25042                 if (!phy_a3)
25043                     phy_a12 -= (u8) phy_a1;
25044                 break;
25045             }
25046 
25047             if (phy_a3)
25048                 phy_a12 += (u8) phy_a1;
25049             else
25050                 phy_a12 -= (u8) phy_a1;
25051 
25052             if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25053                 if (phy_a12 < phy_a14)
25054                     phy_a12 = phy_a14;
25055                 else
25056                     phy_a12 = phy_a13;
25057                 break;
25058             }
25059 
25060             phy_a6 = false;
25061             phy_a5 = phy_a3;
25062         }
25063 
25064     } else {
25065         phy_a2 = 10;
25066         phy_a1 = 8;
25067         for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25068             phy_a4.index = (u8) phy_a12;
25069             wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25070 
25071             wlc_phy_table_read_nphy(pi,
25072                         (core ==
25073                          PHY_CORE_0 ?
25074                          NPHY_TBL_ID_EPSILONTBL0 :
25075                          NPHY_TBL_ID_EPSILONTBL1), 1,
25076                         63, 32, &phy_a9);
25077 
25078             wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25079 
25080             phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25081                   (phy_a8 == 4095) || (phy_a8 == -4096));
25082 
25083             if (!phy_a6 && (phy_a3 != phy_a5)) {
25084                 if (!phy_a3)
25085                     phy_a12 -= (u8) phy_a1;
25086                 break;
25087             }
25088 
25089             if (phy_a3)
25090                 phy_a12 += (u8) phy_a1;
25091             else
25092                 phy_a12 -= (u8) phy_a1;
25093 
25094             if ((phy_a12 < 0) || (phy_a12 > 127)) {
25095                 if (phy_a12 < 0)
25096                     phy_a12 = 0;
25097                 else
25098                     phy_a12 = 127;
25099                 break;
25100             }
25101 
25102             phy_a6 = false;
25103             phy_a5 = phy_a3;
25104         }
25105 
25106     }
25107 
25108     if (NREV_GE(pi->pubpi.phy_rev, 7))
25109         return (u8) phy_a15[phy_a12];
25110     else
25111         return (u8) phy_a12;
25112 
25113 }
25114 
25115 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25116 {
25117     struct nphy_ipa_txcalgains phy_b1[2];
25118     struct nphy_papd_restore_state phy_b2;
25119     bool phy_b3;
25120     u8 phy_b4;
25121     u8 phy_b5;
25122     s16 phy_b6, phy_b7, phy_b8;
25123     u16 phy_b9;
25124     s16 phy_b10, phy_b11, phy_b12;
25125 
25126     phy_b11 = 0;
25127     phy_b12 = 0;
25128     phy_b7 = 0;
25129     phy_b8 = 0;
25130     phy_b6 = 0;
25131 
25132     if (pi->nphy_papd_skip == 1)
25133         return;
25134 
25135     phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25136             MCTL_EN_MAC));
25137     if (!phy_b3)
25138         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25139 
25140     wlc_phy_stay_in_carriersearch_nphy(pi, true);
25141 
25142     pi->nphy_force_papd_cal = false;
25143 
25144     for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25145         pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25146             wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25147 
25148     pi->nphy_papd_last_cal = pi->sh->now;
25149     pi->nphy_papd_recal_counter++;
25150 
25151     phy_b4 = pi->nphy_txpwrctrl;
25152     wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25153 
25154     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25155                  nphy_papd_scaltbl);
25156     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25157                  nphy_papd_scaltbl);
25158 
25159     phy_b9 = read_phy_reg(pi, 0x01);
25160     mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25161 
25162     for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25163         s32 i, val = 0;
25164         for (i = 0; i < 64; i++)
25165             wlc_phy_table_write_nphy(pi,
25166                          ((phy_b5 ==
25167                            PHY_CORE_0) ?
25168                           NPHY_TBL_ID_EPSILONTBL0 :
25169                           NPHY_TBL_ID_EPSILONTBL1), 1,
25170                          i, 32, &val);
25171     }
25172 
25173     wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25174 
25175     phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25176     for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25177         wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25178 
25179         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25180             if (CHSPEC_IS2G(pi->radio_chanspec)) {
25181                 if ((pi->pubpi.radiorev == 3)
25182                     || (pi->pubpi.radiorev == 4)
25183                     || (pi->pubpi.radiorev == 6)) {
25184                     pi->nphy_papd_cal_gain_index[phy_b5] =
25185                         23;
25186                 } else if (pi->pubpi.radiorev == 5) {
25187                     pi->nphy_papd_cal_gain_index[phy_b5] =
25188                         0;
25189                     pi->nphy_papd_cal_gain_index[phy_b5] =
25190                         wlc_phy_a3_nphy(
25191                             pi,
25192                             pi->
25193                             nphy_papd_cal_gain_index
25194                             [phy_b5],
25195                             phy_b5);
25196 
25197                 } else if ((pi->pubpi.radiorev == 7)
25198                        || (pi->pubpi.radiorev == 8)) {
25199 
25200                     pi->nphy_papd_cal_gain_index[phy_b5] =
25201                         0;
25202                     pi->nphy_papd_cal_gain_index[phy_b5] =
25203                         wlc_phy_a3_nphy(
25204                             pi,
25205                             pi->
25206                             nphy_papd_cal_gain_index
25207                             [phy_b5],
25208                             phy_b5);
25209 
25210                 }
25211 
25212                 phy_b1[phy_b5].gains.pad[phy_b5] =
25213                     pi->nphy_papd_cal_gain_index[phy_b5];
25214 
25215             } else {
25216                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25217                 pi->nphy_papd_cal_gain_index[phy_b5] =
25218                     wlc_phy_a3_nphy(
25219                         pi,
25220                         pi->
25221                         nphy_papd_cal_gain_index
25222                         [phy_b5], phy_b5);
25223                 phy_b1[phy_b5].gains.pga[phy_b5] =
25224                     pi->nphy_papd_cal_gain_index[phy_b5];
25225             }
25226         } else {
25227             phy_b1[phy_b5].useindex = true;
25228             phy_b1[phy_b5].index = 16;
25229             phy_b1[phy_b5].index =
25230                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25231                         phy_b5);
25232 
25233             pi->nphy_papd_cal_gain_index[phy_b5] =
25234                 15 - ((phy_b1[phy_b5].index) >> 3);
25235         }
25236 
25237         switch (pi->nphy_papd_cal_type) {
25238         case 0:
25239             wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25240             break;
25241         case 1:
25242             wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25243             break;
25244         }
25245 
25246         if (NREV_GE(pi->pubpi.phy_rev, 7))
25247             wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25248     }
25249 
25250     if (NREV_LT(pi->pubpi.phy_rev, 7))
25251         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25252 
25253     for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25254         int eps_offset = 0;
25255 
25256         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25257             if (CHSPEC_IS2G(pi->radio_chanspec)) {
25258                 if (pi->pubpi.radiorev == 3)
25259                     eps_offset = -2;
25260                 else if (pi->pubpi.radiorev == 5)
25261                     eps_offset = 3;
25262                 else
25263                     eps_offset = -1;
25264             } else {
25265                 eps_offset = 2;
25266             }
25267 
25268             if (CHSPEC_IS2G(pi->radio_chanspec)) {
25269                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25270                 phy_b10 = 0;
25271                 if ((pi->pubpi.radiorev == 3) ||
25272                     (pi->pubpi.radiorev == 4) ||
25273                     (pi->pubpi.radiorev == 6)) {
25274                     phy_b12 = -(
25275                         nphy_papd_padgain_dlt_2g_2057rev3n4
25276                                  [phy_b8] + 1) / 2;
25277                     phy_b10 = -1;
25278                 } else if (pi->pubpi.radiorev == 5) {
25279                     phy_b12 = -(
25280                         nphy_papd_padgain_dlt_2g_2057rev5
25281                                  [phy_b8] + 1) / 2;
25282                 } else if ((pi->pubpi.radiorev == 7) ||
25283                        (pi->pubpi.radiorev == 8)) {
25284                     phy_b12 = -(
25285                         nphy_papd_padgain_dlt_2g_2057rev7
25286                                  [phy_b8] + 1) / 2;
25287                 }
25288             } else {
25289                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25290                 if ((pi->pubpi.radiorev == 3) ||
25291                     (pi->pubpi.radiorev == 4) ||
25292                     (pi->pubpi.radiorev == 6))
25293                     phy_b11 =
25294                         -(nphy_papd_pgagain_dlt_5g_2057
25295                           [phy_b7]
25296                           + 1) / 2;
25297                 else if ((pi->pubpi.radiorev == 7)
25298                      || (pi->pubpi.radiorev == 8))
25299                     phy_b11 = -(
25300                           nphy_papd_pgagain_dlt_5g_2057rev7
25301                                  [phy_b7] + 1) / 2;
25302 
25303                 phy_b10 = -9;
25304             }
25305 
25306             if (CHSPEC_IS2G(pi->radio_chanspec))
25307                 phy_b6 =
25308                     -60 + 27 + eps_offset + phy_b12 +
25309                     phy_b10;
25310             else
25311                 phy_b6 =
25312                     -60 + 27 + eps_offset + phy_b11 +
25313                     phy_b10;
25314 
25315             mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25316                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25317 
25318             pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25319         } else {
25320             if (NREV_LT(pi->pubpi.phy_rev, 5))
25321                 eps_offset = 4;
25322             else
25323                 eps_offset = 2;
25324 
25325             phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25326 
25327             if (CHSPEC_IS2G(pi->radio_chanspec)) {
25328                 phy_b11 =
25329                     -(nphy_papd_pga_gain_delta_ipa_2g[
25330                           phy_b7] +
25331                       1) / 2;
25332                 phy_b10 = 0;
25333             } else {
25334                 phy_b11 =
25335                     -(nphy_papd_pga_gain_delta_ipa_5g[
25336                           phy_b7] +
25337                       1) / 2;
25338                 phy_b10 = -9;
25339             }
25340 
25341             phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25342 
25343             mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25344                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25345 
25346             pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25347         }
25348     }
25349 
25350     mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25351             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25352 
25353     mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25354             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25355 
25356     if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25357         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25358                 0x2a4, (0x1 << 13), (0) << 13);
25359 
25360         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25361                 0x2a4, (0x1 << 13), (0) << 13);
25362 
25363     } else {
25364         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25365                 0x2a4, (0x1 << 11), (0) << 11);
25366 
25367         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25368                 0x2a4, (0x1 << 11), (0) << 11);
25369 
25370     }
25371     pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25372 
25373     write_phy_reg(pi, 0x01, phy_b9);
25374 
25375     wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25376 
25377     wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25378     if (phy_b4 == PHY_TPC_HW_OFF) {
25379         wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25380                      (s8) (pi->nphy_txpwrindex[0].
25381                            index_internal), false);
25382         wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25383                      (s8) (pi->nphy_txpwrindex[1].
25384                            index_internal), false);
25385     }
25386 
25387     wlc_phy_stay_in_carriersearch_nphy(pi, false);
25388 
25389     if (!phy_b3)
25390         wlapi_enable_mac(pi->sh->physhim);
25391 }
25392 
25393 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25394 {
25395     struct nphy_txgains target_gain;
25396     u8 tx_pwr_ctrl_state;
25397     bool fullcal = true;
25398     bool restore_tx_gain = false;
25399     bool mphase;
25400 
25401     if (PHY_MUTED(pi))
25402         return;
25403 
25404     if (caltype == PHY_PERICAL_AUTO)
25405         fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25406     else if (caltype == PHY_PERICAL_PARTIAL)
25407         fullcal = false;
25408 
25409     if (pi->cal_type_override != PHY_PERICAL_AUTO)
25410         fullcal =
25411             (pi->cal_type_override ==
25412              PHY_PERICAL_FULL) ? true : false;
25413 
25414     if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25415         if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25416             wlc_phy_cal_perical_mphase_restart(pi);
25417     }
25418 
25419     if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25420         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25421 
25422     wlapi_suspend_mac_and_wait(pi->sh->physhim);
25423 
25424     wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25425 
25426     if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25427         (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25428         pi->nphy_cal_orig_pwr_idx[0] =
25429             (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25430         pi->nphy_cal_orig_pwr_idx[1] =
25431             (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25432 
25433         if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25434             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25435                         0x110, 16,
25436                         pi->nphy_cal_orig_tx_gain);
25437         } else {
25438             pi->nphy_cal_orig_tx_gain[0] = 0;
25439             pi->nphy_cal_orig_tx_gain[1] = 0;
25440         }
25441     }
25442     target_gain = wlc_phy_get_tx_gain_nphy(pi);
25443     tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25444     wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25445 
25446     if (pi->antsel_type == ANTSEL_2x3)
25447         wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25448 
25449     mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25450     if (!mphase) {
25451 
25452         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25453             wlc_phy_precal_txgain_nphy(pi);
25454             pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25455             restore_tx_gain = true;
25456 
25457             target_gain = pi->nphy_cal_target_gain;
25458         }
25459         if (0 ==
25460             wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25461                         mphase)) {
25462             if (PHY_IPA(pi))
25463                 wlc_phy_a4(pi, true);
25464 
25465             wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25466             wlapi_enable_mac(pi->sh->physhim);
25467             wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25468                          10000);
25469             wlapi_suspend_mac_and_wait(pi->sh->physhim);
25470             wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25471 
25472             if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25473                     (pi->first_cal_after_assoc ||
25474                     (pi->cal_type_override ==
25475                      PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25476                 wlc_phy_savecal_nphy(pi);
25477 
25478                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25479 
25480                 pi->nphy_perical_last = pi->sh->now;
25481             }
25482         }
25483         if (caltype != PHY_PERICAL_AUTO)
25484             wlc_phy_rssi_cal_nphy(pi);
25485 
25486         if (pi->first_cal_after_assoc
25487             || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25488             pi->first_cal_after_assoc = false;
25489             wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25490             wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25491         }
25492 
25493         if (NREV_GE(pi->pubpi.phy_rev, 3))
25494             wlc_phy_radio205x_vcocal_nphy(pi);
25495     } else {
25496         switch (pi->mphase_cal_phase_id) {
25497         case MPHASE_CAL_STATE_INIT:
25498             pi->nphy_perical_last = pi->sh->now;
25499             pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25500 
25501             if (NREV_GE(pi->pubpi.phy_rev, 3))
25502                 wlc_phy_precal_txgain_nphy(pi);
25503 
25504             pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25505             pi->mphase_cal_phase_id++;
25506             break;
25507 
25508         case MPHASE_CAL_STATE_TXPHASE0:
25509         case MPHASE_CAL_STATE_TXPHASE1:
25510         case MPHASE_CAL_STATE_TXPHASE2:
25511         case MPHASE_CAL_STATE_TXPHASE3:
25512         case MPHASE_CAL_STATE_TXPHASE4:
25513         case MPHASE_CAL_STATE_TXPHASE5:
25514             if ((pi->radar_percal_mask & 0x10) != 0)
25515                 pi->nphy_rxcal_active = true;
25516 
25517             if (wlc_phy_cal_txiqlo_nphy
25518                     (pi, pi->nphy_cal_target_gain, fullcal,
25519                     true) != 0) {
25520 
25521                 wlc_phy_cal_perical_mphase_reset(pi);
25522                 break;
25523             }
25524 
25525             if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25526                 (pi->mphase_cal_phase_id ==
25527                  MPHASE_CAL_STATE_TXPHASE4))
25528                 pi->mphase_cal_phase_id += 2;
25529             else
25530                 pi->mphase_cal_phase_id++;
25531             break;
25532 
25533         case MPHASE_CAL_STATE_PAPDCAL:
25534             if ((pi->radar_percal_mask & 0x2) != 0)
25535                 pi->nphy_rxcal_active = true;
25536 
25537             if (PHY_IPA(pi))
25538                 wlc_phy_a4(pi, true);
25539 
25540             pi->mphase_cal_phase_id++;
25541             break;
25542 
25543         case MPHASE_CAL_STATE_RXCAL:
25544             if ((pi->radar_percal_mask & 0x1) != 0)
25545                 pi->nphy_rxcal_active = true;
25546             if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25547                           (pi->first_cal_after_assoc ||
25548                            (pi->cal_type_override ==
25549                             PHY_PERICAL_FULL)) ? 2 : 0,
25550                           false) == 0)
25551                 wlc_phy_savecal_nphy(pi);
25552 
25553             pi->mphase_cal_phase_id++;
25554             break;
25555 
25556         case MPHASE_CAL_STATE_RSSICAL:
25557             if ((pi->radar_percal_mask & 0x4) != 0)
25558                 pi->nphy_rxcal_active = true;
25559             wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25560             wlc_phy_rssi_cal_nphy(pi);
25561 
25562             if (NREV_GE(pi->pubpi.phy_rev, 3))
25563                 wlc_phy_radio205x_vcocal_nphy(pi);
25564 
25565             restore_tx_gain = true;
25566 
25567             if (pi->first_cal_after_assoc)
25568                 pi->mphase_cal_phase_id++;
25569             else
25570                 wlc_phy_cal_perical_mphase_reset(pi);
25571 
25572             break;
25573 
25574         case MPHASE_CAL_STATE_IDLETSSI:
25575             if ((pi->radar_percal_mask & 0x8) != 0)
25576                 pi->nphy_rxcal_active = true;
25577 
25578             if (pi->first_cal_after_assoc) {
25579                 pi->first_cal_after_assoc = false;
25580                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25581                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25582             }
25583 
25584             wlc_phy_cal_perical_mphase_reset(pi);
25585             break;
25586 
25587         default:
25588             wlc_phy_cal_perical_mphase_reset(pi);
25589             break;
25590         }
25591     }
25592 
25593     if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25594         if (restore_tx_gain) {
25595             if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25596 
25597                 wlc_phy_txpwr_index_nphy(pi, 1,
25598                              pi->
25599                              nphy_cal_orig_pwr_idx
25600                              [0], false);
25601                 wlc_phy_txpwr_index_nphy(pi, 2,
25602                              pi->
25603                              nphy_cal_orig_pwr_idx
25604                              [1], false);
25605 
25606                 pi->nphy_txpwrindex[0].index = -1;
25607                 pi->nphy_txpwrindex[1].index = -1;
25608             } else {
25609                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25610                              (s8) (pi->
25611                                    nphy_txpwrindex
25612                                    [0].
25613                                    index_internal),
25614                              false);
25615                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25616                              (s8) (pi->
25617                                    nphy_txpwrindex
25618                                    [1].
25619                                    index_internal),
25620                              false);
25621             }
25622         }
25623     }
25624 
25625     wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25626     wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25627     wlapi_enable_mac(pi->sh->physhim);
25628 }
25629 
25630 int
25631 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25632             bool fullcal, bool mphase)
25633 {
25634     u16 val;
25635     u16 tbl_buf[11];
25636     u8 cal_cnt;
25637     u16 cal_cmd;
25638     u8 num_cals, max_cal_cmds;
25639     u16 core_no, cal_type;
25640     u16 diq_start = 0;
25641     u8 phy_bw;
25642     u16 max_val;
25643     u16 tone_freq;
25644     u16 gain_save[2];
25645     u16 cal_gain[2];
25646     struct nphy_iqcal_params cal_params[2];
25647     u32 tbl_len;
25648     const void *tbl_ptr;
25649     bool ladder_updated[2];
25650     u8 mphase_cal_lastphase = 0;
25651     int bcmerror = 0;
25652     bool phyhang_avoid_state = false;
25653 
25654     static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25655         0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25656         0x1902,
25657         0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25658         0x6407
25659     };
25660 
25661     static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25662         0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25663         0x3200,
25664         0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25665         0x6407
25666     };
25667 
25668     static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25669         0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25670         0x1202,
25671         0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25672         0x4707
25673     };
25674 
25675     static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25676         0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25677         0x2300,
25678         0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25679         0x4707
25680     };
25681 
25682     static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25683         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25684         0x0000
25685     };
25686 
25687     static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25688         0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25689         0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25690     };
25691 
25692     static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25693         0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25694         0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25695     };
25696 
25697     static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25698         0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25699         0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25700         0x0000
25701     };
25702 
25703     static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25704         0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25705         0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25706     };
25707 
25708     static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25709         0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25710         0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25711     };
25712 
25713     wlc_phy_stay_in_carriersearch_nphy(pi, true);
25714 
25715     if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25716         phyhang_avoid_state = pi->phyhang_avoid;
25717         pi->phyhang_avoid = false;
25718     }
25719 
25720     if (CHSPEC_IS40(pi->radio_chanspec))
25721         phy_bw = 40;
25722     else
25723         phy_bw = 20;
25724 
25725     wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25726 
25727     for (core_no = 0; core_no <= 1; core_no++) {
25728         wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25729                           &cal_params[core_no]);
25730         cal_gain[core_no] = cal_params[core_no].cal_gain;
25731     }
25732 
25733     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25734 
25735     wlc_phy_txcal_radio_setup_nphy(pi);
25736 
25737     wlc_phy_txcal_physetup_nphy(pi);
25738 
25739     ladder_updated[0] = ladder_updated[1] = false;
25740     if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25741           (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25742            && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25743 
25744         if (phy_bw == 40) {
25745             tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25746             tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25747         } else {
25748             tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25749             tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25750         }
25751         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25752                      16, tbl_ptr);
25753 
25754         if (phy_bw == 40) {
25755             tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25756             tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25757         } else {
25758             tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25759             tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25760         }
25761         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25762                      16, tbl_ptr);
25763     }
25764 
25765     if (NREV_GE(pi->pubpi.phy_rev, 7))
25766         write_phy_reg(pi, 0xc2, 0x8ad9);
25767     else
25768         write_phy_reg(pi, 0xc2, 0x8aa9);
25769 
25770     max_val = 250;
25771     tone_freq = (phy_bw == 20) ? 2500 : 5000;
25772 
25773     if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25774         wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25775         bcmerror = 0;
25776     } else {
25777         bcmerror =
25778             wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25779                          false);
25780     }
25781 
25782     if (bcmerror == 0) {
25783 
25784         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25785             tbl_ptr = pi->mphase_txcal_bestcoeffs;
25786             tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25787             if (NREV_LT(pi->pubpi.phy_rev, 3))
25788                 tbl_len -= 2;
25789         } else {
25790             if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25791 
25792                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25793                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25794                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25795                     tbl_len -= 2;
25796             } else {
25797 
25798                 fullcal = true;
25799 
25800                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25801                     tbl_ptr =
25802                         tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25803                     tbl_len = ARRAY_SIZE(
25804                        tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25805                 } else {
25806                     tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25807                     tbl_len = ARRAY_SIZE(
25808                             tbl_tx_iqlo_cal_startcoefs);
25809                 }
25810             }
25811         }
25812         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25813                      16, tbl_ptr);
25814 
25815         if (fullcal) {
25816             max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25817                        ARRAY_SIZE(
25818                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25819                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25820         } else {
25821             max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25822                        ARRAY_SIZE(
25823                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25824                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25825         }
25826 
25827         if (mphase) {
25828             cal_cnt = pi->mphase_txcal_cmdidx;
25829             if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25830                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25831             else
25832                 num_cals = max_cal_cmds;
25833         } else {
25834             cal_cnt = 0;
25835             num_cals = max_cal_cmds;
25836         }
25837 
25838         for (; cal_cnt < num_cals; cal_cnt++) {
25839 
25840             if (fullcal) {
25841                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25842                       tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25843                       [cal_cnt] :
25844                       tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25845             } else {
25846                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25847                       tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25848                     cal_cnt]
25849                       : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25850             }
25851 
25852             core_no = ((cal_cmd & 0x3000) >> 12);
25853             cal_type = ((cal_cmd & 0x0F00) >> 8);
25854 
25855             if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25856                 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25857                  PHY_IPA(pi)
25858                  && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25859                 if (!ladder_updated[core_no]) {
25860                     wlc_phy_update_txcal_ladder_nphy(
25861                         pi,
25862                         core_no);
25863                     ladder_updated[core_no] = true;
25864                 }
25865             }
25866 
25867             val =
25868                 (cal_params[core_no].
25869                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
25870             write_phy_reg(pi, 0xc1, val);
25871 
25872             if ((cal_type == 1) || (cal_type == 3)
25873                 || (cal_type == 4)) {
25874 
25875                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25876                             1, 69 + core_no, 16,
25877                             tbl_buf);
25878 
25879                 diq_start = tbl_buf[0];
25880 
25881                 tbl_buf[0] = 0;
25882                 wlc_phy_table_write_nphy(pi,
25883                              NPHY_TBL_ID_IQLOCAL, 1,
25884                              69 + core_no, 16,
25885                              tbl_buf);
25886             }
25887 
25888             write_phy_reg(pi, 0xc0, cal_cmd);
25889 
25890             SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25891                  20000);
25892             if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25893                  "HW error: txiq calib"))
25894                 return -EIO;
25895 
25896             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25897                         tbl_len, 96, 16, tbl_buf);
25898             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25899                          tbl_len, 64, 16, tbl_buf);
25900 
25901             if ((cal_type == 1) || (cal_type == 3)
25902                 || (cal_type == 4)) {
25903 
25904                 tbl_buf[0] = diq_start;
25905 
25906             }
25907 
25908         }
25909 
25910         if (mphase) {
25911             pi->mphase_txcal_cmdidx = num_cals;
25912             if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25913                 pi->mphase_txcal_cmdidx = 0;
25914         }
25915 
25916         mphase_cal_lastphase =
25917             (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25918             MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25919 
25920         if (!mphase
25921             || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25922 
25923             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25924                         16, tbl_buf);
25925             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25926                          16, tbl_buf);
25927 
25928             if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25929 
25930                 tbl_buf[0] = 0;
25931                 tbl_buf[1] = 0;
25932                 tbl_buf[2] = 0;
25933                 tbl_buf[3] = 0;
25934 
25935             }
25936             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25937                          16, tbl_buf);
25938 
25939             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25940                         16, tbl_buf);
25941             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25942                          16, tbl_buf);
25943 
25944             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25945                          16, tbl_buf);
25946 
25947             tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25948             if (NREV_LT(pi->pubpi.phy_rev, 3))
25949                 tbl_len -= 2;
25950 
25951             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25952                         tbl_len, 96, 16,
25953                         pi->nphy_txiqlocal_bestc);
25954 
25955             pi->nphy_txiqlocal_coeffsvalid = true;
25956             pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25957         } else {
25958             tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25959             if (NREV_LT(pi->pubpi.phy_rev, 3))
25960                 tbl_len -= 2;
25961 
25962             wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25963                         tbl_len, 96, 16,
25964                         pi->mphase_txcal_bestcoeffs);
25965         }
25966 
25967         wlc_phy_stopplayback_nphy(pi);
25968 
25969         write_phy_reg(pi, 0xc2, 0x0000);
25970 
25971     }
25972 
25973     wlc_phy_txcal_phycleanup_nphy(pi);
25974 
25975     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25976                  gain_save);
25977 
25978     wlc_phy_txcal_radio_cleanup_nphy(pi);
25979 
25980     if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25981         if (!mphase
25982             || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
25983             wlc_phy_tx_iq_war_nphy(pi);
25984     }
25985 
25986     if (NREV_GE(pi->pubpi.phy_rev, 4))
25987         pi->phyhang_avoid = phyhang_avoid_state;
25988 
25989     wlc_phy_stay_in_carriersearch_nphy(pi, false);
25990 
25991     return bcmerror;
25992 }
25993 
25994 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
25995 {
25996     u16 tbl_buf[7];
25997 
25998     if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
25999         (pi->nphy_txiqlocal_coeffsvalid)) {
26000         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26001                     ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26002 
26003         if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26004             (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26005             (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26006             (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26007 
26008             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26009                          16, pi->nphy_txiqlocal_bestc);
26010 
26011             tbl_buf[0] = 0;
26012             tbl_buf[1] = 0;
26013             tbl_buf[2] = 0;
26014             tbl_buf[3] = 0;
26015             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26016                          16, tbl_buf);
26017 
26018             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26019                          16,
26020                          &pi->nphy_txiqlocal_bestc[5]);
26021 
26022             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26023                          16,
26024                          &pi->nphy_txiqlocal_bestc[5]);
26025         }
26026     }
26027 }
26028 
26029 void
26030 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26031               struct nphy_iq_comp *pcomp)
26032 {
26033     if (write) {
26034         write_phy_reg(pi, 0x9a, pcomp->a0);
26035         write_phy_reg(pi, 0x9b, pcomp->b0);
26036         write_phy_reg(pi, 0x9c, pcomp->a1);
26037         write_phy_reg(pi, 0x9d, pcomp->b1);
26038     } else {
26039         pcomp->a0 = read_phy_reg(pi, 0x9a);
26040         pcomp->b0 = read_phy_reg(pi, 0x9b);
26041         pcomp->a1 = read_phy_reg(pi, 0x9c);
26042         pcomp->b1 = read_phy_reg(pi, 0x9d);
26043     }
26044 }
26045 
26046 void
26047 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26048                u16 num_samps, u8 wait_time, u8 wait_for_crs)
26049 {
26050     u8 core;
26051 
26052     write_phy_reg(pi, 0x12b, num_samps);
26053     mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26054     mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26055             (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26056 
26057     mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26058 
26059     SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26060          10000);
26061     if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26062          "HW error: rxiq est"))
26063         return;
26064 
26065     if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26066         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26067             est[core].i_pwr =
26068                 (read_phy_reg(pi,
26069                           NPHY_IqestipwrAccHi(core)) << 16)
26070                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26071             est[core].q_pwr =
26072                 (read_phy_reg(pi,
26073                           NPHY_IqestqpwrAccHi(core)) << 16)
26074                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26075             est[core].iq_prod =
26076                 (read_phy_reg(pi,
26077                           NPHY_IqestIqAccHi(core)) << 16) |
26078                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26079         }
26080     }
26081 }
26082 
26083 #define CAL_RETRY_CNT 2
26084 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26085 {
26086     u8 curr_core;
26087     struct phy_iq_est est[PHY_CORE_MAX];
26088     struct nphy_iq_comp old_comp, new_comp;
26089     s32 iq = 0;
26090     u32 ii = 0, qq = 0;
26091     s16 iq_nbits, qq_nbits, brsh, arsh;
26092     s32 a, b, temp;
26093     int bcmerror = 0;
26094     uint cal_retry = 0;
26095 
26096     if (core_mask == 0x0)
26097         return;
26098 
26099     wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26100     new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26101     wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26102 
26103 cal_try:
26104     wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26105 
26106     new_comp = old_comp;
26107 
26108     for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26109 
26110         if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26111             iq = est[curr_core].iq_prod;
26112             ii = est[curr_core].i_pwr;
26113             qq = est[curr_core].q_pwr;
26114         } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26115             iq = est[curr_core].iq_prod;
26116             ii = est[curr_core].i_pwr;
26117             qq = est[curr_core].q_pwr;
26118         } else {
26119             continue;
26120         }
26121 
26122         if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26123             bcmerror = -EBADE;
26124             break;
26125         }
26126 
26127         iq_nbits = wlc_phy_nbits(iq);
26128         qq_nbits = wlc_phy_nbits(qq);
26129 
26130         arsh = 10 - (30 - iq_nbits);
26131         if (arsh >= 0) {
26132             a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26133             temp = (s32) (ii >> arsh);
26134             if (temp == 0) {
26135                 bcmerror = -EBADE;
26136                 break;
26137             }
26138         } else {
26139             a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26140             temp = (s32) (ii << -arsh);
26141             if (temp == 0) {
26142                 bcmerror = -EBADE;
26143                 break;
26144             }
26145         }
26146 
26147         a /= temp;
26148 
26149         brsh = qq_nbits - 31 + 20;
26150         if (brsh >= 0) {
26151             b = (qq << (31 - qq_nbits));
26152             temp = (s32) (ii >> brsh);
26153             if (temp == 0) {
26154                 bcmerror = -EBADE;
26155                 break;
26156             }
26157         } else {
26158             b = (qq << (31 - qq_nbits));
26159             temp = (s32) (ii << -brsh);
26160             if (temp == 0) {
26161                 bcmerror = -EBADE;
26162                 break;
26163             }
26164         }
26165         b /= temp;
26166         b -= a * a;
26167         b = (s32) int_sqrt((unsigned long) b);
26168         b -= (1 << 10);
26169 
26170         if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26171             if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26172                 new_comp.a0 = (s16) a & 0x3ff;
26173                 new_comp.b0 = (s16) b & 0x3ff;
26174             } else {
26175 
26176                 new_comp.a0 = (s16) b & 0x3ff;
26177                 new_comp.b0 = (s16) a & 0x3ff;
26178             }
26179         }
26180         if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26181             if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26182                 new_comp.a1 = (s16) a & 0x3ff;
26183                 new_comp.b1 = (s16) b & 0x3ff;
26184             } else {
26185 
26186                 new_comp.a1 = (s16) b & 0x3ff;
26187                 new_comp.b1 = (s16) a & 0x3ff;
26188             }
26189         }
26190     }
26191 
26192     if (bcmerror != 0) {
26193         pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26194 
26195         if (cal_retry < CAL_RETRY_CNT) {
26196             cal_retry++;
26197             goto cal_try;
26198         }
26199 
26200         new_comp = old_comp;
26201     }
26202 
26203     wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26204 }
26205 
26206 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26207 {
26208     u16 offtune_val;
26209     u16 bias_g = 0;
26210     u16 bias_a = 0;
26211 
26212     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26213         if (rx_core == PHY_CORE_0) {
26214             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26215                 pi->tx_rx_cal_radio_saveregs[0] =
26216                     read_radio_reg(pi,
26217                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26218                 pi->tx_rx_cal_radio_saveregs[1] =
26219                     read_radio_reg(pi,
26220                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26221 
26222                 write_radio_reg(pi,
26223                     RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26224                     0x3);
26225                 write_radio_reg(pi,
26226                     RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26227                     0xaf);
26228 
26229             } else {
26230                 pi->tx_rx_cal_radio_saveregs[0] =
26231                     read_radio_reg(pi,
26232                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26233                 pi->tx_rx_cal_radio_saveregs[1] =
26234                     read_radio_reg(pi,
26235                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26236 
26237                 write_radio_reg(
26238                     pi,
26239                     RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26240                     0x3);
26241                 write_radio_reg(
26242                     pi,
26243                     RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26244                     0x7f);
26245             }
26246 
26247         } else {
26248             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26249                 pi->tx_rx_cal_radio_saveregs[0] =
26250                     read_radio_reg(pi,
26251                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26252                 pi->tx_rx_cal_radio_saveregs[1] =
26253                     read_radio_reg(pi,
26254                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26255 
26256                 write_radio_reg(
26257                     pi,
26258                     RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26259                     0x3);
26260                 write_radio_reg(
26261                     pi,
26262                     RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26263                     0xaf);
26264 
26265             } else {
26266                 pi->tx_rx_cal_radio_saveregs[0] =
26267                     read_radio_reg(pi,
26268                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26269                 pi->tx_rx_cal_radio_saveregs[1] =
26270                     read_radio_reg(pi,
26271                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26272 
26273                 write_radio_reg(pi,
26274                     RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26275                     0x3);
26276                 write_radio_reg(pi,
26277                     RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26278                     0x7f);
26279             }
26280         }
26281 
26282     } else {
26283         if (rx_core == PHY_CORE_0) {
26284             pi->tx_rx_cal_radio_saveregs[0] =
26285                 read_radio_reg(pi,
26286                            RADIO_2056_TX_RXIQCAL_TXMUX |
26287                            RADIO_2056_TX1);
26288             pi->tx_rx_cal_radio_saveregs[1] =
26289                 read_radio_reg(pi,
26290                            RADIO_2056_RX_RXIQCAL_RXMUX |
26291                            RADIO_2056_RX0);
26292 
26293             if (pi->pubpi.radiorev >= 5) {
26294                 pi->tx_rx_cal_radio_saveregs[2] =
26295                     read_radio_reg(pi,
26296                                RADIO_2056_RX_RXSPARE2 |
26297                                RADIO_2056_RX0);
26298                 pi->tx_rx_cal_radio_saveregs[3] =
26299                     read_radio_reg(pi,
26300                                RADIO_2056_TX_TXSPARE2 |
26301                                RADIO_2056_TX1);
26302             }
26303 
26304             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26305 
26306                 if (pi->pubpi.radiorev >= 5) {
26307                     pi->tx_rx_cal_radio_saveregs[4] =
26308                         read_radio_reg(pi,
26309                               RADIO_2056_RX_LNAA_MASTER
26310                               | RADIO_2056_RX0);
26311 
26312                     write_radio_reg(
26313                         pi,
26314                         RADIO_2056_RX_LNAA_MASTER
26315                         | RADIO_2056_RX0, 0x40);
26316 
26317                     write_radio_reg(pi,
26318                         RADIO_2056_TX_TXSPARE2 |
26319                         RADIO_2056_TX1, bias_a);
26320 
26321                     write_radio_reg(pi,
26322                         RADIO_2056_RX_RXSPARE2 |
26323                         RADIO_2056_RX0, bias_a);
26324                 } else {
26325                     pi->tx_rx_cal_radio_saveregs[4] =
26326                         read_radio_reg(pi,
26327                             RADIO_2056_RX_LNAA_TUNE
26328                             | RADIO_2056_RX0);
26329 
26330                     offtune_val =
26331                         (pi->tx_rx_cal_radio_saveregs
26332                          [2] & 0xF0) >> 8;
26333                     offtune_val =
26334                         (offtune_val <= 0x7) ? 0xF : 0;
26335 
26336                     mod_radio_reg(pi,
26337                               RADIO_2056_RX_LNAA_TUNE |
26338                               RADIO_2056_RX0, 0xF0,
26339                               (offtune_val << 8));
26340                 }
26341 
26342                 write_radio_reg(pi,
26343                         RADIO_2056_TX_RXIQCAL_TXMUX |
26344                         RADIO_2056_TX1, 0x9);
26345                 write_radio_reg(pi,
26346                         RADIO_2056_RX_RXIQCAL_RXMUX |
26347                         RADIO_2056_RX0, 0x9);
26348             } else {
26349                 if (pi->pubpi.radiorev >= 5) {
26350                     pi->tx_rx_cal_radio_saveregs[4] =
26351                         read_radio_reg(
26352                               pi,
26353                               RADIO_2056_RX_LNAG_MASTER
26354                             | RADIO_2056_RX0);
26355 
26356                     write_radio_reg(
26357                         pi,
26358                         RADIO_2056_RX_LNAG_MASTER
26359                         | RADIO_2056_RX0, 0x40);
26360 
26361                     write_radio_reg(
26362                         pi,
26363                         RADIO_2056_TX_TXSPARE2
26364                         |
26365                         RADIO_2056_TX1, bias_g);
26366 
26367                     write_radio_reg(
26368                         pi,
26369                         RADIO_2056_RX_RXSPARE2
26370                         |
26371                         RADIO_2056_RX0, bias_g);
26372 
26373                 } else {
26374                     pi->tx_rx_cal_radio_saveregs[4] =
26375                         read_radio_reg(
26376                             pi,
26377                             RADIO_2056_RX_LNAG_TUNE
26378                             | RADIO_2056_RX0);
26379 
26380                     offtune_val =
26381                         (pi->
26382                          tx_rx_cal_radio_saveregs[2] &
26383                          0xF0) >> 8;
26384                     offtune_val =
26385                         (offtune_val <= 0x7) ? 0xF : 0;
26386 
26387                     mod_radio_reg(pi,
26388                               RADIO_2056_RX_LNAG_TUNE |
26389                               RADIO_2056_RX0, 0xF0,
26390                               (offtune_val << 8));
26391                 }
26392 
26393                 write_radio_reg(pi,
26394                         RADIO_2056_TX_RXIQCAL_TXMUX |
26395                         RADIO_2056_TX1, 0x6);
26396                 write_radio_reg(pi,
26397                         RADIO_2056_RX_RXIQCAL_RXMUX |
26398                         RADIO_2056_RX0, 0x6);
26399             }
26400 
26401         } else {
26402             pi->tx_rx_cal_radio_saveregs[0] =
26403                 read_radio_reg(pi,
26404                            RADIO_2056_TX_RXIQCAL_TXMUX |
26405                            RADIO_2056_TX0);
26406             pi->tx_rx_cal_radio_saveregs[1] =
26407                 read_radio_reg(pi,
26408                            RADIO_2056_RX_RXIQCAL_RXMUX |
26409                            RADIO_2056_RX1);
26410 
26411             if (pi->pubpi.radiorev >= 5) {
26412                 pi->tx_rx_cal_radio_saveregs[2] =
26413                     read_radio_reg(pi,
26414                                RADIO_2056_RX_RXSPARE2 |
26415                                RADIO_2056_RX1);
26416                 pi->tx_rx_cal_radio_saveregs[3] =
26417                     read_radio_reg(pi,
26418                                RADIO_2056_TX_TXSPARE2 |
26419                                RADIO_2056_TX0);
26420             }
26421 
26422             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26423 
26424                 if (pi->pubpi.radiorev >= 5) {
26425                     pi->tx_rx_cal_radio_saveregs[4] =
26426                         read_radio_reg(
26427                                pi,
26428                                RADIO_2056_RX_LNAA_MASTER
26429                                | RADIO_2056_RX1);
26430 
26431                     write_radio_reg(
26432                         pi,
26433                         RADIO_2056_RX_LNAA_MASTER |
26434                         RADIO_2056_RX1, 0x40);
26435 
26436                     write_radio_reg(
26437                         pi,
26438                         RADIO_2056_TX_TXSPARE2
26439                         |
26440                         RADIO_2056_TX0, bias_a);
26441 
26442                     write_radio_reg(
26443                         pi,
26444                         RADIO_2056_RX_RXSPARE2
26445                         |
26446                         RADIO_2056_RX1, bias_a);
26447                 } else {
26448                     pi->tx_rx_cal_radio_saveregs[4] =
26449                         read_radio_reg(
26450                             pi,
26451                             RADIO_2056_RX_LNAA_TUNE
26452                             | RADIO_2056_RX1);
26453 
26454                     offtune_val =
26455                         (pi->
26456                          tx_rx_cal_radio_saveregs[2] &
26457                          0xF0) >> 8;
26458                     offtune_val =
26459                         (offtune_val <= 0x7) ? 0xF : 0;
26460 
26461                     mod_radio_reg(pi,
26462                               RADIO_2056_RX_LNAA_TUNE |
26463                               RADIO_2056_RX1, 0xF0,
26464                               (offtune_val << 8));
26465                 }
26466 
26467                 write_radio_reg(pi,
26468                         RADIO_2056_TX_RXIQCAL_TXMUX |
26469                         RADIO_2056_TX0, 0x9);
26470                 write_radio_reg(pi,
26471                         RADIO_2056_RX_RXIQCAL_RXMUX |
26472                         RADIO_2056_RX1, 0x9);
26473             } else {
26474                 if (pi->pubpi.radiorev >= 5) {
26475                     pi->tx_rx_cal_radio_saveregs[4] =
26476                         read_radio_reg(
26477                               pi,
26478                               RADIO_2056_RX_LNAG_MASTER
26479                             | RADIO_2056_RX1);
26480 
26481                     write_radio_reg(
26482                         pi,
26483                         RADIO_2056_RX_LNAG_MASTER
26484                         | RADIO_2056_RX1, 0x40);
26485 
26486                     write_radio_reg(
26487                         pi,
26488                         RADIO_2056_TX_TXSPARE2
26489                         |
26490                         RADIO_2056_TX0, bias_g);
26491 
26492                     write_radio_reg(
26493                         pi,
26494                         RADIO_2056_RX_RXSPARE2
26495                         |
26496                         RADIO_2056_RX1, bias_g);
26497                 } else {
26498                     pi->tx_rx_cal_radio_saveregs[4] =
26499                         read_radio_reg(
26500                             pi,
26501                             RADIO_2056_RX_LNAG_TUNE
26502                             | RADIO_2056_RX1);
26503 
26504                     offtune_val =
26505                         (pi->
26506                          tx_rx_cal_radio_saveregs[2] &
26507                          0xF0) >> 8;
26508                     offtune_val =
26509                         (offtune_val <= 0x7) ? 0xF : 0;
26510 
26511                     mod_radio_reg(pi,
26512                               RADIO_2056_RX_LNAG_TUNE |
26513                               RADIO_2056_RX1, 0xF0,
26514                               (offtune_val << 8));
26515                 }
26516 
26517                 write_radio_reg(pi,
26518                         RADIO_2056_TX_RXIQCAL_TXMUX |
26519                         RADIO_2056_TX0, 0x6);
26520                 write_radio_reg(pi,
26521                         RADIO_2056_RX_RXIQCAL_RXMUX |
26522                         RADIO_2056_RX1, 0x6);
26523             }
26524         }
26525     }
26526 }
26527 
26528 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26529 {
26530     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26531         if (rx_core == PHY_CORE_0) {
26532             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26533                 write_radio_reg(
26534                     pi,
26535                     RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26536                     pi->
26537                     tx_rx_cal_radio_saveregs[0]);
26538                 write_radio_reg(
26539                     pi,
26540                     RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26541                     pi->
26542                     tx_rx_cal_radio_saveregs[1]);
26543 
26544             } else {
26545                 write_radio_reg(
26546                     pi,
26547                     RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26548                     pi->
26549                     tx_rx_cal_radio_saveregs[0]);
26550                 write_radio_reg(
26551                     pi,
26552                     RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26553                     pi->
26554                     tx_rx_cal_radio_saveregs[1]);
26555             }
26556 
26557         } else {
26558             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26559                 write_radio_reg(
26560                     pi,
26561                     RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26562                     pi->
26563                     tx_rx_cal_radio_saveregs[0]);
26564                 write_radio_reg(
26565                     pi,
26566                     RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26567                     pi->
26568                     tx_rx_cal_radio_saveregs[1]);
26569 
26570             } else {
26571                 write_radio_reg(
26572                     pi,
26573                     RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26574                     pi->
26575                     tx_rx_cal_radio_saveregs[0]);
26576                 write_radio_reg(
26577                     pi,
26578                     RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26579                     pi->
26580                     tx_rx_cal_radio_saveregs[1]);
26581             }
26582         }
26583 
26584     } else {
26585         if (rx_core == PHY_CORE_0) {
26586             write_radio_reg(pi,
26587                     RADIO_2056_TX_RXIQCAL_TXMUX |
26588                     RADIO_2056_TX1,
26589                     pi->tx_rx_cal_radio_saveregs[0]);
26590 
26591             write_radio_reg(pi,
26592                     RADIO_2056_RX_RXIQCAL_RXMUX |
26593                     RADIO_2056_RX0,
26594                     pi->tx_rx_cal_radio_saveregs[1]);
26595 
26596             if (pi->pubpi.radiorev >= 5) {
26597                 write_radio_reg(pi,
26598                         RADIO_2056_RX_RXSPARE2 |
26599                         RADIO_2056_RX0,
26600                         pi->
26601                         tx_rx_cal_radio_saveregs[2]);
26602 
26603                 write_radio_reg(pi,
26604                         RADIO_2056_TX_TXSPARE2 |
26605                         RADIO_2056_TX1,
26606                         pi->
26607                         tx_rx_cal_radio_saveregs[3]);
26608             }
26609 
26610             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26611                 if (pi->pubpi.radiorev >= 5)
26612                     write_radio_reg(
26613                         pi,
26614                         RADIO_2056_RX_LNAA_MASTER
26615                         | RADIO_2056_RX0,
26616                         pi->
26617                         tx_rx_cal_radio_saveregs
26618                         [4]);
26619                 else
26620                     write_radio_reg(
26621                         pi,
26622                         RADIO_2056_RX_LNAA_TUNE
26623                         | RADIO_2056_RX0,
26624                         pi->
26625                         tx_rx_cal_radio_saveregs
26626                         [4]);
26627             } else {
26628                 if (pi->pubpi.radiorev >= 5)
26629                     write_radio_reg(
26630                         pi,
26631                         RADIO_2056_RX_LNAG_MASTER
26632                         | RADIO_2056_RX0,
26633                         pi->
26634                         tx_rx_cal_radio_saveregs
26635                         [4]);
26636                 else
26637                     write_radio_reg(
26638                         pi,
26639                         RADIO_2056_RX_LNAG_TUNE
26640                         | RADIO_2056_RX0,
26641                         pi->
26642                         tx_rx_cal_radio_saveregs
26643                         [4]);
26644             }
26645 
26646         } else {
26647             write_radio_reg(pi,
26648                     RADIO_2056_TX_RXIQCAL_TXMUX |
26649                     RADIO_2056_TX0,
26650                     pi->tx_rx_cal_radio_saveregs[0]);
26651 
26652             write_radio_reg(pi,
26653                     RADIO_2056_RX_RXIQCAL_RXMUX |
26654                     RADIO_2056_RX1,
26655                     pi->tx_rx_cal_radio_saveregs[1]);
26656 
26657             if (pi->pubpi.radiorev >= 5) {
26658                 write_radio_reg(pi,
26659                         RADIO_2056_RX_RXSPARE2 |
26660                         RADIO_2056_RX1,
26661                         pi->
26662                         tx_rx_cal_radio_saveregs[2]);
26663 
26664                 write_radio_reg(pi,
26665                         RADIO_2056_TX_TXSPARE2 |
26666                         RADIO_2056_TX0,
26667                         pi->
26668                         tx_rx_cal_radio_saveregs[3]);
26669             }
26670 
26671             if (CHSPEC_IS5G(pi->radio_chanspec)) {
26672                 if (pi->pubpi.radiorev >= 5)
26673                     write_radio_reg(
26674                         pi,
26675                         RADIO_2056_RX_LNAA_MASTER
26676                         | RADIO_2056_RX1,
26677                         pi->
26678                         tx_rx_cal_radio_saveregs
26679                         [4]);
26680                 else
26681                     write_radio_reg(
26682                         pi,
26683                         RADIO_2056_RX_LNAA_TUNE
26684                         | RADIO_2056_RX1,
26685                         pi->
26686                         tx_rx_cal_radio_saveregs
26687                         [4]);
26688             } else {
26689                 if (pi->pubpi.radiorev >= 5)
26690                     write_radio_reg(
26691                         pi,
26692                         RADIO_2056_RX_LNAG_MASTER
26693                         | RADIO_2056_RX1,
26694                         pi->
26695                         tx_rx_cal_radio_saveregs
26696                         [4]);
26697                 else
26698                     write_radio_reg(
26699                         pi,
26700                         RADIO_2056_RX_LNAG_TUNE
26701                         | RADIO_2056_RX1,
26702                         pi->
26703                         tx_rx_cal_radio_saveregs
26704                         [4]);
26705             }
26706         }
26707     }
26708 }
26709 
26710 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26711 {
26712     u8 tx_core;
26713     u16 rx_antval, tx_antval;
26714 
26715     if (NREV_GE(pi->pubpi.phy_rev, 7))
26716         tx_core = rx_core;
26717     else
26718         tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26719 
26720     pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26721     pi->tx_rx_cal_phy_saveregs[1] =
26722         read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26723     pi->tx_rx_cal_phy_saveregs[2] =
26724         read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26725     pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26726     pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26727     pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26728     pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26729     pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26730     pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26731     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26732         pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26733         pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26734         pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26735         pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26736     }
26737 
26738     pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26739     pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26740     mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26741             0x29b, (0x1 << 0), (0) << 0);
26742 
26743     mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26744             0x29b, (0x1 << 0), (0) << 0);
26745 
26746     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26747 
26748         mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26749 
26750         mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26751 
26752     } else {
26753 
26754         mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26755         mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26756         mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26757         mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26758     }
26759 
26760     mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26761     mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26762             (0x1 << 2), (0x1 << 2));
26763     if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26764         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26765                 (0x1 << 0) | (0x1 << 1), 0);
26766         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26767                 0x8f : 0xa5,
26768                 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26769     }
26770 
26771     wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26772                      RADIO_MIMO_CORESEL_CORE1 |
26773                      RADIO_MIMO_CORESEL_CORE2);
26774 
26775     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26776         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26777                           0, 0, 0,
26778                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26779         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26780                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26781         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26782                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26783         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26784                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26785         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26786                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
26787         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26788                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26789         if (CHSPEC_IS40(pi->radio_chanspec))
26790             wlc_phy_rfctrl_override_nphy_rev7(
26791                 pi,
26792                 (0x1 << 7),
26793                 2, 0, 0,
26794                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26795         else
26796             wlc_phy_rfctrl_override_nphy_rev7(
26797                 pi,
26798                 (0x1 << 7),
26799                 0, 0, 0,
26800                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26801 
26802         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26803                           0, 0, 0,
26804                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26805         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26806                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26807     } else {
26808         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26809     }
26810 
26811     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26812 
26813     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26814 
26815         wlc_phy_rfctrlintc_override_nphy(pi,
26816                          NPHY_RfctrlIntc_override_TRSW,
26817                          0x1, rx_core + 1);
26818     } else {
26819 
26820         if (rx_core == PHY_CORE_0) {
26821             rx_antval = 0x1;
26822             tx_antval = 0x8;
26823         } else {
26824             rx_antval = 0x4;
26825             tx_antval = 0x2;
26826         }
26827 
26828         wlc_phy_rfctrlintc_override_nphy(pi,
26829                          NPHY_RfctrlIntc_override_TRSW,
26830                          rx_antval, rx_core + 1);
26831         wlc_phy_rfctrlintc_override_nphy(pi,
26832                          NPHY_RfctrlIntc_override_TRSW,
26833                          tx_antval, tx_core + 1);
26834     }
26835 }
26836 
26837 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26838 {
26839 
26840     write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26841     write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26842               pi->tx_rx_cal_phy_saveregs[1]);
26843     write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26844               pi->tx_rx_cal_phy_saveregs[2]);
26845     write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26846     write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26847 
26848     write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26849     write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26850     write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26851     write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26852     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26853         write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26854         write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26855         write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26856         write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26857     }
26858 
26859     write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26860     write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26861 }
26862 
26863 static void
26864 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26865                  u16 *rxgain, u8 cal_type)
26866 {
26867 
26868     u16 num_samps;
26869     struct phy_iq_est est[PHY_CORE_MAX];
26870     u8 tx_core;
26871     struct nphy_iq_comp save_comp, zero_comp;
26872     u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26873         thresh_pwr = 10000;
26874     s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26875     bool gainctrl_done = false;
26876     u8 mix_tia_gain = 3;
26877     s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26878     s8 curr_gaintbl_index = 3;
26879     u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26880     const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26881     u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26882     int fine_gain_idx;
26883     s8 txpwrindex;
26884     u16 nphy_rxcal_txgain[2];
26885 
26886     if (NREV_GE(pi->pubpi.phy_rev, 7))
26887         tx_core = rx_core;
26888     else
26889         tx_core = 1 - rx_core;
26890 
26891     num_samps = 1024;
26892     desired_log2_pwr = 13;
26893 
26894     wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26895     zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26896     wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26897 
26898     if (CHSPEC_IS5G(pi->radio_chanspec)) {
26899         if (NREV_GE(pi->pubpi.phy_rev, 7))
26900             mix_tia_gain = 3;
26901         else if (NREV_GE(pi->pubpi.phy_rev, 4))
26902             mix_tia_gain = 4;
26903         else
26904             mix_tia_gain = 6;
26905         if (NREV_GE(pi->pubpi.phy_rev, 7))
26906             nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26907         else
26908             nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26909     } else {
26910         if (NREV_GE(pi->pubpi.phy_rev, 7))
26911             nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26912         else
26913             nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26914     }
26915 
26916     do {
26917 
26918         hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26919             0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26920         lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26921         lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26922         lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26923         lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26924         txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26925 
26926         if (NREV_GE(pi->pubpi.phy_rev, 7))
26927             wlc_phy_rfctrl_override_1tomany_nphy(
26928                 pi,
26929                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26930                 ((lpf_biq1 << 12) |
26931                  (lpf_biq0 << 8) |
26932                  (mix_tia_gain << 4) | (lna2 << 2)
26933                  | lna1), 0x3, 0);
26934         else
26935             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26936                              ((hpvga << 12) |
26937                               (lpf_biq1 << 10) |
26938                               (lpf_biq0 << 8) |
26939                               (mix_tia_gain << 4) |
26940                               (lna2 << 2) | lna1), 0x3,
26941                              0);
26942 
26943         pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26944 
26945         if (txpwrindex == -1) {
26946             nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26947             nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26948             wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26949                          2, 0x110, 16,
26950                          nphy_rxcal_txgain);
26951         } else {
26952             wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26953                          false);
26954         }
26955 
26956         wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26957                      NPHY_RXCAL_TONEFREQ_40MHz :
26958                      NPHY_RXCAL_TONEFREQ_20MHz,
26959                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26960 
26961         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26962         i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26963         q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26964         curr_pwr = i_pwr + q_pwr;
26965 
26966         switch (gainctrl_dirn) {
26967         case NPHY_RXCAL_GAIN_INIT:
26968             if (curr_pwr > thresh_pwr) {
26969                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
26970                 prev_gaintbl_index = curr_gaintbl_index;
26971                 curr_gaintbl_index--;
26972             } else {
26973                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
26974                 prev_gaintbl_index = curr_gaintbl_index;
26975                 curr_gaintbl_index++;
26976             }
26977             break;
26978 
26979         case NPHY_RXCAL_GAIN_UP:
26980             if (curr_pwr > thresh_pwr) {
26981                 gainctrl_done = true;
26982                 optim_pwr = prev_pwr;
26983                 optim_gaintbl_index = prev_gaintbl_index;
26984             } else {
26985                 prev_gaintbl_index = curr_gaintbl_index;
26986                 curr_gaintbl_index++;
26987             }
26988             break;
26989 
26990         case NPHY_RXCAL_GAIN_DOWN:
26991             if (curr_pwr > thresh_pwr) {
26992                 prev_gaintbl_index = curr_gaintbl_index;
26993                 curr_gaintbl_index--;
26994             } else {
26995                 gainctrl_done = true;
26996                 optim_pwr = curr_pwr;
26997                 optim_gaintbl_index = curr_gaintbl_index;
26998             }
26999             break;
27000 
27001         default:
27002             break;
27003         }
27004 
27005         if ((curr_gaintbl_index < 0) ||
27006             (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27007             gainctrl_done = true;
27008             optim_pwr = curr_pwr;
27009             optim_gaintbl_index = prev_gaintbl_index;
27010         } else {
27011             prev_pwr = curr_pwr;
27012         }
27013 
27014         wlc_phy_stopplayback_nphy(pi);
27015     } while (!gainctrl_done);
27016 
27017     hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27018     lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27019     lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27020     lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27021     lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27022     txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27023 
27024     actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27025     delta_pwr = desired_log2_pwr - actual_log2_pwr;
27026 
27027     if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27028         fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27029 
27030         if (fine_gain_idx + (int)lpf_biq0 > 10)
27031             lpf_biq1 = 10 - lpf_biq0;
27032         else
27033             lpf_biq1 = (u16) max(fine_gain_idx, 0);
27034 
27035         wlc_phy_rfctrl_override_1tomany_nphy(
27036             pi,
27037             NPHY_REV7_RfctrlOverride_cmd_rxgain,
27038             ((lpf_biq1 << 12) |
27039              (lpf_biq0 << 8) |
27040              (mix_tia_gain << 4) |
27041              (lna2 << 2) | lna1), 0x3,
27042             0);
27043     } else {
27044         hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27045         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27046                          ((hpvga << 12) |
27047                           (lpf_biq1 << 10) |
27048                           (lpf_biq0 << 8) |
27049                           (mix_tia_gain << 4) |
27050                           (lna2 << 2) |
27051                           lna1), 0x3, 0);
27052     }
27053 
27054     if (rxgain != NULL) {
27055         *rxgain++ = lna1;
27056         *rxgain++ = lna2;
27057         *rxgain++ = mix_tia_gain;
27058         *rxgain++ = lpf_biq0;
27059         *rxgain++ = lpf_biq1;
27060         *rxgain = hpvga;
27061     }
27062 
27063     wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27064 }
27065 
27066 static void
27067 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27068                 u8 cal_type)
27069 {
27070     wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27071 }
27072 
27073 static u8
27074 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27075 {
27076     u32 target_bws[2] = { 9500, 21000 };
27077     u32 ref_tones[2] = { 3000, 6000 };
27078     u32 target_bw, ref_tone;
27079 
27080     u32 target_pwr_ratios[2] = { 28606, 18468 };
27081     u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27082 
27083     u16 start_rccal_ovr_val = 128;
27084     u16 txlpf_rccal_lpc_ovr_val = 128;
27085     u16 rxlpf_rccal_hpc_ovr_val = 159;
27086 
27087     u16 orig_txlpf_rccal_lpc_ovr_val;
27088     u16 orig_rxlpf_rccal_hpc_ovr_val;
27089     u16 radio_addr_offset_rx;
27090     u16 radio_addr_offset_tx;
27091     u16 orig_dcBypass;
27092     u16 orig_RxStrnFilt40Num[6];
27093     u16 orig_RxStrnFilt40Den[4];
27094     u16 orig_rfctrloverride[2];
27095     u16 orig_rfctrlauxreg[2];
27096     u16 orig_rfctrlrssiothers;
27097     u16 tx_lpf_bw = 4;
27098 
27099     u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27100     u16 lpf_hpc = 7, hpvga_hpc = 7;
27101 
27102     s8 rccal_stepsize;
27103     u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27104     u32 ref_iq_vals = 0, target_iq_vals = 0;
27105     u16 num_samps, log_num_samps = 10;
27106     struct phy_iq_est est[PHY_CORE_MAX];
27107 
27108     if (NREV_GE(pi->pubpi.phy_rev, 7))
27109         return 0;
27110 
27111     num_samps = (1 << log_num_samps);
27112 
27113     if (CHSPEC_IS40(pi->radio_chanspec)) {
27114         target_bw = target_bws[1];
27115         target_pwr_ratio = target_pwr_ratios[1];
27116         ref_tone = ref_tones[1];
27117         rx_lpf_bw = rx_lpf_bws[1];
27118     } else {
27119         target_bw = target_bws[0];
27120         target_pwr_ratio = target_pwr_ratios[0];
27121         ref_tone = ref_tones[0];
27122         rx_lpf_bw = rx_lpf_bws[0];
27123     }
27124 
27125     if (core_idx == 0) {
27126         radio_addr_offset_rx = RADIO_2056_RX0;
27127         radio_addr_offset_tx =
27128             (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27129     } else {
27130         radio_addr_offset_rx = RADIO_2056_RX1;
27131         radio_addr_offset_tx =
27132             (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27133     }
27134 
27135     orig_txlpf_rccal_lpc_ovr_val =
27136         read_radio_reg(pi,
27137                    (RADIO_2056_TX_TXLPF_RCCAL |
27138                 radio_addr_offset_tx));
27139     orig_rxlpf_rccal_hpc_ovr_val =
27140         read_radio_reg(pi,
27141                    (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27142                 radio_addr_offset_rx));
27143 
27144     orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27145 
27146     orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27147     orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27148     orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27149     orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27150     orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27151     orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27152     orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27153     orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27154     orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27155     orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27156 
27157     orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27158     orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27159     orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27160     orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27161     orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27162 
27163     write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27164             txlpf_rccal_lpc_ovr_val);
27165 
27166     write_radio_reg(pi,
27167             (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27168             rxlpf_rccal_hpc_ovr_val);
27169 
27170     mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27171 
27172     write_phy_reg(pi, 0x267, 0x02d4);
27173     write_phy_reg(pi, 0x268, 0x0000);
27174     write_phy_reg(pi, 0x269, 0x0000);
27175     write_phy_reg(pi, 0x26a, 0x0000);
27176     write_phy_reg(pi, 0x26b, 0x0000);
27177     write_phy_reg(pi, 0x26c, 0x02d4);
27178     write_phy_reg(pi, 0x26d, 0x0000);
27179     write_phy_reg(pi, 0x26e, 0x0000);
27180     write_phy_reg(pi, 0x26f, 0x0000);
27181     write_phy_reg(pi, 0x270, 0x0000);
27182 
27183     or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27184     or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27185     or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27186     or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27187 
27188     mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27189             (0x7 << 10), (tx_lpf_bw << 10));
27190     mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27191             (0x7 << 0), (hpvga_hpc << 0));
27192     mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27193             (0x7 << 4), (lpf_hpc << 4));
27194     mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27195             (0x7 << 8), (rx_lpf_bw << 8));
27196 
27197     rccal_stepsize = 16;
27198     rccal_val = start_rccal_ovr_val + rccal_stepsize;
27199 
27200     while (rccal_stepsize >= 0) {
27201         write_radio_reg(pi,
27202                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27203                  radio_addr_offset_rx), rccal_val);
27204 
27205         if (rccal_stepsize == 16) {
27206 
27207             wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27208                          0, 1, false);
27209             udelay(2);
27210 
27211             wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27212 
27213             if (core_idx == 0)
27214                 ref_iq_vals =
27215                     max_t(u32, (est[0].i_pwr +
27216                             est[0].q_pwr) >>
27217                           (log_num_samps + 1),
27218                           1);
27219             else
27220                 ref_iq_vals =
27221                     max_t(u32, (est[1].i_pwr +
27222                             est[1].q_pwr) >>
27223                           (log_num_samps + 1),
27224                           1);
27225 
27226             wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27227                          0, 1, false);
27228             udelay(2);
27229         }
27230 
27231         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27232 
27233         if (core_idx == 0)
27234             target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27235                      (log_num_samps + 1);
27236         else
27237             target_iq_vals =
27238                 (est[1].i_pwr +
27239                  est[1].q_pwr) >> (log_num_samps + 1);
27240 
27241         pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27242 
27243         if (rccal_stepsize == 0)
27244             rccal_stepsize--;
27245         else if (rccal_stepsize == 1) {
27246             last_rccal_val = rccal_val;
27247             rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27248             last_pwr_ratio = pwr_ratio;
27249             rccal_stepsize--;
27250         } else {
27251             rccal_stepsize = (rccal_stepsize >> 1);
27252             rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27253                       rccal_stepsize : (-rccal_stepsize));
27254         }
27255 
27256         if (rccal_stepsize == -1) {
27257             best_rccal_val =
27258                 (abs((int)last_pwr_ratio -
27259                      (int)target_pwr_ratio) <
27260                  abs((int)pwr_ratio -
27261                      (int)target_pwr_ratio)) ? last_rccal_val :
27262                 rccal_val;
27263 
27264             if (CHSPEC_IS40(pi->radio_chanspec)) {
27265                 if ((best_rccal_val > 140)
27266                     || (best_rccal_val < 135))
27267                     best_rccal_val = 138;
27268             } else {
27269                 if ((best_rccal_val > 142)
27270                     || (best_rccal_val < 137))
27271                     best_rccal_val = 140;
27272             }
27273 
27274             write_radio_reg(pi,
27275                     (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27276                      radio_addr_offset_rx), best_rccal_val);
27277         }
27278     }
27279 
27280     wlc_phy_stopplayback_nphy(pi);
27281 
27282     write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27283             orig_txlpf_rccal_lpc_ovr_val);
27284     write_radio_reg(pi,
27285             (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27286             orig_rxlpf_rccal_hpc_ovr_val);
27287 
27288     mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27289 
27290     write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27291     write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27292     write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27293     write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27294     write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27295     write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27296     write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27297     write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27298     write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27299     write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27300 
27301     write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27302     write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27303     write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27304     write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27305     write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27306 
27307     pi->nphy_anarxlpf_adjusted = false;
27308 
27309     return best_rccal_val - 0x80;
27310 }
27311 
27312 #define WAIT_FOR_SCOPE  4000
27313 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27314                       struct nphy_txgains target_gain,
27315                       u8 cal_type, bool debug)
27316 {
27317     u16 orig_BBConfig;
27318     u8 core_no, rx_core;
27319     u8 best_rccal[2];
27320     u16 gain_save[2];
27321     u16 cal_gain[2];
27322     struct nphy_iqcal_params cal_params[2];
27323     u8 rxcore_state;
27324     s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27325     s8 txlpf_idac;
27326     bool phyhang_avoid_state = false;
27327     bool skip_rxiqcal = false;
27328 
27329     orig_BBConfig = read_phy_reg(pi, 0x01);
27330     mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27331 
27332     wlc_phy_stay_in_carriersearch_nphy(pi, true);
27333 
27334     if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27335         phyhang_avoid_state = pi->phyhang_avoid;
27336         pi->phyhang_avoid = false;
27337     }
27338 
27339     wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27340 
27341     for (core_no = 0; core_no <= 1; core_no++) {
27342         wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27343                           &cal_params[core_no]);
27344         cal_gain[core_no] = cal_params[core_no].cal_gain;
27345     }
27346 
27347     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27348 
27349     rxcore_state = wlc_phy_rxcore_getstate_nphy(
27350         (struct brcms_phy_pub *) pi);
27351 
27352     for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27353 
27354         skip_rxiqcal =
27355             ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27356 
27357         wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27358 
27359         wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27360 
27361         if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27362 
27363             wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27364 
27365             wlc_phy_tx_tone_nphy(pi,
27366                          (CHSPEC_IS40(
27367                               pi->radio_chanspec)) ?
27368                          NPHY_RXCAL_TONEFREQ_40MHz :
27369                          NPHY_RXCAL_TONEFREQ_20MHz,
27370                          NPHY_RXCAL_TONEAMP, 0, cal_type,
27371                          false);
27372 
27373             if (debug)
27374                 mdelay(WAIT_FOR_SCOPE);
27375 
27376             wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27377             wlc_phy_stopplayback_nphy(pi);
27378         }
27379 
27380         if (((cal_type == 1) || (cal_type == 2))
27381             && NREV_LT(pi->pubpi.phy_rev, 7)) {
27382 
27383             if (rx_core == PHY_CORE_1) {
27384 
27385                 if (rxcore_state == 1)
27386                     wlc_phy_rxcore_setstate_nphy(
27387                         (struct brcms_phy_pub *) pi, 3);
27388 
27389                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27390                                 1);
27391 
27392                 best_rccal[rx_core] =
27393                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27394                 pi->nphy_rccal_value = best_rccal[rx_core];
27395 
27396                 if (rxcore_state == 1)
27397                     wlc_phy_rxcore_setstate_nphy(
27398                         (struct brcms_phy_pub *) pi,
27399                         rxcore_state);
27400             }
27401         }
27402 
27403         wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27404 
27405         wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27406         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27407     }
27408 
27409     if ((cal_type == 1) || (cal_type == 2)) {
27410 
27411         best_rccal[0] = best_rccal[1];
27412         write_radio_reg(pi,
27413                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27414                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27415 
27416         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27417             rxlpf_rccal_hpc =
27418                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27419             txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27420 
27421             if (PHY_IPA(pi)) {
27422                 txlpf_rccal_lpc +=
27423                     (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27424                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27425                          0x0e : 0x13;
27426                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27427                          TXLPF_IDAC_4, txlpf_idac);
27428             }
27429 
27430             rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27431                           0);
27432             txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27433                           0);
27434 
27435             write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27436                          ((rx_core ==
27437                            PHY_CORE_0) ? RADIO_2056_RX0 :
27438                           RADIO_2056_RX1)),
27439                     (rxlpf_rccal_hpc | 0x80));
27440 
27441             write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27442                          ((rx_core ==
27443                            PHY_CORE_0) ? RADIO_2056_TX0 :
27444                           RADIO_2056_TX1)),
27445                     (txlpf_rccal_lpc | 0x80));
27446         }
27447     }
27448 
27449     write_phy_reg(pi, 0x01, orig_BBConfig);
27450 
27451     wlc_phy_resetcca_nphy(pi);
27452 
27453     if (NREV_GE(pi->pubpi.phy_rev, 7))
27454         wlc_phy_rfctrl_override_1tomany_nphy(
27455             pi,
27456             NPHY_REV7_RfctrlOverride_cmd_rxgain,
27457             0, 0x3, 1);
27458     else
27459         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27460 
27461     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27462 
27463     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27464                  gain_save);
27465 
27466     if (NREV_GE(pi->pubpi.phy_rev, 4))
27467         pi->phyhang_avoid = phyhang_avoid_state;
27468 
27469     wlc_phy_stay_in_carriersearch_nphy(pi, false);
27470 
27471     return 0;
27472 }
27473 
27474 static int
27475 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27476                struct nphy_txgains target_gain, bool debug)
27477 {
27478     struct phy_iq_est est[PHY_CORE_MAX];
27479     u8 core_num, rx_core, tx_core;
27480     u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27481     u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27482     u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27483     s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27484     s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27485     u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27486     u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27487     u16 num_samps;
27488     u32 i_pwr, q_pwr, tot_pwr[3];
27489     u8 gain_pass, use_hpf_num;
27490     u16 mask, val1, val2;
27491     u16 core_no;
27492     u16 gain_save[2];
27493     u16 cal_gain[2];
27494     struct nphy_iqcal_params cal_params[2];
27495     u8 phy_bw;
27496     int bcmerror = 0;
27497     bool first_playtone = true;
27498 
27499     wlc_phy_stay_in_carriersearch_nphy(pi, true);
27500 
27501     if (NREV_LT(pi->pubpi.phy_rev, 2))
27502         wlc_phy_reapply_txcal_coeffs_nphy(pi);
27503 
27504     wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27505 
27506     for (core_no = 0; core_no <= 1; core_no++) {
27507         wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27508                           &cal_params[core_no]);
27509         cal_gain[core_no] = cal_params[core_no].cal_gain;
27510     }
27511 
27512     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27513 
27514     num_samps = 1024;
27515     desired_log2_pwr = 13;
27516 
27517     for (core_num = 0; core_num < 2; core_num++) {
27518 
27519         rx_core = core_num;
27520         tx_core = 1 - core_num;
27521 
27522         orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27523         orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27524                         0xa6 : 0xa7);
27525         orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27526         orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27527                          0x91 : 0x92);
27528         orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27529                          0x91 : 0x92);
27530 
27531         mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27532         mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27533 
27534         or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27535                ((0x1 << 1) | (0x1 << 2)));
27536         or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27537 
27538         if (((pi->nphy_rxcalparams) & 0xff000000))
27539             write_phy_reg(pi,
27540                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27541                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27542                     0x140 : 0x110));
27543         else
27544             write_phy_reg(pi,
27545                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27546                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27547                        0x180 : 0x120));
27548 
27549         write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27550                   (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27551                    0x114));
27552 
27553         mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27554         if (rx_core == PHY_CORE_0) {
27555             val1 = RADIO_2055_COUPLE_RX_MASK;
27556             val2 = RADIO_2055_COUPLE_TX_MASK;
27557         } else {
27558             val1 = RADIO_2055_COUPLE_TX_MASK;
27559             val2 = RADIO_2055_COUPLE_RX_MASK;
27560         }
27561 
27562         if ((pi->nphy_rxcalparams & 0x10000)) {
27563             mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27564                       val1);
27565             mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27566                       val2);
27567         }
27568 
27569         for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27570 
27571             if (debug)
27572                 mdelay(WAIT_FOR_SCOPE);
27573 
27574             if (gain_pass < 3) {
27575                 curr_lna = lna_vals[gain_pass];
27576                 curr_hpf1 = hpf1_vals[gain_pass];
27577                 curr_hpf2 = hpf2_vals[gain_pass];
27578             } else {
27579 
27580                 if (tot_pwr[1] > 10000) {
27581                     curr_lna = lna_vals[2];
27582                     curr_hpf1 = hpf1_vals[2];
27583                     curr_hpf2 = hpf2_vals[2];
27584                     use_hpf_num = 1;
27585                     curr_hpf = curr_hpf1;
27586                     actual_log2_pwr =
27587                         wlc_phy_nbits(tot_pwr[2]);
27588                 } else {
27589                     if (tot_pwr[0] > 10000) {
27590                         curr_lna = lna_vals[1];
27591                         curr_hpf1 = hpf1_vals[1];
27592                         curr_hpf2 = hpf2_vals[1];
27593                         use_hpf_num = 1;
27594                         curr_hpf = curr_hpf1;
27595                         actual_log2_pwr =
27596                             wlc_phy_nbits(
27597                                 tot_pwr[1]);
27598                     } else {
27599                         curr_lna = lna_vals[0];
27600                         curr_hpf1 = hpf1_vals[0];
27601                         curr_hpf2 = hpf2_vals[0];
27602                         use_hpf_num = 2;
27603                         curr_hpf = curr_hpf2;
27604                         actual_log2_pwr =
27605                             wlc_phy_nbits(
27606                                 tot_pwr[0]);
27607                     }
27608                 }
27609 
27610                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27611                 curr_hpf += hpf_change;
27612                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27613                 if (use_hpf_num == 1)
27614                     curr_hpf1 = curr_hpf;
27615                 else
27616                     curr_hpf2 = curr_hpf;
27617             }
27618 
27619             wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27620                              ((curr_hpf2 << 8) |
27621                               (curr_hpf1 << 4) |
27622                               (curr_lna << 2)), 0x3, 0);
27623             wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27624 
27625             wlc_phy_stopplayback_nphy(pi);
27626 
27627             if (first_playtone) {
27628                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27629                         (u16) (pi->nphy_rxcalparams &
27630                                0xffff), 0, 0, true);
27631                 first_playtone = false;
27632             } else {
27633                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27634                       40 : 20;
27635                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27636                             0, 0, 0, true);
27637             }
27638 
27639             if (bcmerror == 0) {
27640                 if (gain_pass < 3) {
27641 
27642                     wlc_phy_rx_iq_est_nphy(pi, est,
27643                                    num_samps, 32,
27644                                    0);
27645                     i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27646                                      num_samps);
27647                     q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27648                                      num_samps);
27649                     tot_pwr[gain_pass] = i_pwr + q_pwr;
27650                 } else {
27651 
27652                     wlc_phy_calc_rx_iq_comp_nphy(pi,
27653                                      (1 <<
27654                                       rx_core));
27655                 }
27656 
27657                 wlc_phy_stopplayback_nphy(pi);
27658             }
27659 
27660             if (bcmerror != 0)
27661                 break;
27662         }
27663 
27664         and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27665         and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27666 
27667         write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27668                   0x92, orig_RfctrlIntcTx);
27669         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27670                   0x92, orig_RfctrlIntcRx);
27671         write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27672         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27673                   0xa7, orig_AfectrlCore);
27674         write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27675 
27676         if (bcmerror != 0)
27677             break;
27678     }
27679 
27680     wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27681     wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27682 
27683     wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27684                  gain_save);
27685 
27686     wlc_phy_stay_in_carriersearch_nphy(pi, false);
27687 
27688     return bcmerror;
27689 }
27690 
27691 int
27692 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27693               u8 cal_type, bool debug)
27694 {
27695     if (NREV_GE(pi->pubpi.phy_rev, 7))
27696         cal_type = 0;
27697 
27698     if (NREV_GE(pi->pubpi.phy_rev, 3))
27699         return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27700                           debug);
27701     else
27702         return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27703 }
27704 
27705 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27706 {
27707     uint core;
27708     u32 txgain;
27709     u16 rad_gain, dac_gain, bbmult, m1m2;
27710     u8 txpi[2], chan_freq_range;
27711     s32 rfpwr_offset;
27712 
27713     if (pi->phyhang_avoid)
27714         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27715 
27716     if (pi->sh->sromrev < 4) {
27717         txpi[0] = txpi[1] = 72;
27718     } else {
27719 
27720         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27721         switch (chan_freq_range) {
27722         case WL_CHAN_FREQ_RANGE_2G:
27723         case WL_CHAN_FREQ_RANGE_5GL:
27724         case WL_CHAN_FREQ_RANGE_5GM:
27725         case WL_CHAN_FREQ_RANGE_5GH:
27726             txpi[0] = 0;
27727             txpi[1] = 0;
27728             break;
27729         default:
27730             txpi[0] = txpi[1] = 91;
27731             break;
27732         }
27733     }
27734 
27735     if (NREV_GE(pi->pubpi.phy_rev, 7))
27736         txpi[0] = txpi[1] = 30;
27737     else if (NREV_GE(pi->pubpi.phy_rev, 3))
27738         txpi[0] = txpi[1] = 40;
27739 
27740     if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27741 
27742         if ((txpi[0] < 40) || (txpi[0] > 100) ||
27743             (txpi[1] < 40) || (txpi[1] > 100))
27744             txpi[0] = txpi[1] = 91;
27745     }
27746 
27747     pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27748     pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27749     pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27750     pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27751 
27752     for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27753         uint phyrev = pi->pubpi.phy_rev;
27754 
27755         if (NREV_GE(phyrev, 3)) {
27756             if (PHY_IPA(pi)) {
27757                 u32 *tx_gaintbl =
27758                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27759                 txgain = tx_gaintbl[txpi[core]];
27760             } else {
27761                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27762                     if (NREV_IS(phyrev, 3)) {
27763                         txgain =
27764                               nphy_tpc_5GHz_txgain_rev3
27765                                    [txpi[core]];
27766                     } else if (NREV_IS(phyrev, 4)) {
27767                         txgain = (
27768                           pi->srom_fem5g.extpagain ==
27769                           3) ?
27770                           nphy_tpc_5GHz_txgain_HiPwrEPA
27771                          [txpi[core]] :
27772                          nphy_tpc_5GHz_txgain_rev4
27773                          [txpi[core]];
27774                     } else {
27775                         txgain =
27776                               nphy_tpc_5GHz_txgain_rev5
27777                                    [txpi[core]];
27778                     }
27779                 } else {
27780                     if (NREV_GE(phyrev, 5) &&
27781                         (pi->srom_fem2g.extpagain == 3)) {
27782                         txgain =
27783                             nphy_tpc_txgain_HiPwrEPA
27784                             [txpi[core]];
27785                     } else {
27786                         txgain = nphy_tpc_txgain_rev3
27787                              [txpi[core]];
27788                     }
27789                 }
27790             }
27791         } else {
27792             txgain = nphy_tpc_txgain[txpi[core]];
27793         }
27794 
27795         if (NREV_GE(phyrev, 3))
27796             rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27797         else
27798             rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27799 
27800         if (NREV_GE(phyrev, 7))
27801             dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27802         else
27803             dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27804 
27805         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27806 
27807         if (NREV_GE(phyrev, 3))
27808             mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27809                      0xa5), (0x1 << 8), (0x1 << 8));
27810         else
27811             mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27812 
27813         write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27814 
27815         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27816                      &rad_gain);
27817 
27818         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27819         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27820         m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27821         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27822 
27823         if (PHY_IPA(pi)) {
27824             wlc_phy_table_read_nphy(pi,
27825                         (core ==
27826                          PHY_CORE_0 ?
27827                          NPHY_TBL_ID_CORE1TXPWRCTL :
27828                          NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27829                         576 + txpi[core], 32,
27830                         &rfpwr_offset);
27831 
27832             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27833                     0x29b, (0x1ff << 4),
27834                     ((s16) rfpwr_offset) << 4);
27835 
27836             mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27837                     0x29b, (0x1 << 2), (1) << 2);
27838 
27839         }
27840     }
27841 
27842     and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27843 
27844     if (pi->phyhang_avoid)
27845         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27846 }
27847 
27848 static void
27849 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27850                 u8 tmp_max_pwr, u8 rate_start,
27851                 u8 rate_end)
27852 {
27853     u8 rate;
27854     u8 word_num, nibble_num;
27855     u8 tmp_nibble;
27856 
27857     for (rate = rate_start; rate <= rate_end; rate++) {
27858         word_num = (rate - rate_start) >> 2;
27859         nibble_num = (rate - rate_start) & 0x3;
27860         tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27861 
27862         srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27863     }
27864 }
27865 
27866 static void
27867 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27868                 u8 rate_start, u8 rate_end)
27869 {
27870     u8 rate;
27871 
27872     for (rate = rate_start; rate <= rate_end; rate++)
27873         srom_max[rate] -= 2 * pwr_offset;
27874 }
27875 
27876 void
27877 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27878                 u8 rate_mcs_end, u8 rate_ofdm_start)
27879 {
27880     u8 rate1, rate2;
27881 
27882     rate2 = rate_ofdm_start;
27883     for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27884         power[rate1] = power[rate2];
27885         rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27886     }
27887     power[rate_mcs_end] = power[rate_mcs_end - 1];
27888 }
27889 
27890 void
27891 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27892                 u8 rate_ofdm_end, u8 rate_mcs_start)
27893 {
27894     u8 rate1, rate2;
27895 
27896     for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27897          rate1 <= rate_ofdm_end; rate1++, rate2++) {
27898         power[rate1] = power[rate2];
27899         if (rate1 == rate_ofdm_start)
27900             power[++rate1] = power[rate2];
27901     }
27902 }
27903 
27904 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27905 {
27906     uint rate1, rate2, band_num;
27907     u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27908     u8 tmp_max_pwr = 0;
27909     u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27910     u8 *tx_srom_max_rate = NULL;
27911 
27912     for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27913          band_num++) {
27914         switch (band_num) {
27915         case 0:
27916 
27917             tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27918                       pi->nphy_pwrctrl_info[1].max_pwr_2g);
27919 
27920             pwr_offsets1[0] = pi->cck2gpo;
27921             wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27922                             pwr_offsets1,
27923                             tmp_max_pwr,
27924                             TXP_FIRST_CCK,
27925                             TXP_LAST_CCK);
27926 
27927             pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27928             pwr_offsets1[1] =
27929                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27930 
27931             pwr_offsets2 = pi->mcs2gpo;
27932 
27933             tmp_cddpo = pi->cdd2gpo;
27934             tmp_stbcpo = pi->stbc2gpo;
27935             tmp_bw40po = pi->bw402gpo;
27936 
27937             tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27938             break;
27939         case 1:
27940 
27941             tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27942                       pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27943 
27944             pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27945             pwr_offsets1[1] =
27946                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27947 
27948             pwr_offsets2 = pi->mcs5gpo;
27949 
27950             tmp_cddpo = pi->cdd5gpo;
27951             tmp_stbcpo = pi->stbc5gpo;
27952             tmp_bw40po = pi->bw405gpo;
27953 
27954             tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27955             break;
27956         case 2:
27957 
27958             tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27959                       pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27960 
27961             pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27962             pwr_offsets1[1] =
27963                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27964 
27965             pwr_offsets2 = pi->mcs5glpo;
27966 
27967             tmp_cddpo = pi->cdd5glpo;
27968             tmp_stbcpo = pi->stbc5glpo;
27969             tmp_bw40po = pi->bw405glpo;
27970 
27971             tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27972             break;
27973         case 3:
27974 
27975             tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27976                       pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27977 
27978             pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27979             pwr_offsets1[1] =
27980                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27981 
27982             pwr_offsets2 = pi->mcs5ghpo;
27983 
27984             tmp_cddpo = pi->cdd5ghpo;
27985             tmp_stbcpo = pi->stbc5ghpo;
27986             tmp_bw40po = pi->bw405ghpo;
27987 
27988             tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27989             break;
27990         }
27991 
27992         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27993                         tmp_max_pwr, TXP_FIRST_OFDM,
27994                         TXP_LAST_OFDM);
27995 
27996         wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27997                         TXP_FIRST_MCS_20_SISO,
27998                         TXP_LAST_MCS_20_SISO,
27999                         TXP_FIRST_OFDM);
28000 
28001         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28002                         tmp_max_pwr,
28003                         TXP_FIRST_MCS_20_CDD,
28004                         TXP_LAST_MCS_20_CDD);
28005 
28006         if (NREV_GE(pi->pubpi.phy_rev, 3))
28007             wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28008                             TXP_FIRST_MCS_20_CDD,
28009                             TXP_LAST_MCS_20_CDD);
28010 
28011         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28012                         TXP_FIRST_OFDM_20_CDD,
28013                         TXP_LAST_OFDM_20_CDD,
28014                         TXP_FIRST_MCS_20_CDD);
28015 
28016         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28017                         tmp_max_pwr,
28018                         TXP_FIRST_MCS_20_STBC,
28019                         TXP_LAST_MCS_20_STBC);
28020 
28021         if (NREV_GE(pi->pubpi.phy_rev, 3))
28022             wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28023                             tmp_stbcpo,
28024                             TXP_FIRST_MCS_20_STBC,
28025                             TXP_LAST_MCS_20_STBC);
28026 
28027         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28028                         &pwr_offsets2[2], tmp_max_pwr,
28029                         TXP_FIRST_MCS_20_SDM,
28030                         TXP_LAST_MCS_20_SDM);
28031 
28032         if (NPHY_IS_SROM_REINTERPRET) {
28033 
28034             wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28035                             &pwr_offsets2[4],
28036                             tmp_max_pwr,
28037                             TXP_FIRST_MCS_40_SISO,
28038                             TXP_LAST_MCS_40_SISO);
28039 
28040             wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28041                             TXP_FIRST_OFDM_40_SISO,
28042                             TXP_LAST_OFDM_40_SISO,
28043                             TXP_FIRST_MCS_40_SISO);
28044 
28045             wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28046                             &pwr_offsets2[4],
28047                             tmp_max_pwr,
28048                             TXP_FIRST_MCS_40_CDD,
28049                             TXP_LAST_MCS_40_CDD);
28050 
28051             wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28052                             TXP_FIRST_MCS_40_CDD,
28053                             TXP_LAST_MCS_40_CDD);
28054 
28055             wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28056                             TXP_FIRST_OFDM_40_CDD,
28057                             TXP_LAST_OFDM_40_CDD,
28058                             TXP_FIRST_MCS_40_CDD);
28059 
28060             wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28061                             &pwr_offsets2[4],
28062                             tmp_max_pwr,
28063                             TXP_FIRST_MCS_40_STBC,
28064                             TXP_LAST_MCS_40_STBC);
28065 
28066             wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28067                             tmp_stbcpo,
28068                             TXP_FIRST_MCS_40_STBC,
28069                             TXP_LAST_MCS_40_STBC);
28070 
28071             wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28072                             &pwr_offsets2[6],
28073                             tmp_max_pwr,
28074                             TXP_FIRST_MCS_40_SDM,
28075                             TXP_LAST_MCS_40_SDM);
28076         } else {
28077 
28078             for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28079                      TXP_FIRST_OFDM;
28080                  rate1 <= TXP_LAST_MCS_40_SDM;
28081                  rate1++, rate2++)
28082                 tx_srom_max_rate[rate1] =
28083                     tx_srom_max_rate[rate2];
28084         }
28085 
28086         if (NREV_GE(pi->pubpi.phy_rev, 3))
28087             wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28088                             tmp_bw40po,
28089                             TXP_FIRST_OFDM_40_SISO,
28090                             TXP_LAST_MCS_40_SDM);
28091 
28092         tx_srom_max_rate[TXP_MCS_32] =
28093             tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28094     }
28095 
28096     return;
28097 }
28098 
28099 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28100 {
28101     u8 tx_pwr_ctrl_state;
28102     wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28103     wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28104 
28105     tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28106 
28107     if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28108         wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28109         (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28110         udelay(1);
28111     }
28112 
28113     wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28114 
28115     if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28116         wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28117 }
28118 
28119 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28120 {
28121     return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28122                         (0x1 << 14) | (0x1 << 13));
28123 }
28124 
28125 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28126 {
28127     u16 tmp;
28128     u16 pwr_idx[2];
28129 
28130     if (wlc_phy_txpwr_ison_nphy(pi)) {
28131         pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28132         pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28133 
28134         tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28135     } else {
28136         tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28137             << 8) |
28138             (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28139     }
28140 
28141     return tmp;
28142 }
28143 
28144 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28145 {
28146     if (PHY_IPA(pi)
28147         && (pi->nphy_force_papd_cal
28148         || (wlc_phy_txpwr_ison_nphy(pi)
28149             &&
28150             (((u32)
28151               abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28152               pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28153              || ((u32)
28154              abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28155                  pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28156         wlc_phy_a4(pi, true);
28157 }
28158 
28159 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28160 {
28161     u16 mask = 0, val = 0, ishw = 0;
28162     u8 ctr;
28163     uint core;
28164     u32 tbl_offset;
28165     u32 tbl_len;
28166     u16 regval[84];
28167 
28168     if (pi->phyhang_avoid)
28169         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28170 
28171     switch (ctrl_type) {
28172     case PHY_TPC_HW_OFF:
28173     case PHY_TPC_HW_ON:
28174         pi->nphy_txpwrctrl = ctrl_type;
28175         break;
28176     default:
28177         break;
28178     }
28179 
28180     if (ctrl_type == PHY_TPC_HW_OFF) {
28181         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28182 
28183             if (wlc_phy_txpwr_ison_nphy(pi)) {
28184                 for (core = 0; core < pi->pubpi.phy_corenum;
28185                      core++)
28186                     pi->nphy_txpwr_idx[core] =
28187                         wlc_phy_txpwr_idx_cur_get_nphy(
28188                             pi,
28189                             (u8) core);
28190             }
28191 
28192         }
28193 
28194         tbl_len = 84;
28195         tbl_offset = 64;
28196         for (ctr = 0; ctr < tbl_len; ctr++)
28197             regval[ctr] = 0;
28198         wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28199                      regval);
28200         wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28201                      regval);
28202 
28203         if (NREV_GE(pi->pubpi.phy_rev, 3))
28204             and_phy_reg(pi, 0x1e7,
28205                     (u16) (~((0x1 << 15) |
28206                          (0x1 << 14) | (0x1 << 13))));
28207         else
28208             and_phy_reg(pi, 0x1e7,
28209                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28210 
28211         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28212             or_phy_reg(pi, 0x8f, (0x1 << 8));
28213             or_phy_reg(pi, 0xa5, (0x1 << 8));
28214         } else {
28215             or_phy_reg(pi, 0xa5, (0x1 << 14));
28216         }
28217 
28218         if (NREV_IS(pi->pubpi.phy_rev, 2))
28219             mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28220         else if (NREV_LT(pi->pubpi.phy_rev, 2))
28221             mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28222 
28223         if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28224             pi->bw == WL_CHANSPEC_BW_40)
28225             wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28226                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28227 
28228     } else {
28229 
28230         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28231                      8, pi->adj_pwr_tbl_nphy);
28232         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28233                      8, pi->adj_pwr_tbl_nphy);
28234 
28235         ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28236         mask = (0x1 << 14) | (0x1 << 13);
28237         val = (ishw << 14) | (ishw << 13);
28238 
28239         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28240             mask |= (0x1 << 15);
28241             val |= (ishw << 15);
28242         }
28243 
28244         mod_phy_reg(pi, 0x1e7, mask, val);
28245 
28246         if (CHSPEC_IS5G(pi->radio_chanspec)) {
28247             if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28248                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28249                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28250             } else {
28251                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28252                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28253                     mod_phy_reg(pi, 0x222,
28254                             (0xff << 0), 0x64);
28255             }
28256         }
28257 
28258         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28259             if ((pi->nphy_txpwr_idx[0] != 128)
28260                 && (pi->nphy_txpwr_idx[1] != 128))
28261                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28262                                    pi->
28263                                    nphy_txpwr_idx
28264                                    [0],
28265                                    pi->
28266                                    nphy_txpwr_idx
28267                                    [1]);
28268         }
28269 
28270         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28271             and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28272             and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28273         } else {
28274             and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28275         }
28276 
28277         if (NREV_IS(pi->pubpi.phy_rev, 2))
28278             mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28279         else if (NREV_LT(pi->pubpi.phy_rev, 2))
28280             mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28281 
28282         if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28283             pi->bw == WL_CHANSPEC_BW_40)
28284             wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28285                        0x0, BRCM_BAND_ALL);
28286 
28287         if (PHY_IPA(pi)) {
28288             mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28289                     0x29b, (0x1 << 2), (0) << 2);
28290 
28291             mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28292                     0x29b, (0x1 << 2), (0) << 2);
28293 
28294         }
28295 
28296     }
28297 
28298     if (pi->phyhang_avoid)
28299         wlc_phy_stay_in_carriersearch_nphy(pi, false);
28300 }
28301 
28302 void
28303 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28304              bool restore_cals)
28305 {
28306     u8 core, txpwrctl_tbl;
28307     u16 tx_ind0, iq_ind0, lo_ind0;
28308     u16 m1m2;
28309     u32 txgain;
28310     u16 rad_gain, dac_gain;
28311     u8 bbmult;
28312     u32 iqcomp;
28313     u16 iqcomp_a, iqcomp_b;
28314     u32 locomp;
28315     u16 tmpval;
28316     u8 tx_pwr_ctrl_state;
28317     s32 rfpwr_offset;
28318     u16 regval[2];
28319 
28320     if (pi->phyhang_avoid)
28321         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28322 
28323     tx_ind0 = 192;
28324     iq_ind0 = 320;
28325     lo_ind0 = 448;
28326 
28327     for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28328 
28329         if ((core_mask & (1 << core)) == 0)
28330             continue;
28331 
28332         txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28333 
28334         if (txpwrindex < 0) {
28335             if (pi->nphy_txpwrindex[core].index < 0)
28336                 continue;
28337 
28338             if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28339                 mod_phy_reg(pi, 0x8f,
28340                         (0x1 << 8),
28341                         pi->nphy_txpwrindex[core].
28342                         AfectrlOverride);
28343                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28344                         pi->nphy_txpwrindex[core].
28345                         AfectrlOverride);
28346             } else {
28347                 mod_phy_reg(pi, 0xa5,
28348                         (0x1 << 14),
28349                         pi->nphy_txpwrindex[core].
28350                         AfectrlOverride);
28351             }
28352 
28353             write_phy_reg(pi, (core == PHY_CORE_0) ?
28354                       0xaa : 0xab,
28355                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28356 
28357             wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28358                          &pi->nphy_txpwrindex[core].
28359                          rad_gain);
28360 
28361             wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28362             m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28363             m1m2 |= ((core == PHY_CORE_0) ?
28364                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28365                  (pi->nphy_txpwrindex[core].bbmult << 0));
28366             wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28367 
28368             if (restore_cals) {
28369                 wlc_phy_table_write_nphy(
28370                     pi, 15, 2, (80 + 2 * core), 16,
28371                     &pi->nphy_txpwrindex[core].iqcomp_a);
28372                 wlc_phy_table_write_nphy(
28373                     pi, 15, 1, (85 + core), 16,
28374                     &pi->nphy_txpwrindex[core].locomp);
28375                 wlc_phy_table_write_nphy(
28376                     pi, 15, 1, (93 + core), 16,
28377                     &pi->nphy_txpwrindex[core].locomp);
28378             }
28379 
28380             wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28381 
28382             pi->nphy_txpwrindex[core].index_internal =
28383                 pi->nphy_txpwrindex[core].index_internal_save;
28384         } else {
28385 
28386             if (pi->nphy_txpwrindex[core].index < 0) {
28387 
28388                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28389                     mod_phy_reg(pi, 0x8f,
28390                             (0x1 << 8),
28391                             pi->nphy_txpwrindex[core].
28392                             AfectrlOverride);
28393                     mod_phy_reg(pi, 0xa5, (0x1 << 8),
28394                             pi->nphy_txpwrindex[core].
28395                             AfectrlOverride);
28396                 } else {
28397                     pi->nphy_txpwrindex[core].
28398                     AfectrlOverride =
28399                         read_phy_reg(pi, 0xa5);
28400                 }
28401 
28402                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28403                     read_phy_reg(pi, (core == PHY_CORE_0) ?
28404                              0xaa : 0xab);
28405 
28406                 wlc_phy_table_read_nphy(pi, 7, 1,
28407                             (0x110 + core), 16,
28408                             &pi->
28409                             nphy_txpwrindex[core].
28410                             rad_gain);
28411 
28412                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28413                             &tmpval);
28414                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28415                 tmpval &= 0xff;
28416                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28417 
28418                 wlc_phy_table_read_nphy(pi, 15, 2,
28419                             (80 + 2 * core), 16,
28420                             &pi->
28421                             nphy_txpwrindex[core].
28422                             iqcomp_a);
28423 
28424                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28425                             16,
28426                             &pi->
28427                             nphy_txpwrindex[core].
28428                             locomp);
28429 
28430                 pi->nphy_txpwrindex[core].index_internal_save =
28431                     pi->nphy_txpwrindex[core].
28432                     index_internal;
28433             }
28434 
28435             tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28436             wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28437 
28438             if (NREV_IS(pi->pubpi.phy_rev, 1))
28439                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28440 
28441             wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28442                         (tx_ind0 + txpwrindex), 32,
28443                         &txgain);
28444 
28445             if (NREV_GE(pi->pubpi.phy_rev, 3))
28446                 rad_gain = (txgain >> 16) &
28447                        ((1 << (32 - 16 + 1)) - 1);
28448             else
28449                 rad_gain = (txgain >> 16) &
28450                        ((1 << (28 - 16 + 1)) - 1);
28451 
28452             dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28453             bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28454 
28455             if (NREV_GE(pi->pubpi.phy_rev, 3))
28456                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28457                          0xa5), (0x1 << 8), (0x1 << 8));
28458             else
28459                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28460 
28461             write_phy_reg(pi, (core == PHY_CORE_0) ?
28462                       0xaa : 0xab, dac_gain);
28463 
28464             wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28465                          &rad_gain);
28466 
28467             wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28468             m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28469             m1m2 |= ((core == PHY_CORE_0) ?
28470                 (bbmult << 8) : (bbmult << 0));
28471 
28472             wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28473 
28474             wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28475                         (iq_ind0 + txpwrindex), 32,
28476                         &iqcomp);
28477             iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28478             iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28479 
28480             if (restore_cals) {
28481                 regval[0] = (u16) iqcomp_a;
28482                 regval[1] = (u16) iqcomp_b;
28483                 wlc_phy_table_write_nphy(pi, 15, 2,
28484                              (80 + 2 * core), 16,
28485                              regval);
28486             }
28487 
28488             wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28489                         (lo_ind0 + txpwrindex), 32,
28490                         &locomp);
28491             if (restore_cals)
28492                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28493                              16, &locomp);
28494 
28495             if (NREV_IS(pi->pubpi.phy_rev, 1))
28496                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28497 
28498             if (PHY_IPA(pi)) {
28499                 wlc_phy_table_read_nphy(pi,
28500                         (core == PHY_CORE_0 ?
28501                          NPHY_TBL_ID_CORE1TXPWRCTL :
28502                          NPHY_TBL_ID_CORE2TXPWRCTL),
28503                         1, 576 + txpwrindex, 32,
28504                         &rfpwr_offset);
28505 
28506                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28507                         0x29b, (0x1ff << 4),
28508                         ((s16) rfpwr_offset) << 4);
28509 
28510                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28511                         0x29b, (0x1 << 2), (1) << 2);
28512 
28513             }
28514 
28515             wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28516         }
28517 
28518         pi->nphy_txpwrindex[core].index = txpwrindex;
28519     }
28520 
28521     if (pi->phyhang_avoid)
28522         wlc_phy_stay_in_carriersearch_nphy(pi, false);
28523 }
28524 
28525 void
28526 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28527                    u8 txp_rate_idx)
28528 {
28529     u8 chan_freq_range;
28530 
28531     chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28532     switch (chan_freq_range) {
28533     case WL_CHAN_FREQ_RANGE_2G:
28534         *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28535         break;
28536     case WL_CHAN_FREQ_RANGE_5GM:
28537         *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28538         break;
28539     case WL_CHAN_FREQ_RANGE_5GL:
28540         *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28541         break;
28542     case WL_CHAN_FREQ_RANGE_5GH:
28543         *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28544         break;
28545     default:
28546         *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28547         break;
28548     }
28549 
28550     return;
28551 }
28552 
28553 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28554 {
28555     u16 clip_off[] = { 0xffff, 0xffff };
28556 
28557     if (enable) {
28558         if (pi->nphy_deaf_count == 0) {
28559             pi->classifier_state =
28560                 wlc_phy_classifier_nphy(pi, 0, 0);
28561             wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28562             wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28563             wlc_phy_clip_det_nphy(pi, 1, clip_off);
28564         }
28565 
28566         pi->nphy_deaf_count++;
28567 
28568         wlc_phy_resetcca_nphy(pi);
28569 
28570     } else {
28571         pi->nphy_deaf_count--;
28572 
28573         if (pi->nphy_deaf_count == 0) {
28574             wlc_phy_classifier_nphy(pi, (0x7 << 0),
28575                         pi->classifier_state);
28576             wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28577         }
28578     }
28579 }
28580 
28581 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28582 {
28583     wlapi_suspend_mac_and_wait(pi->sh->physhim);
28584 
28585     if (mode) {
28586         if (pi->nphy_deaf_count == 0)
28587             wlc_phy_stay_in_carriersearch_nphy(pi, true);
28588     } else if (pi->nphy_deaf_count > 0) {
28589         wlc_phy_stay_in_carriersearch_nphy(pi, false);
28590     }
28591 
28592     wlapi_enable_mac(pi->sh->physhim);
28593 }