root/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. wlc_phy_bist_check_phy
  2. wlc_phy_bphy_init_nphy
  3. wlc_phy_table_write_nphy
  4. wlc_phy_table_read_nphy
  5. wlc_phy_static_table_download_nphy
  6. wlc_phy_tbl_init_nphy
  7. wlc_phy_write_txmacreg_nphy
  8. wlc_phy_nphy_tkip_rifs_war
  9. wlc_phy_txpwrctrl_config_nphy
  10. wlc_phy_txpwr_srom_read_ppr_nphy
  11. wlc_phy_txpwr_srom_read_nphy
  12. wlc_phy_attach_nphy
  13. get_rf_pwr_offset
  14. wlc_phy_update_mimoconfig_nphy
  15. wlc_phy_ipa_set_tx_digi_filts_nphy
  16. wlc_phy_ipa_restore_tx_digi_filts_nphy
  17. wlc_phy_set_rfseq_nphy
  18. wlc_phy_read_lpf_bw_ctl_nphy
  19. wlc_phy_rfctrl_override_nphy_rev7
  20. wlc_phy_adjust_lnagaintbl_nphy
  21. wlc_phy_war_force_trsw_to_R_cliplo_nphy
  22. wlc_phy_war_txchain_upd_nphy
  23. wlc_phy_workarounds_nphy_gainctrl_2057_rev5
  24. wlc_phy_workarounds_nphy_gainctrl_2057_rev6
  25. wlc_phy_workarounds_nphy_gainctrl
  26. wlc_phy_workarounds_nphy_rev7
  27. wlc_phy_workarounds_nphy_rev3
  28. wlc_phy_workarounds_nphy_rev1
  29. wlc_phy_workarounds_nphy
  30. wlc_phy_extpa_set_tx_digi_filts_nphy
  31. wlc_phy_clip_det_nphy
  32. wlc_phy_ipa_internal_tssi_setup_nphy
  33. wlc_phy_rfctrl_override_nphy
  34. wlc_phy_txpwrctrl_idle_tssi_nphy
  35. wlc_phy_txpwr_limit_to_tbl_nphy
  36. wlc_phy_txpwrctrl_pwr_setup_nphy
  37. wlc_phy_get_ipa_gaintbl_nphy
  38. wlc_phy_restore_rssical_nphy
  39. wlc_phy_internal_cal_txgain_nphy
  40. wlc_phy_precal_txgain_nphy
  41. wlc_phy_rfctrlintc_override_nphy
  42. wlc_phy_cal_txgainctrl_nphy
  43. wlc_phy_savecal_nphy
  44. wlc_phy_tx_iq_war_nphy
  45. wlc_phy_restorecal_nphy
  46. wlc_phy_txpwrctrl_coeff_setup_nphy
  47. wlc_phy_txlpfbw_nphy
  48. wlc_phy_adjust_rx_analpfbw_nphy
  49. wlc_phy_adjust_min_noisevar_nphy
  50. wlc_phy_adjust_crsminpwr_nphy
  51. wlc_phy_spurwar_nphy
  52. wlc_phy_init_nphy
  53. wlc_phy_resetcca_nphy
  54. wlc_phy_pa_override_nphy
  55. wlc_phy_stf_chain_upd_nphy
  56. wlc_phy_rxcore_setstate_nphy
  57. wlc_phy_rxcore_getstate_nphy
  58. wlc_phy_n_txpower_ipa_ison
  59. wlc_phy_cal_init_nphy
  60. wlc_phy_radio_preinit_205x
  61. wlc_phy_radio_init_2057
  62. wlc_phy_radio205x_rcal
  63. wlc_phy_radio2057_rccal
  64. wlc_phy_radio_postinit_2057
  65. wlc_phy_radio_init_2056
  66. wlc_phy_radio_postinit_2056
  67. wlc_phy_radio_preinit_2055
  68. wlc_phy_radio_init_2055
  69. wlc_phy_radio_postinit_2055
  70. wlc_phy_switch_radio_nphy
  71. wlc_phy_chan2freq_nphy
  72. wlc_phy_get_chan_freq_range_nphy
  73. wlc_phy_chanspec_radio2055_setup
  74. wlc_phy_chanspec_radio2056_setup
  75. wlc_phy_radio205x_vcocal_nphy
  76. wlc_phy_chanspec_radio2057_setup
  77. wlc_phy_chanspec_nphy_setup
  78. wlc_phy_chanspec_set_nphy
  79. wlc_phy_antsel_init
  80. wlc_phy_classifier_nphy
  81. wlc_phy_force_rfseq_nphy
  82. wlc_phy_rfctrl_override_1tomany_nphy
  83. wlc_phy_scale_offset_rssi_nphy
  84. brcms_phy_wr_tx_mux
  85. wlc_phy_rssisel_nphy
  86. wlc_phy_poll_rssi_nphy
  87. wlc_phy_tempsense_nphy
  88. wlc_phy_set_rssi_2055_vcm
  89. wlc_phy_rssi_cal_nphy_rev3
  90. wlc_phy_rssi_cal_nphy_rev2
  91. wlc_phy_rssi_cal_nphy
  92. wlc_phy_rssi_compute_nphy
  93. wlc_phy_loadsampletable_nphy
  94. wlc_phy_gen_load_samples_nphy
  95. wlc_phy_runsamples_nphy
  96. wlc_phy_tx_tone_nphy
  97. wlc_phy_stopplayback_nphy
  98. brcms_phy_get_tx_pwrctrl_tbl
  99. wlc_phy_get_tx_gain_nphy
  100. wlc_phy_iqcal_gainparams_nphy
  101. wlc_phy_txcal_radio_setup_nphy
  102. wlc_phy_txcal_radio_cleanup_nphy
  103. wlc_phy_txcal_physetup_nphy
  104. wlc_phy_txcal_phycleanup_nphy
  105. wlc_phy_est_tonepwr_nphy
  106. wlc_phy_update_txcal_ladder_nphy
  107. wlc_phy_txpwr_idx_cur_get_nphy
  108. wlc_phy_txpwr_idx_cur_set_nphy
  109. wlc_phy_ipa_get_bbmult_nphy
  110. wlc_phy_ipa_set_bbmult_nphy
  111. wlc_phy_papd_cal_setup_nphy
  112. wlc_phy_papd_cal_cleanup_nphy
  113. wlc_phy_a1_nphy
  114. wlc_phy_a2_nphy
  115. wlc_phy_a3_nphy
  116. wlc_phy_a4
  117. wlc_phy_cal_perical_nphy_run
  118. wlc_phy_cal_txiqlo_nphy
  119. wlc_phy_reapply_txcal_coeffs_nphy
  120. wlc_phy_rx_iq_coeffs_nphy
  121. wlc_phy_rx_iq_est_nphy
  122. wlc_phy_calc_rx_iq_comp_nphy
  123. wlc_phy_rxcal_radio_setup_nphy
  124. wlc_phy_rxcal_radio_cleanup_nphy
  125. wlc_phy_rxcal_physetup_nphy
  126. wlc_phy_rxcal_phycleanup_nphy
  127. wlc_phy_rxcal_gainctrl_nphy_rev5
  128. wlc_phy_rxcal_gainctrl_nphy
  129. wlc_phy_rc_sweep_nphy
  130. wlc_phy_cal_rxiq_nphy_rev3
  131. wlc_phy_cal_rxiq_nphy_rev2
  132. wlc_phy_cal_rxiq_nphy
  133. wlc_phy_txpwr_fixpower_nphy
  134. wlc_phy_txpwr_nphy_srom_convert
  135. wlc_phy_txpwr_nphy_po_apply
  136. wlc_phy_ofdm_to_mcs_powers_nphy
  137. wlc_phy_mcs_to_ofdm_powers_nphy
  138. wlc_phy_txpwr_apply_nphy
  139. wlc_phy_txpower_recalc_target_nphy
  140. wlc_phy_txpwr_ison_nphy
  141. wlc_phy_txpwr_idx_get_nphy
  142. wlc_phy_txpwr_papd_cal_nphy
  143. wlc_phy_txpwrctrl_enable_nphy
  144. wlc_phy_txpwr_index_nphy
  145. wlc_phy_txpower_sromlimit_get_nphy
  146. wlc_phy_stay_in_carriersearch_nphy
  147. wlc_nphy_deaf_mode

   1 // SPDX-License-Identifier: ISC
   2 /*
   3  * Copyright (c) 2010 Broadcom Corporation
   4  */
   5 
   6 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
   7 
   8 #include <linux/kernel.h>
   9 #include <linux/delay.h>
  10 #include <linux/cordic.h>
  11 
  12 #include <brcm_hw_ids.h>
  13 #include <aiutils.h>
  14 #include <chipcommon.h>
  15 #include <pmu.h>
  16 #include <d11.h>
  17 #include <phy_shim.h>
  18 #include "phy_int.h"
  19 #include "phy_hal.h"
  20 #include "phy_radio.h"
  21 #include "phyreg_n.h"
  22 #include "phytbl_n.h"
  23 #include "soc.h"
  24 
  25 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
  26         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
  27                        ((core == PHY_CORE_0) ? \
  28                         radio_type##_##jspace##0 : \
  29                         radio_type##_##jspace##1))
  30 
  31 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
  32         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
  33                         ((core ==  PHY_CORE_0) ? \
  34                          radio_type##_##jspace##0 : \
  35                          radio_type##_##jspace##1), value)
  36 
  37 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
  38         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
  39 
  40 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
  41         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
  42                             radio_type##_##jspace##0##_##reg_name : \
  43                             radio_type##_##jspace##1##_##reg_name))
  44 
  45 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
  46         write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
  47                              radio_type##_##jspace##0##_##reg_name : \
  48                              radio_type##_##jspace##1##_##reg_name), \
  49                         value)
  50 
  51 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
  52         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
  53                              radio_type##_##reg_name##_##jspace##0 : \
  54                              radio_type##_##reg_name##_##jspace##1))
  55 
  56 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
  57         write_radio_reg(pi, ((core == PHY_CORE_0) ? \
  58                         radio_type##_##reg_name##_##jspace##0 : \
  59                         radio_type##_##reg_name##_##jspace##1), \
  60                         value)
  61 
  62 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
  63 #define NPHY_ACI_CHANNEL_DELTA 5
  64 #define NPHY_ACI_CHANNEL_SKIP 4
  65 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
  66 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
  67 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
  68 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
  69 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
  70 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
  71 
  72 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
  73 
  74 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
  75 
  76 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
  77 
  78 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
  79 
  80 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
  81 
  82 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
  83 
  84 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
  85 
  86 #define NPHY_NOISE_ASSOC_ENTER_TH  400
  87 
  88 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
  89 
  90 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
  91 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
  92 
  93 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
  94 
  95 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
  96 
  97 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
  98 
  99 #define NPHY_RSSICAL_MAXREAD 31
 100 
 101 #define NPHY_RSSICAL_NPOLL 8
 102 #define NPHY_RSSICAL_MAXD  (1<<20)
 103 #define NPHY_MIN_RXIQ_PWR 2
 104 
 105 #define NPHY_RSSICAL_W1_TARGET 25
 106 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
 107 #define NPHY_RSSICAL_NB_TARGET 0
 108 
 109 #define NPHY_RSSICAL_W1_TARGET_REV3 29
 110 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
 111 
 112 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
 113 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
 114 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
 115 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
 116                                         NPHY_RSSICAL_MAXREAD)
 117 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
 118 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
 119                                         NPHY_RSSICAL_MAXREAD)
 120 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
 121 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
 122                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
 123 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
 124                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
 125 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
 126                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
 127 
 128 #define NPHY_IQCAL_NUMGAINS 9
 129 #define NPHY_N_GCTL 0x66
 130 
 131 #define NPHY_PAPD_EPS_TBL_SIZE 64
 132 #define NPHY_PAPD_SCL_TBL_SIZE 64
 133 #define NPHY_NUM_DIG_FILT_COEFFS 15
 134 
 135 #define NPHY_PAPD_COMP_OFF 0
 136 #define NPHY_PAPD_COMP_ON  1
 137 
 138 #define NPHY_SROM_TEMPSHIFT             32
 139 #define NPHY_SROM_MAXTEMPOFFSET         16
 140 #define NPHY_SROM_MINTEMPOFFSET         -16
 141 
 142 #define NPHY_CAL_MAXTEMPDELTA           64
 143 
 144 #define NPHY_NOISEVAR_TBLLEN40 256
 145 #define NPHY_NOISEVAR_TBLLEN20 128
 146 
 147 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
 148 
 149 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
 150 
 151 /* 5357 Chip specific ChipControl register bits */
 152 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
 153 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
 154 
 155 #define NPHY_CAL_TSSISAMPS      64
 156 #define NPHY_TEST_TONE_FREQ_40MHz 4000
 157 #define NPHY_TEST_TONE_FREQ_20MHz 2500
 158 
 159 #define MAX_205x_RCAL_WAITLOOPS 10000
 160 
 161 #define NPHY_RXCAL_TONEAMP 181
 162 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
 163 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
 164 
 165 #define TXFILT_SHAPING_OFDM20   0
 166 #define TXFILT_SHAPING_OFDM40   1
 167 #define TXFILT_SHAPING_CCK      2
 168 #define TXFILT_DEFAULT_OFDM20   3
 169 #define TXFILT_DEFAULT_OFDM40   4
 170 
 171 struct nphy_iqcal_params {
 172         u16 txlpf;
 173         u16 txgm;
 174         u16 pga;
 175         u16 pad;
 176         u16 ipa;
 177         u16 cal_gain;
 178         u16 ncorr[5];
 179 };
 180 
 181 struct nphy_txiqcal_ladder {
 182         u8 percent;
 183         u8 g_env;
 184 };
 185 
 186 struct nphy_ipa_txcalgains {
 187         struct nphy_txgains gains;
 188         bool useindex;
 189         u8 index;
 190 };
 191 
 192 struct nphy_papd_restore_state {
 193         u16 fbmix[2];
 194         u16 vga_master[2];
 195         u16 intpa_master[2];
 196         u16 afectrl[2];
 197         u16 afeoverride[2];
 198         u16 pwrup[2];
 199         u16 atten[2];
 200         u16 mm;
 201 };
 202 
 203 struct nphy_ipa_txrxgain {
 204         u16 hpvga;
 205         u16 lpf_biq1;
 206         u16 lpf_biq0;
 207         u16 lna2;
 208         u16 lna1;
 209         s8 txpwrindex;
 210 };
 211 
 212 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
 213 
 214 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
 215         {0, 0, 0, 0, 0, 100},
 216         {0, 0, 0, 0, 0, 50},
 217         {0, 0, 0, 0, 0, -1},
 218         {0, 0, 0, 3, 0, -1},
 219         {0, 0, 3, 3, 0, -1},
 220         {0, 2, 3, 3, 0, -1}
 221 };
 222 
 223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
 224         {0, 0, 0, 0, 0, 128},
 225         {0, 0, 0, 0, 0, 70},
 226         {0, 0, 0, 0, 0, 20},
 227         {0, 0, 0, 3, 0, 20},
 228         {0, 0, 3, 3, 0, 20},
 229         {0, 2, 3, 3, 0, 20}
 230 };
 231 
 232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
 233         {0, 0, 0, 0, 0, 100},
 234         {0, 0, 0, 0, 0, 50},
 235         {0, 0, 0, 0, 0, -1},
 236         {0, 0, 0, 3, 0, -1},
 237         {0, 0, 3, 3, 0, -1},
 238         {0, 0, 5, 3, 0, -1}
 239 };
 240 
 241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
 242         {0, 0, 0, 0, 0, 10},
 243         {0, 0, 0, 1, 0, 10},
 244         {0, 0, 1, 2, 0, 10},
 245         {0, 0, 1, 3, 0, 10},
 246         {0, 0, 4, 3, 0, 10},
 247         {0, 0, 6, 3, 0, 10}
 248 };
 249 
 250 enum {
 251         NPHY_RXCAL_GAIN_INIT = 0,
 252         NPHY_RXCAL_GAIN_UP,
 253         NPHY_RXCAL_GAIN_DOWN
 254 };
 255 
 256 #define wlc_phy_get_papd_nphy(pi) \
 257         (read_phy_reg((pi), 0x1e7) & \
 258          ((0x1 << 15) | \
 259           (0x1 << 14) | \
 260           (0x1 << 13)))
 261 
 262 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
 263         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
 264          230, -44, 230, 201, -191, 201},
 265         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
 266          26, 34, -32, 34},
 267         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
 268          121, -73, 121, 91, 124, 91},
 269         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
 270          151, 301, 151, 602, -752, 602},
 271         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
 272          12, 25, 12, 13, 27, 13},
 273         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
 274          230, -44, 230, 201, -191, 201},
 275         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
 276          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
 277 };
 278 
 279 struct chan_info_nphy_2055 {
 280         u16 chan;
 281         u16 freq;
 282         uint unknown;
 283         u8 RF_pll_ref;
 284         u8 RF_rf_pll_mod1;
 285         u8 RF_rf_pll_mod0;
 286         u8 RF_vco_cap_tail;
 287         u8 RF_vco_cal1;
 288         u8 RF_vco_cal2;
 289         u8 RF_pll_lf_c1;
 290         u8 RF_pll_lf_r1;
 291         u8 RF_pll_lf_c2;
 292         u8 RF_lgbuf_cen_buf;
 293         u8 RF_lgen_tune1;
 294         u8 RF_lgen_tune2;
 295         u8 RF_core1_lgbuf_a_tune;
 296         u8 RF_core1_lgbuf_g_tune;
 297         u8 RF_core1_rxrf_reg1;
 298         u8 RF_core1_tx_pga_pad_tn;
 299         u8 RF_core1_tx_mx_bgtrim;
 300         u8 RF_core2_lgbuf_a_tune;
 301         u8 RF_core2_lgbuf_g_tune;
 302         u8 RF_core2_rxrf_reg1;
 303         u8 RF_core2_tx_pga_pad_tn;
 304         u8 RF_core2_tx_mx_bgtrim;
 305         u16 PHY_BW1a;
 306         u16 PHY_BW2;
 307         u16 PHY_BW3;
 308         u16 PHY_BW4;
 309         u16 PHY_BW5;
 310         u16 PHY_BW6;
 311 };
 312 
 313 struct chan_info_nphy_radio205x {
 314         u16 chan;
 315         u16 freq;
 316         u8 RF_SYN_pll_vcocal1;
 317         u8 RF_SYN_pll_vcocal2;
 318         u8 RF_SYN_pll_refdiv;
 319         u8 RF_SYN_pll_mmd2;
 320         u8 RF_SYN_pll_mmd1;
 321         u8 RF_SYN_pll_loopfilter1;
 322         u8 RF_SYN_pll_loopfilter2;
 323         u8 RF_SYN_pll_loopfilter3;
 324         u8 RF_SYN_pll_loopfilter4;
 325         u8 RF_SYN_pll_loopfilter5;
 326         u8 RF_SYN_reserved_addr27;
 327         u8 RF_SYN_reserved_addr28;
 328         u8 RF_SYN_reserved_addr29;
 329         u8 RF_SYN_logen_VCOBUF1;
 330         u8 RF_SYN_logen_MIXER2;
 331         u8 RF_SYN_logen_BUF3;
 332         u8 RF_SYN_logen_BUF4;
 333         u8 RF_RX0_lnaa_tune;
 334         u8 RF_RX0_lnag_tune;
 335         u8 RF_TX0_intpaa_boost_tune;
 336         u8 RF_TX0_intpag_boost_tune;
 337         u8 RF_TX0_pada_boost_tune;
 338         u8 RF_TX0_padg_boost_tune;
 339         u8 RF_TX0_pgaa_boost_tune;
 340         u8 RF_TX0_pgag_boost_tune;
 341         u8 RF_TX0_mixa_boost_tune;
 342         u8 RF_TX0_mixg_boost_tune;
 343         u8 RF_RX1_lnaa_tune;
 344         u8 RF_RX1_lnag_tune;
 345         u8 RF_TX1_intpaa_boost_tune;
 346         u8 RF_TX1_intpag_boost_tune;
 347         u8 RF_TX1_pada_boost_tune;
 348         u8 RF_TX1_padg_boost_tune;
 349         u8 RF_TX1_pgaa_boost_tune;
 350         u8 RF_TX1_pgag_boost_tune;
 351         u8 RF_TX1_mixa_boost_tune;
 352         u8 RF_TX1_mixg_boost_tune;
 353         u16 PHY_BW1a;
 354         u16 PHY_BW2;
 355         u16 PHY_BW3;
 356         u16 PHY_BW4;
 357         u16 PHY_BW5;
 358         u16 PHY_BW6;
 359 };
 360 
 361 struct chan_info_nphy_radio2057 {
 362         u16 chan;
 363         u16 freq;
 364         u8 RF_vcocal_countval0;
 365         u8 RF_vcocal_countval1;
 366         u8 RF_rfpll_refmaster_sparextalsize;
 367         u8 RF_rfpll_loopfilter_r1;
 368         u8 RF_rfpll_loopfilter_c2;
 369         u8 RF_rfpll_loopfilter_c1;
 370         u8 RF_cp_kpd_idac;
 371         u8 RF_rfpll_mmd0;
 372         u8 RF_rfpll_mmd1;
 373         u8 RF_vcobuf_tune;
 374         u8 RF_logen_mx2g_tune;
 375         u8 RF_logen_mx5g_tune;
 376         u8 RF_logen_indbuf2g_tune;
 377         u8 RF_logen_indbuf5g_tune;
 378         u8 RF_txmix2g_tune_boost_pu_core0;
 379         u8 RF_pad2g_tune_pus_core0;
 380         u8 RF_pga_boost_tune_core0;
 381         u8 RF_txmix5g_boost_tune_core0;
 382         u8 RF_pad5g_tune_misc_pus_core0;
 383         u8 RF_lna2g_tune_core0;
 384         u8 RF_lna5g_tune_core0;
 385         u8 RF_txmix2g_tune_boost_pu_core1;
 386         u8 RF_pad2g_tune_pus_core1;
 387         u8 RF_pga_boost_tune_core1;
 388         u8 RF_txmix5g_boost_tune_core1;
 389         u8 RF_pad5g_tune_misc_pus_core1;
 390         u8 RF_lna2g_tune_core1;
 391         u8 RF_lna5g_tune_core1;
 392         u16 PHY_BW1a;
 393         u16 PHY_BW2;
 394         u16 PHY_BW3;
 395         u16 PHY_BW4;
 396         u16 PHY_BW5;
 397         u16 PHY_BW6;
 398 };
 399 
 400 struct chan_info_nphy_radio2057_rev5 {
 401         u16 chan;
 402         u16 freq;
 403         u8 RF_vcocal_countval0;
 404         u8 RF_vcocal_countval1;
 405         u8 RF_rfpll_refmaster_sparextalsize;
 406         u8 RF_rfpll_loopfilter_r1;
 407         u8 RF_rfpll_loopfilter_c2;
 408         u8 RF_rfpll_loopfilter_c1;
 409         u8 RF_cp_kpd_idac;
 410         u8 RF_rfpll_mmd0;
 411         u8 RF_rfpll_mmd1;
 412         u8 RF_vcobuf_tune;
 413         u8 RF_logen_mx2g_tune;
 414         u8 RF_logen_indbuf2g_tune;
 415         u8 RF_txmix2g_tune_boost_pu_core0;
 416         u8 RF_pad2g_tune_pus_core0;
 417         u8 RF_lna2g_tune_core0;
 418         u8 RF_txmix2g_tune_boost_pu_core1;
 419         u8 RF_pad2g_tune_pus_core1;
 420         u8 RF_lna2g_tune_core1;
 421         u16 PHY_BW1a;
 422         u16 PHY_BW2;
 423         u16 PHY_BW3;
 424         u16 PHY_BW4;
 425         u16 PHY_BW5;
 426         u16 PHY_BW6;
 427 };
 428 
 429 struct nphy_sfo_cfg {
 430         u16 PHY_BW1a;
 431         u16 PHY_BW2;
 432         u16 PHY_BW3;
 433         u16 PHY_BW4;
 434         u16 PHY_BW5;
 435         u16 PHY_BW6;
 436 };
 437 
 438 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
 439         {
 440          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 441          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 442          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
 443         {
 444          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 445          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 446          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
 447         {
 448          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 449          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 450          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
 451         {
 452          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 453          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 454          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
 455         {
 456          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 457          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 458          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
 459         {
 460          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
 461          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 462          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
 463         {
 464          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
 465          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 466          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
 467         {
 468          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
 469          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 470          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
 471         {
 472          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
 473          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 474          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
 475         {
 476          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
 477          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 478          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
 479         {
 480          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
 481          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 482          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
 483         {
 484          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
 485          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 486          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
 487         {
 488          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
 489          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 490          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
 491         {
 492          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
 493          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
 494          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
 495         {
 496          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
 497          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
 498          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
 499         {
 500          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
 501          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
 502          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
 503         {
 504          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
 505          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
 506          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
 507         {
 508          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
 509          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
 510          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
 511         {
 512          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
 513          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
 514          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
 515         {
 516          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
 517          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
 518          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
 519         {
 520          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
 521          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
 522          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
 523         {
 524          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
 525          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
 526          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
 527         {
 528          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
 529          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
 530          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
 531         {
 532          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
 533          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
 534          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
 535         {
 536          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
 537          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
 538          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
 539         {
 540          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
 541          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
 542          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
 543         {
 544          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
 545          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
 546          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
 547         {
 548          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
 549          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
 550          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
 551         {
 552          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
 553          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
 554          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
 555         {
 556          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
 557          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
 558          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
 559         {
 560          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
 561          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
 562          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
 563         {
 564          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
 565          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
 566          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
 567         {
 568          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
 569          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
 570          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
 571         {
 572          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
 573          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
 574          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
 575         {
 576          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
 577          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
 578          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
 579         {
 580          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
 581          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
 582          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
 583         {
 584          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
 585          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
 586          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
 587         {
 588          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
 589          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
 590          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
 591         {
 592          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
 593          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
 594          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
 595         {
 596          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
 597          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
 598          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
 599         {
 600          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
 601          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
 602          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
 603         {
 604          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
 605          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
 606          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
 607         {
 608          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
 609          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
 610          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
 611         {
 612          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
 613          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
 614          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
 615         {
 616          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
 617          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
 618          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
 619         {
 620          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
 621          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
 622          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
 623         {
 624          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
 625          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
 626          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
 627         {
 628          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
 629          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
 630          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
 631         {
 632          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
 633          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
 634          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
 635         {
 636          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
 637          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
 638          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
 639         {
 640          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
 641          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
 642          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
 643         {
 644          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
 645          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
 646          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
 647         {
 648          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
 649          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
 650          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
 651         {
 652          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
 653          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
 654          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
 655         {
 656          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
 657          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
 658          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
 659         {
 660          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
 661          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
 662          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
 663         {
 664          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
 665          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
 666          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
 667         {
 668          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
 669          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
 670          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
 671         {
 672          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
 673          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
 674          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
 675         {
 676          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
 677          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
 678          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
 679         {
 680          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
 681          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
 682          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
 683         {
 684          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
 685          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
 686          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
 687         {
 688          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
 689          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
 690          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
 691         {
 692          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
 693          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
 694          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
 695         {
 696          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
 697          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
 698          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
 699         {
 700          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
 701          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
 702          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
 703         {
 704          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
 705          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
 706          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
 707         {
 708          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
 709          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
 710          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
 711         {
 712          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
 713          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
 714          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
 715         {
 716          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
 717          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
 718          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
 719         {
 720          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
 721          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
 722          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
 723         {
 724          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
 725          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 726          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
 727         {
 728          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
 729          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 730          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
 731         {
 732          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
 733          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 734          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
 735         {
 736          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
 737          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 738          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
 739         {
 740          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
 741          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 742          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
 743         {
 744          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
 745          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 746          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
 747         {
 748          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 749          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 750          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
 751         {
 752          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 753          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 754          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
 755         {
 756          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 757          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 758          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
 759         {
 760          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
 761          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 762          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
 763         {
 764          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 765          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 766          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
 767         {
 768          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
 769          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 770          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
 771         {
 772          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 773          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 774          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
 775         {
 776          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
 777          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 778          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
 779         {
 780          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 781          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 782          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
 783         {
 784          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
 785          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 786          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
 787         {
 788          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 789          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 790          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
 791         {
 792          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
 793          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 794          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
 795         {
 796          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 797          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 798          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
 799         {
 800          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
 801          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 802          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
 803         {
 804          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 805          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 806          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
 807         {
 808          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
 809          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 810          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
 811         {
 812          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
 813          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 814          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
 815         {
 816          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
 817          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 818          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
 819         {
 820          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
 821          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 822          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
 823         {
 824          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
 825          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 826          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
 827         {
 828          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
 829          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 830          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
 831         {
 832          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
 833          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 834          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
 835         {
 836          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
 837          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 838          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
 839         {
 840          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
 841          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 842          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
 843         {
 844          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
 845          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 846          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
 847         {
 848          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
 849          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 850          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
 851         {
 852          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
 853          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 854          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
 855         {
 856          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
 857          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 858          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
 859         {
 860          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
 861          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 862          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
 863         {
 864          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
 865          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 866          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
 867         {
 868          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
 869          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 870          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
 871         {
 872          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
 873          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 874          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
 875         {
 876          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
 877          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
 878          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
 879         {
 880          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
 881          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
 882          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
 883         {
 884          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
 885          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
 886          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
 887         {
 888          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
 889          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
 890          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
 891         {
 892          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
 893          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
 894          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
 895         {
 896          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
 897          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
 898          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
 899         {
 900          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
 901          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
 902          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
 903         {
 904          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
 905          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
 906          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
 907         {
 908          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
 909          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
 910          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
 911         {
 912          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
 913          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
 914          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
 915         {
 916          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
 917          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
 918          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
 919         {
 920          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
 921          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
 922          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
 923         {
 924          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
 925          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
 926          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
 927         {
 928          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
 929          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
 930          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
 931         {
 932          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
 933          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
 934          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
 935 };
 936 
 937 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
 938         {
 939          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
 940          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 941          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 942          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
 943         {
 944          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
 945          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 946          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 947          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
 948         {
 949          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
 950          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 951          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 952          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
 953         {
 954          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
 955          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 956          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 957          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
 958         {
 959          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
 960          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 961          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 962          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
 963         {
 964          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
 965          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 966          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 967          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
 968         {
 969          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
 970          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 971          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 972          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
 973         {
 974          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
 975          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
 976          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
 977          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
 978         {
 979          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
 980          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
 981          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
 982          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
 983         {
 984          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
 985          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
 986          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
 987          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
 988         {
 989          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
 990          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
 991          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
 992          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
 993         {
 994          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
 995          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
 996          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
 997          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
 998         {
 999          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1000          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1001          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1002          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1003         {
1004          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1005          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1006          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1007          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1008         {
1009          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1010          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1011          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1012          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1013         {
1014          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1015          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1016          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1017          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1018         {
1019          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1020          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1021          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1022          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1023         {
1024          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1025          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1026          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1027          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1028         {
1029          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1030          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1031          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1032          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1033         {
1034          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1035          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1036          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1037          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1038         {
1039          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1040          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1041          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1042          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1043         {
1044          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1045          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1046          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1047          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1048         {
1049          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1050          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1051          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1052          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1053         {
1054          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1055          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1056          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1057          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1058         {
1059          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1060          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1061          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1062          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1063         {
1064          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1065          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1066          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1067          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1068         {
1069          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1070          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1071          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1072          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1073         {
1074          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1075          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1076          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1077          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1078         {
1079          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1080          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1081          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1082          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1083         {
1084          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1085          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1086          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1087          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1088         {
1089          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1090          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1091          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1092          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1093         {
1094          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1095          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1096          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1097          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1098         {
1099          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1100          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1101          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1102          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1103         {
1104          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1105          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1106          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1107          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1108         {
1109          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1110          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1111          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1112          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1113         {
1114          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1115          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1116          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1117          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1118         {
1119          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1120          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1121          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1122          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1123         {
1124          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1125          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1126          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1127          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1128         {
1129          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1130          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1131          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1132          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1133         {
1134          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1135          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1136          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1137          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1138         {
1139          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1140          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1141          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1142          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1143         {
1144          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1145          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1146          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1147          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1148         {
1149          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1150          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1151          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1152          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1153         {
1154          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1155          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1156          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1157          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1158         {
1159          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1160          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1161          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1162          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1163         {
1164          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1165          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1166          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1167          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1168         {
1169          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1170          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1171          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1172          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1173         {
1174          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1175          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1176          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1177          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1178         {
1179          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1180          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1181          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1182          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1183         {
1184          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1185          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1186          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1187          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1188         {
1189          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1190          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1191          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1192          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1193         {
1194          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1195          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1196          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1197          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1198         {
1199          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1200          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1201          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1202          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1203         {
1204          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1205          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1206          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1207          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1208         {
1209          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1210          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1211          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1212          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1213         {
1214          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1215          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1216          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1217          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1218         {
1219          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1220          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1221          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1222          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1223         {
1224          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1225          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1226          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1227          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1228         {
1229          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1230          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1231          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1232          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1233         {
1234          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1235          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1236          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1237          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1238         {
1239          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1240          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1241          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1242          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1243         {
1244          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1245          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1246          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1247          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1248         {
1249          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1250          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1251          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1252          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1253         {
1254          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1255          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1256          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1257          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1258         {
1259          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1260          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1261          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1262          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1263         {
1264          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1265          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1266          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1267          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1268         {
1269          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1270          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1271          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1272          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1273         {
1274          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1275          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1276          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1277          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1278         {
1279          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1280          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1281          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1282          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1283         {
1284          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1285          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1286          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1287          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1288         {
1289          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1290          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1291          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1292          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1293         {
1294          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1295          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1296          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1297          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1298         {
1299          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1300          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1301          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1302          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1303         {
1304          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1305          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1306          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1307          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1308         {
1309          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1310          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1311          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1312          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1313         {
1314          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1315          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1316          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1317          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1318         {
1319          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1320          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1321          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1322          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1323         {
1324          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1325          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1326          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1327          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1328         {
1329          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1330          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1331          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1332          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1333         {
1334          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1335          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1336          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1337          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1338         {
1339          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1340          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1341          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1342          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1343         {
1344          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1345          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1346          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1347          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1348         {
1349          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1350          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1351          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1352          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1353         {
1354          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1355          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1356          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1357          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1358         {
1359          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1360          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1361          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1362          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1363         {
1364          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1365          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1366          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1367          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1368         {
1369          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1370          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1371          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1372          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1373         {
1374          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1375          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1376          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1377          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1378         {
1379          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1380          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1381          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1382          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1383         {
1384          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1385          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1386          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1387          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1388         {
1389          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1390          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1391          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1392          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1393         {
1394          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1395          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1396          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1397          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1398         {
1399          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1400          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1401          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1402          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1403         {
1404          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1405          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1406          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1407          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1408         {
1409          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1410          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1411          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1412          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1413         {
1414          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1415          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1416          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1417          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1418         {
1419          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1420          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1421          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1422          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1423         {
1424          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1425          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1426          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1427          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1428         {
1429          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1430          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1431          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1432          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1433         {
1434          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1435          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1436          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1437          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1438         {
1439          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1440          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1441          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1442          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1443         {
1444          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1445          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1446          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1447          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1448         {
1449          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1450          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1451          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1452          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1453         {
1454          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1455          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1456          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1457          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1458         {
1459          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1460          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1461          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1462          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1463         {
1464          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1465          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1466          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1467          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1468         {
1469          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1470          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1471          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1472          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1473         {
1474          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1475          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1476          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1477          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1478         {
1479          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1480          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1481          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1482          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1483         {
1484          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1485          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1486          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1487          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1488         {
1489          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1490          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1491          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1492          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1493         {
1494          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1495          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1496          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1497          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1498         {
1499          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1500          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1501          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1502          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1503         {
1504          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1505          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1506          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1507          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1508         {
1509          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1510          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1511          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1512          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1513         {
1514          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1515          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1516          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1517          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1518         {
1519          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1520          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1521          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1522          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1523         {
1524          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1525          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1526          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1527          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1528         {
1529          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1530          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1531          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1532          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1533         {
1534          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1535          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1536          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1537          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1538         {
1539          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1540          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1541          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1542          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1543         {
1544          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1545          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1546          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1547          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1548         {
1549          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1550          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1551          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1552          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1553         {
1554          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1555          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1556          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1557          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1558 };
1559 
1560 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1561         {
1562          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1563          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1564          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1565          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1566         {
1567          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1568          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1569          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1570          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1571         {
1572          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1573          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1574          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1575          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1576         {
1577          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1578          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1579          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1580          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1581         {
1582          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1583          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1584          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1585          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1586         {
1587          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1588          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1589          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1590          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1591         {
1592          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1593          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1594          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1595          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1596         {
1597          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1598          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1599          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1600          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1601         {
1602          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1603          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1604          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1605          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1606         {
1607          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1608          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1609          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1610          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1611         {
1612          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1613          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1614          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1615          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1616         {
1617          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1618          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1619          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1620          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1621         {
1622          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1623          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1624          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1625          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1626         {
1627          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1628          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1629          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1630          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1631         {
1632          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1633          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1634          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1635          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1636         {
1637          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1638          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1639          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1640          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1641         {
1642          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1643          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1644          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1645          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1646         {
1647          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1648          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1649          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1650          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1651         {
1652          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1653          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1654          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1655          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1656         {
1657          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1658          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1659          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1660          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1661         {
1662          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1663          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1664          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1665          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1666         {
1667          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1668          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1669          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1670          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1671         {
1672          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1673          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1674          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1675          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1676         {
1677          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1678          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1679          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1680          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1681         {
1682          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1683          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1684          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1685          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1686         {
1687          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1688          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1689          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1690          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1691         {
1692          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1693          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1694          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1695          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1696         {
1697          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1698          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1699          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1700          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1701         {
1702          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1703          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1704          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1705          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1706         {
1707          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1708          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1709          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1710          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1711         {
1712          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1713          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1714          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1715          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1716         {
1717          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1718          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1719          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1720          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1721         {
1722          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1723          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1724          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1725          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1726         {
1727          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1728          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1729          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1730          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1731         {
1732          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1733          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1734          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1735          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1736         {
1737          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1738          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1739          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1740          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1741         {
1742          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1743          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1744          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1745          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1746         {
1747          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1748          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1749          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1750          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1751         {
1752          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1753          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1754          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1755          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1756         {
1757          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1758          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1759          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1760          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1761         {
1762          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1763          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1764          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1765          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1766         {
1767          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1768          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1769          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1770          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1771         {
1772          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1773          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1774          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1775          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1776         {
1777          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1778          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1779          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1780          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1781         {
1782          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1783          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1784          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1785          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1786         {
1787          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1788          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1789          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1790          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1791         {
1792          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1793          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1794          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1795          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1796         {
1797          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1798          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1799          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1800          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1801         {
1802          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1803          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1804          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1805          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1806         {
1807          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1808          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1809          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1810          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1811         {
1812          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1813          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1814          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1815          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1816         {
1817          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1818          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1819          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1820          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1821         {
1822          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1823          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1824          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1825          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1826         {
1827          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1828          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1829          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1830          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1831         {
1832          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1833          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1834          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1835          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1836         {
1837          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1838          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1839          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1840          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1841         {
1842          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1843          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1844          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1845          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1846         {
1847          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1848          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1849          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1850          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1851         {
1852          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1853          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1854          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1855          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1856         {
1857          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1858          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1859          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1860          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1861         {
1862          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1863          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1864          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1865          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1866         {
1867          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1868          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1869          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1870          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1871         {
1872          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1873          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1874          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1875          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1876         {
1877          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1878          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1879          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1880          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1881         {
1882          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1883          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1884          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1885          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1886         {
1887          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1888          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1889          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1890          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1891         {
1892          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1893          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1894          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1895          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1896         {
1897          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1898          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1899          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1900          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1901         {
1902          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1903          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1904          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1905          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1906         {
1907          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1908          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1909          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1910          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1911         {
1912          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1913          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1914          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1915          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1916         {
1917          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1918          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1919          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1920          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1921         {
1922          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1923          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1924          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1925          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1926         {
1927          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1928          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1929          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1930          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1931         {
1932          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1933          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1934          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1935          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1936         {
1937          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1938          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1939          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1940          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1941         {
1942          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1943          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1944          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1945          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1946         {
1947          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1948          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1949          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1950          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1951         {
1952          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1953          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1954          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1955          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1956         {
1957          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1958          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1959          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1960          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1961         {
1962          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1963          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1964          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1965          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1966         {
1967          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1968          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1969          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1970          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1971         {
1972          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1973          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1974          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1975          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1976         {
1977          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1978          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1979          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1980          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1981         {
1982          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1983          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1984          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1985          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1986         {
1987          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1988          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1989          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1990          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1991         {
1992          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1993          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1994          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1995          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1996         {
1997          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1998          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1999          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2000          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2001         {
2002          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2003          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2004          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2005          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2006         {
2007          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2008          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2009          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2010          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2011         {
2012          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2013          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2014          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2015          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2016         {
2017          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2018          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2019          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2020          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2021         {
2022          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2023          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2024          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2025          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2026         {
2027          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2028          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2029          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2030          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2031         {
2032          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2033          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2034          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2035          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2036         {
2037          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2038          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2039          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2040          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2041         {
2042          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2043          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2044          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2045          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2046         {
2047          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2048          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2049          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2050          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2051         {
2052          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2053          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2054          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2055          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2056         {
2057          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2058          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2059          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2060          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2061         {
2062          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2063          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2064          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2065          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2066         {
2067          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2068          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2069          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2070          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2071         {
2072          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2073          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2074          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2075          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2076         {
2077          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2078          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2079          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2080          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2081         {
2082          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2083          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2084          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2085          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2086         {
2087          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2088          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2089          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2090          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2091         {
2092          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2093          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2094          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2095          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2096         {
2097          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2098          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2099          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2100          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2101         {
2102          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2103          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2104          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2105          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2106         {
2107          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2108          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2109          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2110          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2111         {
2112          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2113          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2114          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2115          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2116         {
2117          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2118          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2119          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2120          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2121         {
2122          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2123          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2124          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2125          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2126         {
2127          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2128          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2129          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2130          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2131         {
2132          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2133          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2134          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2135          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2136         {
2137          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2138          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2139          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2140          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2141         {
2142          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2143          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2144          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2145          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2146         {
2147          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2148          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2149          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2150          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2151         {
2152          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2153          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2154          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2155          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2156         {
2157          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2158          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2159          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2160          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2161         {
2162          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2163          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2164          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2165          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2166         {
2167          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2168          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2169          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2170          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2171         {
2172          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2173          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2174          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2175          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2176         {
2177          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2178          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2179          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2180          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2181 };
2182 
2183 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2184         {
2185          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2186          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2187          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2188          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2189         {
2190          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2191          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2192          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2193          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2194         {
2195          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2196          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2197          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2198          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2199         {
2200          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2201          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2202          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2203          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2204         {
2205          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2206          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2207          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2208          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2209         {
2210          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2211          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2212          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2213          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2214         {
2215          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2216          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2217          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2218          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2219         {
2220          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2221          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2222          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2223          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2224         {
2225          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2226          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2227          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2228          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2229         {
2230          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2231          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2232          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2233          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2234         {
2235          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2236          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2237          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2238          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2239         {
2240          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2241          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2242          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2243          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2244         {
2245          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2246          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2247          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2248          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2249         {
2250          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2251          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2252          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2253          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2254         {
2255          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2256          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2257          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2258          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2259         {
2260          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2261          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2262          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2263          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2264         {
2265          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2266          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2267          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2268          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2269         {
2270          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2271          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2272          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2273          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2274         {
2275          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2276          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2277          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2278          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2279         {
2280          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2281          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2282          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2283          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2284         {
2285          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2286          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2287          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2288          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2289         {
2290          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2291          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2292          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2293          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2294         {
2295          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2296          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2297          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2298          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2299         {
2300          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2301          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2302          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2303          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2304         {
2305          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2306          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2307          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2308          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2309         {
2310          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2311          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2312          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2313          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2314         {
2315          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2316          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2317          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2318          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2319         {
2320          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2321          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2322          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2323          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2324         {
2325          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2326          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2327          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2328          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2329         {
2330          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2331          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2332          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2333          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2334         {
2335          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2336          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2337          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2338          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2339         {
2340          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2341          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2342          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2343          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2344         {
2345          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2346          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2347          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2348          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2349         {
2350          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2351          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2352          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2353          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2354         {
2355          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2356          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2357          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2358          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2359         {
2360          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2361          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2362          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2363          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2364         {
2365          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2366          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2367          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2368          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2369         {
2370          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2371          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2372          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2373          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2374         {
2375          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2376          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2377          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2378          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2379         {
2380          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2381          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2382          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2383          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2384         {
2385          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2386          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2387          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2388          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2389         {
2390          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2391          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2392          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2393          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2394         {
2395          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2396          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2397          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2398          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2399         {
2400          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2401          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2402          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2403          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2404         {
2405          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2406          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2407          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2408          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2409         {
2410          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2411          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2412          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2413          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2414         {
2415          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2416          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2417          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2418          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2419         {
2420          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2421          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2422          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2423          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2424         {
2425          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2426          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2427          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2428          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2429         {
2430          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2431          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2432          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2433          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2434         {
2435          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2436          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2437          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2438          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2439         {
2440          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2441          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2442          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2443          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2444         {
2445          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2446          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2447          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2448          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2449         {
2450          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2451          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2452          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2453          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2454         {
2455          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2456          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2457          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2458          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2459         {
2460          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2461          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2462          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2463          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2464         {
2465          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2466          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2467          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2468          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2469         {
2470          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2471          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2472          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2473          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2474         {
2475          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2476          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2477          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2478          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2479         {
2480          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2481          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2482          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2483          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2484         {
2485          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2486          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2487          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2488          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2489         {
2490          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2491          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2492          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2493          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2494         {
2495          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2496          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2497          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2498          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2499         {
2500          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2501          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2502          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2503          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2504         {
2505          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2506          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2507          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2508          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2509         {
2510          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2511          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2512          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2513          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2514         {
2515          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2516          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2517          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2518          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2519         {
2520          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2521          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2522          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2523          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2524         {
2525          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2526          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2527          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2528          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2529         {
2530          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2531          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2532          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2533          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2534         {
2535          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2536          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2537          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2538          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2539         {
2540          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2541          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2542          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2543          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2544         {
2545          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2546          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2547          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2548          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2549         {
2550          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2551          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2552          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2553          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2554         {
2555          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2556          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2557          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2558          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2559         {
2560          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2561          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2562          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2563          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2564         {
2565          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2566          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2567          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2568          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2569         {
2570          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2571          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2572          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2573          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2574         {
2575          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2576          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2577          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2578          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2579         {
2580          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2581          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2582          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2583          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2584         {
2585          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2586          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2587          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2588          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2589         {
2590          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2591          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2592          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2593          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2594         {
2595          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2596          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2597          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2598          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2599         {
2600          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2601          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2602          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2603          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2604         {
2605          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2606          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2607          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2608          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2609         {
2610          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2611          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2612          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2613          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2614         {
2615          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2616          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2617          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2618          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2619         {
2620          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2621          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2622          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2623          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2624         {
2625          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2626          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2627          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2628          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2629         {
2630          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2631          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2632          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2633          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2634         {
2635          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2636          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2637          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2638          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2639         {
2640          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2641          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2642          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2643          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2644         {
2645          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2646          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2647          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2648          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2649         {
2650          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2651          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2652          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2653          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2654         {
2655          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2656          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2657          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2658          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2659         {
2660          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2661          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2662          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2663          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2664         {
2665          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2666          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2667          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2668          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2669         {
2670          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2671          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2672          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2673          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2674         {
2675          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2676          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2677          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2678          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2679         {
2680          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2681          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2682          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2683          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2684         {
2685          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2686          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2687          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2688          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2689         {
2690          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2691          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2692          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2693          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2694         {
2695          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2696          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2697          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2698          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2699         {
2700          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2701          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2702          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2703          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2704         {
2705          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2706          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2707          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2708          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2709         {
2710          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2711          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2712          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2713          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2714         {
2715          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2716          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2717          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2718          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2719         {
2720          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2721          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2722          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2723          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2724         {
2725          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2726          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2727          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2728          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2729         {
2730          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2731          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2732          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2733          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2734         {
2735          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2736          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2737          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2738          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2739         {
2740          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2741          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2742          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2743          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2744         {
2745          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2746          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2747          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2748          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2749         {
2750          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2751          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2752          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2753          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2754         {
2755          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2756          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2757          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2758          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2759         {
2760          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2761          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2762          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2763          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2764         {
2765          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2766          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2767          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2768          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2769         {
2770          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2771          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2772          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2773          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2774         {
2775          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2776          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2777          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2778          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2779         {
2780          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2781          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2782          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2783          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2784         {
2785          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2786          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2787          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2788          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2789         {
2790          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2791          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2792          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2793          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2794         {
2795          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2796          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2797          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2798          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2799         {
2800          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2801          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2802          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2803          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2804 };
2805 
2806 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2807         {
2808          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2809          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2810          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2811          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2812         {
2813          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2814          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2815          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2816          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2817         {
2818          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2819          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2820          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2821          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2822         {
2823          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2824          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2825          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2826          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2827         {
2828          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2829          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2830          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2831          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2832         {
2833          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2834          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2835          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2836          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2837         {
2838          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2839          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2840          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2841          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2842         {
2843          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2844          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2845          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2846          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2847         {
2848          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2849          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2850          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2851          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2852         {
2853          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2854          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2855          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2856          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2857         {
2858          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2859          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2860          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2861          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2862         {
2863          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2864          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2865          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2866          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2867         {
2868          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2869          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2870          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2871          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2872         {
2873          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2874          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2875          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2876          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2877         {
2878          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2879          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2880          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2881          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2882         {
2883          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2884          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2885          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2886          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2887         {
2888          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2889          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2890          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2891          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2892         {
2893          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2894          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2895          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2896          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2897         {
2898          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2899          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2900          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2901          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2902         {
2903          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2904          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2905          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2906          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2907         {
2908          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2909          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2910          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2911          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2912         {
2913          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2914          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2915          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2916          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2917         {
2918          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2919          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2920          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2921          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2922         {
2923          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2924          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2925          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2926          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2927         {
2928          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2929          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2930          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2931          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2932         {
2933          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2934          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2935          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2936          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2937         {
2938          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2939          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2940          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2941          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2942         {
2943          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2944          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2945          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2946          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2947         {
2948          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2949          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2950          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2951          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2952         {
2953          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2954          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2955          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2956          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2957         {
2958          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2959          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2960          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2961          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2962         {
2963          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2964          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2965          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2966          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2967         {
2968          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2969          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2970          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2971          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2972         {
2973          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2974          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2975          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2976          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2977         {
2978          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2979          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2980          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2981          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2982         {
2983          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2984          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2985          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2986          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2987         {
2988          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2989          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2990          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2991          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2992         {
2993          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2994          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2995          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2996          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2997         {
2998          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2999          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3000          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3001          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3002         {
3003          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3004          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3005          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3006          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3007         {
3008          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3009          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3010          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3011          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3012         {
3013          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3014          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3015          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3016          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3017         {
3018          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3019          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3020          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3021          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3022         {
3023          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3024          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3025          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3026          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3027         {
3028          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3029          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3030          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3031          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3032         {
3033          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3034          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3035          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3036          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3037         {
3038          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3039          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3040          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3041          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3042         {
3043          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3044          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3045          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3046          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3047         {
3048          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3049          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3050          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3051          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3052         {
3053          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3054          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3055          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3056          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3057         {
3058          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3059          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3060          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3061          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3062         {
3063          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3064          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3065          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3066          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3067         {
3068          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3069          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3070          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3071          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3072         {
3073          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3074          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3075          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3076          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3077         {
3078          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3079          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3080          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3081          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3082         {
3083          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3084          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3085          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3086          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3087         {
3088          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3089          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3090          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3091          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3092         {
3093          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3094          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3095          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3096          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3097         {
3098          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3099          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3100          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3101          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3102         {
3103          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3104          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3105          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3106          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3107         {
3108          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3109          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3110          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3111          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3112         {
3113          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3114          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3115          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3116          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3117         {
3118          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3119          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3120          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3121          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3122         {
3123          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3124          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3125          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3126          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3127         {
3128          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3129          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3130          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3131          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3132         {
3133          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3134          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3135          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3136          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3137         {
3138          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3139          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3140          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3141          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3142         {
3143          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3144          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3145          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3146          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3147         {
3148          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3149          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3150          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3151          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3152         {
3153          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3154          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3155          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3156          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3157         {
3158          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3159          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3160          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3161          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3162         {
3163          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3164          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3165          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3166          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3167         {
3168          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3169          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3170          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3171          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3172         {
3173          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3174          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3175          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3176          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3177         {
3178          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3179          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3180          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3181          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3182         {
3183          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3184          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3185          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3186          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3187         {
3188          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3189          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3190          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3191          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3192         {
3193          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3194          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3195          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3196          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3197         {
3198          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3199          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3200          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3201          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3202         {
3203          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3204          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3205          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3206          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3207         {
3208          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3209          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3210          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3211          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3212         {
3213          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3214          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3215          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3216          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3217         {
3218          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3219          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3220          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3221          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3222         {
3223          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3224          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3225          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3226          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3227         {
3228          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3229          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3230          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3231          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3232         {
3233          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3234          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3235          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3236          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3237         {
3238          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3239          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3240          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3241          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3242         {
3243          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3244          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3245          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3246          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3247         {
3248          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3249          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3250          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3251          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3252         {
3253          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3254          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3255          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3256          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3257         {
3258          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3259          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3260          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3261          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3262         {
3263          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3264          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3265          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3266          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3267         {
3268          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3269          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3270          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3271          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3272         {
3273          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3274          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3275          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3276          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3277         {
3278          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3279          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3280          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3281          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3282         {
3283          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3284          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3285          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3286          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3287         {
3288          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3289          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3290          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3291          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3292         {
3293          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3294          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3295          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3296          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3297         {
3298          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3299          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3300          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3301          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3302         {
3303          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3304          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3305          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3306          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3307         {
3308          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3309          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3310          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3311          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3312         {
3313          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3314          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3315          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3316          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3317         {
3318          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3319          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3320          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3321          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3322         {
3323          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3324          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3325          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3326          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3327         {
3328          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3329          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3330          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3331          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3332         {
3333          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3334          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3335          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3336          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3337         {
3338          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3339          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3340          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3341          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3342         {
3343          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3344          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3345          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3346          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3347         {
3348          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3349          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3350          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3351          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3352         {
3353          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3354          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3355          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3356          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3357         {
3358          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3359          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3360          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3361          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3362         {
3363          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3364          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3365          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3366          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3367         {
3368          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3369          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3370          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3371          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3372         {
3373          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3374          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3375          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3376          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3377         {
3378          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3379          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3380          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3381          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3382         {
3383          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3384          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3385          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3386          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3387         {
3388          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3389          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3390          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3391          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3392         {
3393          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3394          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3395          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3396          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3397         {
3398          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3399          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3400          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3401          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3402         {
3403          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3404          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3405          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3406          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3407         {
3408          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3409          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3410          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3411          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3412         {
3413          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3414          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3415          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3416          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3417         {
3418          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3419          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3420          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3421          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3422         {
3423          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3424          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3425          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3426          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3427 };
3428 
3429 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3430         {
3431          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3432          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3433          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3434          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3435         {
3436          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3437          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3438          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3439          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3440         {
3441          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3442          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3443          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3444          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3445         {
3446          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3447          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3448          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3449          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3450         {
3451          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3452          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3453          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3454          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3455         {
3456          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3457          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3458          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3459          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3460         {
3461          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3462          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3463          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3464          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3465         {
3466          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3467          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3468          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3469          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3470         {
3471          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3472          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3473          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3474          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3475         {
3476          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3477          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3478          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3479          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3480         {
3481          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3482          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3483          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3484          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3485         {
3486          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3487          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3488          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3489          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3490         {
3491          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3492          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3493          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3494          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3495         {
3496          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3497          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3498          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3499          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3500         {
3501          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3502          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3503          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3504          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3505         {
3506          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3507          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3508          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3509          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3510         {
3511          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3512          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3513          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3514          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3515         {
3516          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3517          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3518          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3519          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3520         {
3521          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3522          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3523          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3524          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3525         {
3526          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3527          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3528          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3529          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3530         {
3531          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3532          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3533          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3534          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3535         {
3536          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3537          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3538          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3539          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3540         {
3541          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3542          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3543          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3544          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3545         {
3546          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3547          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3548          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3549          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3550         {
3551          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3552          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3553          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3554          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3555         {
3556          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3557          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3558          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3559          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3560         {
3561          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3562          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3563          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3564          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3565         {
3566          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3567          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3568          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3569          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3570         {
3571          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3572          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3573          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3574          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3575         {
3576          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3577          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3578          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3579          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3580         {
3581          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3582          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3583          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3584          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3585         {
3586          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3587          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3588          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3589          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3590         {
3591          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3592          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3593          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3594          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3595         {
3596          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3597          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3598          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3599          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3600         {
3601          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3602          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3603          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3604          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3605         {
3606          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3607          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3608          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3609          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3610         {
3611          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3612          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3613          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3614          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3615         {
3616          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3617          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3618          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3619          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3620         {
3621          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3622          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3623          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3624          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3625         {
3626          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3627          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3628          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3629          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3630         {
3631          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3632          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3633          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3634          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3635         {
3636          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3637          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3638          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3639          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3640         {
3641          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3642          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3643          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3644          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3645         {
3646          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3647          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3648          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3649          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3650         {
3651          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3652          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3653          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3654          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3655         {
3656          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3657          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3658          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3659          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3660         {
3661          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3662          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3663          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3664          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3665         {
3666          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3667          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3668          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3669          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3670         {
3671          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3672          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3673          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3674          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3675         {
3676          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3677          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3678          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3679          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3680         {
3681          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3682          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3683          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3684          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3685         {
3686          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3687          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3688          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3689          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3690         {
3691          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3692          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3693          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3694          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3695         {
3696          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3697          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3698          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3699          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3700         {
3701          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3702          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3703          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3704          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3705         {
3706          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3707          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3708          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3709          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3710         {
3711          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3712          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3713          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3714          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3715         {
3716          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3717          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3718          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3719          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3720         {
3721          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3722          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3723          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3724          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3725         {
3726          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3727          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3728          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3729          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3730         {
3731          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3732          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3733          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3734          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3735         {
3736          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3737          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3738          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3739          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3740         {
3741          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3742          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3743          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3744          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3745         {
3746          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3747          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3748          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3749          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3750         {
3751          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3752          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3753          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3754          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3755         {
3756          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3757          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3758          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3759          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3760         {
3761          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3762          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3763          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3764          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3765         {
3766          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3767          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3768          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3769          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3770         {
3771          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3772          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3773          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3774          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3775         {
3776          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3777          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3778          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3779          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3780         {
3781          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3782          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3783          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3784          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3785         {
3786          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3787          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3788          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3789          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3790         {
3791          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3792          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3793          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3794          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3795         {
3796          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3797          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3798          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3799          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3800         {
3801          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3802          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3803          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3804          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3805         {
3806          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3807          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3808          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3809          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3810         {
3811          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3812          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3813          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3814          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3815         {
3816          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3817          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3818          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3819          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3820         {
3821          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3822          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3823          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3824          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3825         {
3826          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3827          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3828          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3829          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3830         {
3831          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3832          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3833          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3834          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3835         {
3836          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3837          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3838          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3839          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3840         {
3841          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3842          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3843          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3844          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3845         {
3846          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3847          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3848          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3849          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3850         {
3851          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3852          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3853          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3854          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3855         {
3856          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3857          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3858          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3859          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3860         {
3861          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3862          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3863          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3864          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3865         {
3866          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3867          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3868          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3869          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3870         {
3871          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3872          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3873          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3874          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3875         {
3876          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3877          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3878          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3879          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3880         {
3881          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3882          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3883          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3884          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3885         {
3886          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3887          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3888          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3889          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3890         {
3891          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3892          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3893          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3894          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3895         {
3896          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3897          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3898          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3899          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3900         {
3901          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3902          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3903          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3904          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3905         {
3906          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3907          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3908          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3909          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3910         {
3911          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3912          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3913          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3914          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3915         {
3916          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3917          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3918          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3919          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3920         {
3921          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3922          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3923          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3924          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3925         {
3926          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3927          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3928          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3929          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3930         {
3931          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3932          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3933          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3934          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3935         {
3936          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3937          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3938          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3939          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3940         {
3941          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3942          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3943          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3944          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3945         {
3946          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3947          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3948          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3949          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3950         {
3951          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3952          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3953          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3954          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3955         {
3956          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3957          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3958          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3959          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3960         {
3961          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3962          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3963          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3964          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3965         {
3966          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3967          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3968          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3969          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3970         {
3971          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3972          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3973          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3974          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3975         {
3976          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3977          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3978          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3979          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3980         {
3981          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3982          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3983          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3984          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3985         {
3986          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3987          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3988          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3989          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3990         {
3991          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3992          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3993          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3994          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3995         {
3996          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3997          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3998          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3999          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4000         {
4001          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4002          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4003          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4004          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4005         {
4006          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4007          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4008          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4009          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4010         {
4011          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4012          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4013          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4014          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4015         {
4016          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4017          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4018          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4019          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4020         {
4021          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4022          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4023          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4024          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4025         {
4026          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4027          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4028          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4029          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4030         {
4031          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4032          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4033          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4034          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4035         {
4036          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4037          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4038          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4039          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4040         {
4041          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4042          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4043          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4044          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4045         {
4046          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4047          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4048          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4049          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4050 };
4051 
4052 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4053         {
4054          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4055          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4056          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4057          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4058         {
4059          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4060          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4061          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4062          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4063         {
4064          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4065          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4066          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4067          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4068         {
4069          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4070          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4071          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4072          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4073         {
4074          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4075          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4076          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4077          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4078         {
4079          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4080          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4081          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4082          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4083         {
4084          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4085          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4086          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4087          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4088         {
4089          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4090          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4091          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4092          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4093         {
4094          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4095          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4096          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4097          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4098         {
4099          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4100          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4101          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4102          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4103         {
4104          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4105          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4106          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4107          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4108         {
4109          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4110          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4111          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4112          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4113         {
4114          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4115          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4116          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4117          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4118         {
4119          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4120          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4121          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4122          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4123         {
4124          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4125          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4126          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4127          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4128         {
4129          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4130          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4131          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4132          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4133         {
4134          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4135          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4136          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4137          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4138         {
4139          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4140          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4141          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4142          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4143         {
4144          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4145          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4146          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4147          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4148         {
4149          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4150          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4151          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4152          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4153         {
4154          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4155          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4156          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4157          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4158         {
4159          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4160          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4161          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4162          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4163         {
4164          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4165          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4166          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4167          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4168         {
4169          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4170          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4171          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4172          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4173         {
4174          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4175          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4176          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4177          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4178         {
4179          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4180          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4181          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4182          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4183         {
4184          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4185          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4186          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4187          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4188         {
4189          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4190          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4191          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4192          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4193         {
4194          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4195          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4196          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4197          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4198         {
4199          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4200          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4201          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4202          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4203         {
4204          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4205          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4206          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4207          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4208         {
4209          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4210          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4211          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4212          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4213         {
4214          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4215          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4216          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4217          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4218         {
4219          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4220          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4221          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4222          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4223         {
4224          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4225          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4226          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4227          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4228         {
4229          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4230          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4231          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4232          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4233         {
4234          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4235          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4236          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4237          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4238         {
4239          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4240          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4241          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4242          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4243         {
4244          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4245          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4246          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4247          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4248         {
4249          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4250          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4251          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4252          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4253         {
4254          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4255          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4256          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4257          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4258         {
4259          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4260          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4261          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4262          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4263         {
4264          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4265          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4266          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4267          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4268         {
4269          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4270          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4271          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4272          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4273         {
4274          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4275          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4276          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4277          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4278         {
4279          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4280          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4281          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4282          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4283         {
4284          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4285          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4286          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4287          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4288         {
4289          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4290          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4291          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4292          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4293         {
4294          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4295          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4296          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4297          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4298         {
4299          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4300          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4301          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4302          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4303         {
4304          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4305          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4306          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4307          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4308         {
4309          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4310          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4311          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4312          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4313         {
4314          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4315          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4316          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4317          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4318         {
4319          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4320          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4321          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4322          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4323         {
4324          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4325          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4326          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4327          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4328         {
4329          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4330          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4331          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4332          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4333         {
4334          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4335          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4336          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4337          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4338         {
4339          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4340          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4341          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4342          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4343         {
4344          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4345          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4346          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4347          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4348         {
4349          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4350          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4351          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4352          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4353         {
4354          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4355          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4356          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4357          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4358         {
4359          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4360          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4361          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4362          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4363         {
4364          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4365          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4366          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4367          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4368         {
4369          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4370          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4371          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4372          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4373         {
4374          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4375          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4376          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4377          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4378         {
4379          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4380          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4381          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4382          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4383         {
4384          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4385          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4386          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4387          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4388         {
4389          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4390          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4391          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4392          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4393         {
4394          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4395          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4396          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4397          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4398         {
4399          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4400          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4401          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4402          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4403         {
4404          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4405          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4406          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4407          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4408         {
4409          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4410          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4411          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4412          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4413         {
4414          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4415          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4416          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4417          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4418         {
4419          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4420          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4421          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4422          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4423         {
4424          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4425          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4426          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4427          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4428         {
4429          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4430          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4431          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4432          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4433         {
4434          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4435          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4436          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4437          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4438         {
4439          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4440          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4441          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4442          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4443         {
4444          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4445          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4446          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4447          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4448         {
4449          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4450          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4451          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4452          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4453         {
4454          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4455          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4456          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4457          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4458         {
4459          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4460          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4461          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4462          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4463         {
4464          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4465          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4466          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4467          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4468         {
4469          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4470          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4471          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4472          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4473         {
4474          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4475          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4476          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4477          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4478         {
4479          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4480          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4481          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4482          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4483         {
4484          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4485          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4486          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4487          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4488         {
4489          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4490          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4491          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4492          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4493         {
4494          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4495          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4496          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4497          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4498         {
4499          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4500          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4501          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4502          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4503         {
4504          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4505          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4506          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4507          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4508         {
4509          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4510          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4511          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4512          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4513         {
4514          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4515          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4516          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4517          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4518         {
4519          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4520          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4521          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4522          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4523         {
4524          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4525          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4526          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4527          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4528         {
4529          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4530          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4531          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4532          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4533         {
4534          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4535          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4536          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4537          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4538         {
4539          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4540          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4541          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4542          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4543         {
4544          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4545          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4546          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4547          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4548         {
4549          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4550          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4551          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4552          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4553         {
4554          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4555          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4556          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4557          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4558         {
4559          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4560          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4561          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4562          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4563         {
4564          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4565          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4566          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4567          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4568         {
4569          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4570          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4571          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4572          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4573         {
4574          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4575          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4576          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4577          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4578         {
4579          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4580          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4581          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4582          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4583         {
4584          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4585          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4586          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4587          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4588         {
4589          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4590          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4591          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4592          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4593         {
4594          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4595          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4596          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4597          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4598         {
4599          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4600          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4601          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4602          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4603         {
4604          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4605          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4606          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4607          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4608         {
4609          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4610          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4611          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4612          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4613         {
4614          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4615          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4616          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4617          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4618         {
4619          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4620          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4621          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4622          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4623         {
4624          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4625          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4626          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4627          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4628         {
4629          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4630          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4631          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4632          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4633         {
4634          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4635          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4636          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4637          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4638         {
4639          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4640          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4641          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4642          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4643         {
4644          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4645          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4646          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4647          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4648         {
4649          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4650          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4651          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4652          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4653         {
4654          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4655          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4656          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4657          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4658         {
4659          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4660          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4661          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4662          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4663         {
4664          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4665          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4666          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4667          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4668         {
4669          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4670          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4671          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4672          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4673 };
4674 
4675 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4676         {
4677          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4678          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4679          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4680          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4681         {
4682          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4683          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4684          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4685          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4686         {
4687          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4688          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4689          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4690          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4691         {
4692          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4693          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4694          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4695          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4696         {
4697          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4698          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4699          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4700          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4701         {
4702          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4703          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4704          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4705          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4706         {
4707          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4708          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4709          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4710          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4711         {
4712          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4713          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4714          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4715          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4716         {
4717          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4718          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4719          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4720          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4721         {
4722          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4723          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4724          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4725          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4726         {
4727          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4728          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4729          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4730          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4731         {
4732          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4733          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4734          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4735          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4736         {
4737          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4738          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4739          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4740          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4741         {
4742          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4743          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4744          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4745          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4746         {
4747          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4748          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4749          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4750          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4751         {
4752          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4753          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4754          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4755          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4756         {
4757          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4758          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4759          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4760          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4761         {
4762          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4763          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4764          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4765          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4766         {
4767          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4768          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4769          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4770          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4771         {
4772          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4773          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4774          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4775          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4776         {
4777          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4778          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4779          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4780          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4781         {
4782          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4783          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4784          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4785          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4786         {
4787          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4788          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4789          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4790          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4791         {
4792          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4793          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4794          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4795          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4796         {
4797          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4798          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4799          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4800          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4801         {
4802          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4803          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4804          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4805          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4806         {
4807          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4808          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4809          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4810          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4811         {
4812          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4813          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4814          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4815          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4816         {
4817          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4818          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4819          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4820          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4821         {
4822          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4823          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4824          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4825          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4826         {
4827          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4828          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4829          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4830          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4831         {
4832          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4833          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4834          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4835          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4836         {
4837          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4838          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4839          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4840          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4841         {
4842          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4843          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4844          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4845          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4846         {
4847          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4848          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4849          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4850          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4851         {
4852          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4853          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4854          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4855          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4856         {
4857          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4858          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4859          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4860          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4861         {
4862          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4863          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4864          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4865          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4866         {
4867          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4868          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4869          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4870          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4871         {
4872          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4873          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4874          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4875          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4876         {
4877          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4878          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4879          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4880          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4881         {
4882          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4883          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4884          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4885          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4886         {
4887          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4888          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4889          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4890          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4891         {
4892          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4893          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4894          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4895          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4896         {
4897          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4898          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4899          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4900          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4901         {
4902          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4903          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4904          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4905          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4906         {
4907          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4908          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4909          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4910          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4911         {
4912          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4913          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4914          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4915          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4916         {
4917          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4918          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4919          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4920          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4921         {
4922          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4923          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4924          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4925          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4926         {
4927          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4928          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4929          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4930          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4931         {
4932          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4933          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4934          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4935          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4936         {
4937          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4938          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4939          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4940          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4941         {
4942          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4943          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4944          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4945          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4946         {
4947          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4948          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4949          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4950          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4951         {
4952          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4953          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4954          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4955          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4956         {
4957          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4958          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4959          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4960          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4961         {
4962          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4963          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4964          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4965          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4966         {
4967          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4968          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4969          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4970          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4971         {
4972          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4973          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4974          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4975          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4976         {
4977          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4978          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4979          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4980          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4981         {
4982          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4983          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4984          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4985          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4986         {
4987          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4988          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4989          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4990          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4991         {
4992          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4993          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4994          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4995          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4996         {
4997          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4998          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4999          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5000          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5001         {
5002          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5003          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5004          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5005          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5006         {
5007          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5008          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5009          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5010          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5011         {
5012          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5013          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5014          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5015          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5016         {
5017          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5018          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5019          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5020          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5021         {
5022          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5023          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5024          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5025          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5026         {
5027          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5028          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5029          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5030          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5031         {
5032          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5033          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5034          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5035          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5036         {
5037          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5038          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5039          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5040          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5041         {
5042          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5043          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5044          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5045          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5046         {
5047          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5048          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5049          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5050          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5051         {
5052          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5053          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5054          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5055          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5056         {
5057          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5058          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5059          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5060          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5061         {
5062          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5063          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5064          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5065          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5066         {
5067          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5068          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5069          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5070          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5071         {
5072          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5073          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5074          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5075          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5076         {
5077          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5078          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5079          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5080          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5081         {
5082          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5083          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5084          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5085          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5086         {
5087          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5088          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5089          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5090          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5091         {
5092          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5093          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5094          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5095          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5096         {
5097          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5098          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5099          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5100          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5101         {
5102          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5103          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5104          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5105          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5106         {
5107          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5108          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5109          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5110          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5111         {
5112          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5113          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5114          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5115          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5116         {
5117          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5118          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5119          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5120          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5121         {
5122          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5123          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5124          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5125          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5126         {
5127          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5128          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5129          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5130          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5131         {
5132          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5133          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5134          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5135          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5136         {
5137          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5138          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5139          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5140          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5141         {
5142          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5143          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5144          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5145          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5146         {
5147          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5148          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5149          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5150          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5151         {
5152          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5153          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5154          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5155          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5156         {
5157          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5158          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5159          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5160          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5161         {
5162          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5163          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5164          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5165          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5166         {
5167          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5168          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5169          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5170          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5171         {
5172          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5173          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5174          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5175          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5176         {
5177          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5178          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5179          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5180          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5181         {
5182          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5183          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5184          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5185          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5186         {
5187          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5188          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5189          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5190          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5191         {
5192          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5193          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5194          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5195          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5196         {
5197          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5198          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5199          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5200          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5201         {
5202          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5203          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5204          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5205          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5206         {
5207          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5208          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5209          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5210          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5211         {
5212          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5213          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5214          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5215          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5216         {
5217          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5218          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5219          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5220          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5221         {
5222          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5223          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5224          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5225          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5226         {
5227          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5228          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5229          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5230          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5231         {
5232          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5233          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5234          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5235          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5236         {
5237          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5238          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5239          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5240          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5241         {
5242          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5243          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5244          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5245          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5246         {
5247          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5248          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5249          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5250          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5251         {
5252          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5253          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5254          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5255          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5256         {
5257          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5258          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5259          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5260          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5261         {
5262          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5263          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5264          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5265          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5266         {
5267          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5268          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5269          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5270          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5271         {
5272          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5273          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5274          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5275          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5276         {
5277          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5278          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5279          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5280          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5281         {
5282          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5283          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5284          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5285          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5286         {
5287          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5288          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5289          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5290          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5291         {
5292          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5293          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5294          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5295          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5296 };
5297 
5298 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5299         {
5300          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5301          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5302          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5303          0x0215,
5304          0x0216,
5305          },
5306         {
5307          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5308          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5309          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5310          0x0214,
5311          0x0215,
5312          },
5313         {
5314          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5315          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5316          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5317          0x0213,
5318          0x0214,
5319          },
5320         {
5321          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5322          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5323          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5324          0x0212,
5325          0x0213,
5326          },
5327         {
5328          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5329          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5330          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5331          0x0211,
5332          0x0212,
5333          },
5334         {
5335          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5336          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5337          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5338          0x020f,
5339          0x0211,
5340          },
5341         {
5342          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5343          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5344          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5345          0x020e,
5346          0x020f,
5347          },
5348         {
5349          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5350          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5351          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5352          0x020d,
5353          0x020e,
5354          },
5355         {
5356          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5357          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5358          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5359          0x020c,
5360          0x020d,
5361          },
5362         {
5363          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5364          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5365          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5366          0x020b,
5367          0x020c,
5368          },
5369         {
5370          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5371          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5372          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5373          0x020a,
5374          0x020b,
5375          },
5376         {
5377          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5378          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5379          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5380          0x0209,
5381          0x020a,
5382          },
5383         {
5384          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5385          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5386          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5387          0x0208,
5388          0x0209,
5389          },
5390         {
5391          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5392          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5393          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5394          0x0207,
5395          0x0208,
5396          },
5397         {
5398          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5399          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5400          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5401          0x0206,
5402          0x0207,
5403          },
5404         {
5405          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5406          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5407          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5408          0x0205,
5409          0x0206,
5410          },
5411         {
5412          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5413          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5414          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5415          0x0204,
5416          0x0205,
5417          },
5418         {
5419          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5420          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5421          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5422          0x0203,
5423          0x0204,
5424          },
5425         {
5426          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5427          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5428          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5429          0x0202,
5430          0x0203,
5431          },
5432         {
5433          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5434          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5435          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5436          0x0201,
5437          0x0202,
5438          },
5439         {
5440          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5441          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5442          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5443          0x0200,
5444          0x0201,
5445          },
5446         {
5447          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5448          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5449          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5450          0x01ff,
5451          0x0200,
5452          },
5453         {
5454          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5455          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5456          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5457          0x01fe,
5458          0x01ff,
5459          },
5460         {
5461          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5462          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5463          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5464          0x01fc,
5465          0x01fd,
5466          },
5467         {
5468          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5469          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5470          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5471          0x01fb,
5472          0x01fc,
5473          },
5474         {
5475          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5476          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5477          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5478          0x01fa,
5479          0x01fb,
5480          },
5481         {
5482          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5483          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5484          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5485          0x01f9,
5486          0x01fa,
5487          },
5488         {
5489          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5490          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5491          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5492          0x01f8,
5493          0x01f9,
5494          },
5495         {
5496          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5497          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5498          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5499          0x01f7,
5500          0x01f8,
5501          },
5502         {
5503          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5504          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5505          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5506          0x01f6,
5507          0x01f7,
5508          },
5509         {
5510          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5511          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5512          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5513          0x01f5,
5514          0x01f6,
5515          },
5516         {
5517          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5518          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5519          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5520          0x01f4,
5521          0x01f5,
5522          },
5523         {
5524          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5525          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5526          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5527          0x01f3,
5528          0x01f4,
5529          },
5530         {
5531          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5532          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5533          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5534          0x01f2,
5535          0x01f3,
5536          },
5537         {
5538          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5539          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5540          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5541          0x01f1,
5542          0x01f2,
5543          },
5544         {
5545          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5546          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5547          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5548          0x01f0,
5549          0x01f1,
5550          },
5551         {
5552          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5553          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5554          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5555          0x01f0,
5556          0x01f0,
5557          },
5558         {
5559          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5560          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5561          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5562          0x01ef,
5563          0x01f0,
5564          },
5565         {
5566          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5567          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5568          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5569          0x01ee,
5570          0x01ef,
5571          },
5572         {
5573          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5574          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5575          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5576          0x01ed,
5577          0x01ee,
5578          },
5579         {
5580          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5581          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5582          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5583          0x01ec,
5584          0x01ed,
5585          },
5586         {
5587          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5588          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5589          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5590          0x01eb,
5591          0x01ec,
5592          },
5593         {
5594          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5595          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5596          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5597          0x01ea,
5598          0x01eb,
5599          },
5600         {
5601          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5602          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5603          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5604          0x01e9,
5605          0x01ea,
5606          },
5607         {
5608          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5609          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5610          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5611          0x01e8,
5612          0x01e9,
5613          },
5614         {
5615          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5616          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5617          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5618          0x01e7,
5619          0x01e8,
5620          },
5621         {
5622          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5623          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5624          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5625          0x01e6,
5626          0x01e7,
5627          },
5628         {
5629          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5630          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5631          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5632          0x01e5,
5633          0x01e6,
5634          },
5635         {
5636          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5637          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5638          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5639          0x01e5,
5640          0x01e5,
5641          },
5642         {
5643          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5644          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5645          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5646          0x01e4,
5647          0x01e5,
5648          },
5649         {
5650          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5651          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5652          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5653          0x01e3,
5654          0x01e4,
5655          },
5656         {
5657          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5658          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5659          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5660          0x01e2,
5661          0x01e3,
5662          },
5663         {
5664          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5665          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5666          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5667          0x01e1,
5668          0x01e2,
5669          },
5670         {
5671          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5672          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5673          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5674          0x01e0,
5675          0x01e1,
5676          },
5677         {
5678          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5679          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5680          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5681          0x01df,
5682          0x01e0,
5683          },
5684         {
5685          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5686          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5687          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5688          0x01de,
5689          0x01df,
5690          },
5691         {
5692          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5693          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5694          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5695          0x01dd,
5696          0x01de,
5697          },
5698         {
5699          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5700          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5701          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5702          0x01dd,
5703          0x01dd,
5704          },
5705         {
5706          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5707          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5708          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5709          0x01dc,
5710          0x01dd,
5711          },
5712         {
5713          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5714          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5715          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5716          0x01db,
5717          0x01dc,
5718          },
5719         {
5720          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5721          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5722          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5723          0x01da,
5724          0x01db,
5725          },
5726         {
5727          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5728          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5729          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5730          0x01d9,
5731          0x01da,
5732          },
5733         {
5734          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5735          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5736          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5737          0x01d8,
5738          0x01d9,
5739          },
5740         {
5741          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5742          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5743          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5744          0x01d7,
5745          0x01d8,
5746          },
5747         {
5748          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5749          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5750          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5751          0x01d7,
5752          0x01d7,
5753          },
5754         {
5755          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5756          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5757          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5758          0x01d6,
5759          0x01d7,
5760          },
5761         {
5762          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5763          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5764          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5765          0x01d5,
5766          0x01d6,
5767          },
5768         {
5769          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5770          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5771          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5772          0x01d4,
5773          0x01d5,
5774          },
5775         {
5776          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5777          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5778          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5779          0x01d3,
5780          0x01d4,
5781          },
5782         {
5783          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5784          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5785          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5786          0x01d2,
5787          0x01d3,
5788          },
5789         {
5790          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5791          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5792          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5793          0x01d2,
5794          0x01d2,
5795          },
5796         {
5797          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5798          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5799          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5800          0x01d1,
5801          0x01d2,
5802          },
5803         {
5804          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5805          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5806          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5807          0x01d0,
5808          0x01d1,
5809          },
5810         {
5811          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5812          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5813          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5814          0x01cf,
5815          0x01d0,
5816          },
5817         {
5818          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5819          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5820          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5821          0x01ce,
5822          0x01cf,
5823          },
5824         {
5825          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5826          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5827          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5828          0x01ce,
5829          0x01ce,
5830          },
5831         {
5832          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5833          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5834          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5835          0x01cd,
5836          0x01ce,
5837          },
5838         {
5839          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5840          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5841          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5842          0x01cc,
5843          0x01cd,
5844          },
5845         {
5846          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5847          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5848          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5849          0x01cb,
5850          0x01cc,
5851          },
5852         {
5853          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5854          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5855          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5856          0x01ca,
5857          0x01cb,
5858          },
5859         {
5860          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5861          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5862          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5863          0x01ca,
5864          0x01cb,
5865          },
5866         {
5867          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5868          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5869          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5870          0x01c9,
5871          0x01ca,
5872          },
5873         {
5874          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5875          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5876          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5877          0x01c9,
5878          0x01ca,
5879          },
5880         {
5881          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5882          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5883          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5884          0x01c9,
5885          0x01c9,
5886          },
5887         {
5888          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5889          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5890          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5891          0x01c8,
5892          0x01c9,
5893          },
5894         {
5895          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5896          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5897          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5898          0x01c8,
5899          0x01c9,
5900          },
5901         {
5902          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5903          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5904          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5905          0x01c8,
5906          0x01c8,
5907          },
5908         {
5909          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5910          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5911          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5912          0x01c7,
5913          0x01c8,
5914          },
5915         {
5916          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5917          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5918          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5919          0x01c7,
5920          0x01c8,
5921          },
5922         {
5923          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5924          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5925          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5926          0x01c6,
5927          0x01c7,
5928          },
5929         {
5930          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5931          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5932          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5933          0x01c6,
5934          0x01c7,
5935          },
5936         {
5937          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5938          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5939          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5940          0x01c6,
5941          0x01c6,
5942          },
5943         {
5944          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5945          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5946          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5947          0x01c5,
5948          0x01c6,
5949          },
5950         {
5951          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5952          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5953          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5954          0x01c5,
5955          0x01c6,
5956          },
5957         {
5958          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5959          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5960          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5961          0x01c4,
5962          0x01c5,
5963          },
5964         {
5965          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5966          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5967          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5968          0x01c4,
5969          0x01c5,
5970          },
5971         {
5972          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5973          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5974          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5975          0x01c4,
5976          0x01c4,
5977          },
5978         {
5979          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5980          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5981          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5982          0x01c3,
5983          0x01c4,
5984          },
5985         {
5986          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5987          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5988          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5989          0x01c3,
5990          0x01c4,
5991          },
5992         {
5993          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5994          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5995          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5996          0x01c2,
5997          0x01c3,
5998          },
5999         {
6000          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6001          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6002          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6003          0x01c2,
6004          0x01c3,
6005          },
6006         {
6007          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6008          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6009          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6010          0x01c2,
6011          0x01c2,
6012          },
6013         {
6014          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6015          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6016          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6017          0x01c1,
6018          0x01c2,
6019          },
6020         {
6021          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6022          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6023          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6024          0x01c0,
6025          0x01c1,
6026          },
6027         {
6028          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6029          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6030          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6031          0x01bf,
6032          0x01c0,
6033          },
6034         {
6035          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6036          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6037          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6038          0x01bf,
6039          0x01bf,
6040          },
6041         {
6042          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6043          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6044          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6045          0x01be,
6046          0x01bf,
6047          },
6048         {
6049          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6050          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6051          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6052          0x01bd,
6053          0x01be,
6054          },
6055         {
6056          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6057          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6058          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6059          0x01bc,
6060          0x01bd,
6061          },
6062         {
6063          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6064          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6065          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6066          0x043f,
6067          0x0443,
6068          },
6069         {
6070          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6071          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6072          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6073          0x043d,
6074          0x0441,
6075          },
6076         {
6077          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6078          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6079          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6080          0x043a,
6081          0x043f,
6082          },
6083         {
6084          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6085          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6086          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6087          0x0438,
6088          0x043d,
6089          },
6090         {
6091          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6092          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6093          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6094          0x0436,
6095          0x043a,
6096          },
6097         {
6098          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6099          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6100          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6101          0x0434,
6102          0x0438,
6103          },
6104         {
6105          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6106          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6107          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6108          0x0431,
6109          0x0436,
6110          },
6111         {
6112          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6113          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6114          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6115          0x042f,
6116          0x0434,
6117          },
6118         {
6119          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6120          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6121          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6122          0x042d,
6123          0x0431,
6124          },
6125         {
6126          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6127          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6128          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6129          0x042b,
6130          0x042f,
6131          },
6132         {
6133          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6134          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6135          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6136          0x0429,
6137          0x042d,
6138          },
6139         {
6140          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6141          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6142          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6143          0x0427,
6144          0x042b,
6145          },
6146         {
6147          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6148          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6149          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6150          0x0424,
6151          0x0429,
6152          },
6153         {
6154          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6155          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6156          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6157          0x041f,
6158          0x0424}
6159 };
6160 
6161 static const struct chan_info_nphy_radio2057_rev5
6162 chan_info_nphyrev8_2057_rev5[] = {
6163         {
6164          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6165          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6166          0x043a, 0x043f, 0x0443},
6167         {
6168          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6169          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6170          0x0438, 0x043d, 0x0441},
6171         {
6172          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6173          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6174          0x0436, 0x043a, 0x043f},
6175         {
6176          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6177          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6178          0x0434, 0x0438, 0x043d},
6179         {
6180          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6181          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6182          0x0431, 0x0436, 0x043a},
6183         {
6184          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6185          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6186          0x042f, 0x0434, 0x0438},
6187         {
6188          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6189          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6190          0x042d, 0x0431, 0x0436},
6191         {
6192          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6193          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6194          0x042b, 0x042f, 0x0434},
6195         {
6196          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6197          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6198          0x0429, 0x042d, 0x0431},
6199         {
6200          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6201          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6202          0x0427, 0x042b, 0x042f},
6203         {
6204          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6205          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6206          0x0424, 0x0429, 0x042d},
6207         {
6208          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6209          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6210          0x0422, 0x0427, 0x042b},
6211         {
6212          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6213          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6214          0x0420, 0x0424, 0x0429},
6215         {
6216          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6217          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6218          0x041b, 0x041f, 0x0424}
6219 };
6220 
6221 static const struct chan_info_nphy_radio2057_rev5
6222 chan_info_nphyrev9_2057_rev5v1[] = {
6223         {
6224          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6225          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6226          0x043a, 0x043f, 0x0443},
6227         {
6228          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6229          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6230          0x0438, 0x043d, 0x0441},
6231         {
6232          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6233          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6234          0x0436, 0x043a, 0x043f},
6235         {
6236          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6237          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6238          0x0434, 0x0438, 0x043d},
6239         {
6240          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6241          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6242          0x0431, 0x0436, 0x043a},
6243         {
6244          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6245          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6246          0x042f, 0x0434, 0x0438},
6247         {
6248          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6249          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6250          0x042d, 0x0431, 0x0436},
6251         {
6252          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6253          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6254          0x042b, 0x042f, 0x0434},
6255         {
6256          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6257          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6258          0x0429, 0x042d, 0x0431},
6259         {
6260          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6261          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6262          0x0427, 0x042b, 0x042f},
6263         {
6264          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6265          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6266          0x0424, 0x0429, 0x042d},
6267         {
6268          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6269          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6270          0x0422, 0x0427, 0x042b},
6271         {
6272          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6273          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6274          0x0420, 0x0424, 0x0429},
6275         {
6276          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6277          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6278          0x041b, 0x041f, 0x0424}
6279 };
6280 
6281 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6282         {
6283          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6284          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6285          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6286          0x0215,
6287          0x0216},
6288         {
6289          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6290          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6291          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6292          0x0214,
6293          0x0215},
6294         {
6295          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6296          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6297          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6298          0x0213,
6299          0x0214},
6300         {
6301          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6302          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6303          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6304          0x0212,
6305          0x0213},
6306         {
6307          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6308          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6309          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6310          0x0211,
6311          0x0212},
6312         {
6313          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6314          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6315          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6316          0x020f,
6317          0x0211},
6318         {
6319          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6320          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6321          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6322          0x020e,
6323          0x020f},
6324         {
6325          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6326          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6327          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6328          0x020d,
6329          0x020e},
6330         {
6331          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6332          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6333          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6334          0x020c,
6335          0x020d},
6336         {
6337          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6338          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6339          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6340          0x020b,
6341          0x020c},
6342         {
6343          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6344          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6345          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6346          0x020a,
6347          0x020b},
6348         {
6349          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6350          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6351          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6352          0x0209,
6353          0x020a},
6354         {
6355          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6356          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6357          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6358          0x0208,
6359          0x0209},
6360         {
6361          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6362          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6363          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6364          0x0207,
6365          0x0208},
6366         {
6367          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6368          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6369          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6370          0x0206,
6371          0x0207},
6372         {
6373          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6374          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6375          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6376          0x0205,
6377          0x0206},
6378         {
6379          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6380          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6381          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6382          0x0204,
6383          0x0205},
6384         {
6385          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6386          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6387          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6388          0x0203,
6389          0x0204},
6390         {
6391          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6392          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6393          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6394          0x0202,
6395          0x0203},
6396         {
6397          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6398          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6399          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6400          0x0201,
6401          0x0202},
6402         {
6403          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6404          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6405          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6406          0x0200,
6407          0x0201},
6408         {
6409          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6410          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6411          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6412          0x01ff,
6413          0x0200},
6414         {
6415          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6416          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6417          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6418          0x01fe,
6419          0x01ff},
6420         {
6421          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6422          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6423          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6424          0x01fc,
6425          0x01fd},
6426         {
6427          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6428          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6429          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6430          0x01fb,
6431          0x01fc},
6432         {
6433          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6434          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6435          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6436          0x01fa,
6437          0x01fb},
6438         {
6439          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6440          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6441          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6442          0x01f9,
6443          0x01fa},
6444         {
6445          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6446          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6447          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6448          0x01f8,
6449          0x01f9},
6450         {
6451          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6452          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6453          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6454          0x01f7,
6455          0x01f8},
6456         {
6457          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6458          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6459          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6460          0x01f6,
6461          0x01f7},
6462         {
6463          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6464          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6465          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6466          0x01f5,
6467          0x01f6},
6468         {
6469          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6470          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6471          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6472          0x01f4,
6473          0x01f5},
6474         {
6475          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6476          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6477          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6478          0x01f3,
6479          0x01f4},
6480         {
6481          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6482          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6483          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6484          0x01f2,
6485          0x01f3},
6486         {
6487          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6488          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6489          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6490          0x01f1,
6491          0x01f2},
6492         {
6493          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6494          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6495          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6496          0x01f0,
6497          0x01f1},
6498         {
6499          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6500          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6501          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6502          0x01f0,
6503          0x01f0},
6504         {
6505          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6506          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6507          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6508          0x01ef,
6509          0x01f0},
6510         {
6511          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6512          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6513          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6514          0x01ee,
6515          0x01ef},
6516         {
6517          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6518          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6519          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6520          0x01ed,
6521          0x01ee},
6522         {
6523          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6524          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6525          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6526          0x01ec,
6527          0x01ed},
6528         {
6529          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6530          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6531          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6532          0x01eb,
6533          0x01ec},
6534         {
6535          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6536          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6537          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6538          0x01ea,
6539          0x01eb},
6540         {
6541          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6542          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6543          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6544          0x01e9,
6545          0x01ea},
6546         {
6547          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6548          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6549          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6550          0x01e8,
6551          0x01e9},
6552         {
6553          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6554          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6555          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6556          0x01e7,
6557          0x01e8},
6558         {
6559          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6560          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6561          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6562          0x01e6,
6563          0x01e7},
6564         {
6565          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6566          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6567          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6568          0x01e5,
6569          0x01e6},
6570         {
6571          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6572          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6573          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6574          0x01e5,
6575          0x01e5},
6576         {
6577          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6578          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6579          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6580          0x01e4,
6581          0x01e5},
6582         {
6583          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6584          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6585          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6586          0x01e3,
6587          0x01e4},
6588         {
6589          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6590          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6591          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6592          0x01e2,
6593          0x01e3},
6594         {
6595          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6596          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6597          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6598          0x01e1,
6599          0x01e2},
6600         {
6601          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6602          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6603          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6604          0x01e0,
6605          0x01e1},
6606         {
6607          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6608          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6609          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6610          0x01df,
6611          0x01e0},
6612         {
6613          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6614          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6615          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6616          0x01de,
6617          0x01df},
6618         {
6619          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6620          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6621          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6622          0x01dd,
6623          0x01de},
6624         {
6625          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6626          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6627          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6628          0x01dd,
6629          0x01dd},
6630         {
6631          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6632          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6633          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6634          0x01dc,
6635          0x01dd},
6636         {
6637          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6638          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6639          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6640          0x01db,
6641          0x01dc},
6642         {
6643          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6644          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6645          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6646          0x01da,
6647          0x01db},
6648         {
6649          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6650          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6651          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6652          0x01d9,
6653          0x01da},
6654         {
6655          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6656          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6657          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6658          0x01d8,
6659          0x01d9},
6660         {
6661          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6662          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6663          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6664          0x01d7,
6665          0x01d8},
6666         {
6667          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6668          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6669          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6670          0x01d7,
6671          0x01d7},
6672         {
6673          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6674          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6675          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6676          0x01d6,
6677          0x01d7},
6678         {
6679          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6680          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6681          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6682          0x01d5,
6683          0x01d6},
6684         {
6685          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6686          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6687          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6688          0x01d4,
6689          0x01d5},
6690         {
6691          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6692          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6693          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6694          0x01d3,
6695          0x01d4},
6696         {
6697          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6698          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6699          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6700          0x01d2,
6701          0x01d3},
6702         {
6703          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6704          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6705          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6706          0x01d2,
6707          0x01d2},
6708         {
6709          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6710          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6711          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6712          0x01d1,
6713          0x01d2},
6714         {
6715          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6716          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6717          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6718          0x01d0,
6719          0x01d1},
6720         {
6721          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6722          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6723          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6724          0x01cf,
6725          0x01d0},
6726         {
6727          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6728          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6729          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6730          0x01ce,
6731          0x01cf},
6732         {
6733          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6734          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6735          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6736          0x01ce,
6737          0x01ce},
6738         {
6739          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6740          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6741          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6742          0x01cd,
6743          0x01ce},
6744         {
6745          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6746          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6747          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6748          0x01cc,
6749          0x01cd},
6750         {
6751          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6752          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6753          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6754          0x01cb,
6755          0x01cc},
6756         {
6757          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6758          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6759          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6760          0x01ca,
6761          0x01cb},
6762         {
6763          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6764          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6765          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6766          0x01ca,
6767          0x01cb},
6768         {
6769          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6770          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6771          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6772          0x01c9,
6773          0x01ca},
6774         {
6775          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6776          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6777          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6778          0x01c9,
6779          0x01ca},
6780         {
6781          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6782          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6783          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6784          0x01c9,
6785          0x01c9},
6786         {
6787          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6788          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6789          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6790          0x01c8,
6791          0x01c9},
6792         {
6793          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6794          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6795          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6796          0x01c8,
6797          0x01c9},
6798         {
6799          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6800          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6801          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6802          0x01c8,
6803          0x01c8},
6804         {
6805          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6806          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6807          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6808          0x01c7,
6809          0x01c8},
6810         {
6811          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6812          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6813          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6814          0x01c7,
6815          0x01c8},
6816         {
6817          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6818          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6819          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6820          0x01c6,
6821          0x01c7},
6822         {
6823          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6824          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6825          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6826          0x01c6,
6827          0x01c7},
6828         {
6829          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6830          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6831          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6832          0x01c6,
6833          0x01c6},
6834         {
6835          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6836          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6837          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6838          0x01c5,
6839          0x01c6},
6840         {
6841          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6842          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6843          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6844          0x01c5,
6845          0x01c6},
6846         {
6847          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6848          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6849          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6850          0x01c4,
6851          0x01c5},
6852         {
6853          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6854          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6855          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6856          0x01c4,
6857          0x01c5},
6858         {
6859          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6860          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6861          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6862          0x01c4,
6863          0x01c4},
6864         {
6865          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6866          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6867          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6868          0x01c3,
6869          0x01c4},
6870         {
6871          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6872          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6873          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6874          0x01c3,
6875          0x01c4},
6876         {
6877          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6878          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6879          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6880          0x01c2,
6881          0x01c3},
6882         {
6883          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6884          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6885          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6886          0x01c2,
6887          0x01c3},
6888         {
6889          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6890          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6891          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6892          0x01c2,
6893          0x01c2},
6894         {
6895          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6896          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6897          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6898          0x01c1,
6899          0x01c2},
6900         {
6901          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6902          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6903          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6904          0x01c0,
6905          0x01c1},
6906         {
6907          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6908          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6909          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6910          0x01bf,
6911          0x01c0},
6912         {
6913          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6914          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6915          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6916          0x01bf,
6917          0x01bf},
6918         {
6919          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6920          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6921          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6922          0x01be,
6923          0x01bf},
6924         {
6925          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6926          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6927          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6928          0x01bd,
6929          0x01be},
6930         {
6931          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6932          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6933          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6934          0x01bc,
6935          0x01bd},
6936         {
6937          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6938          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6939          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6940          0x043f,
6941          0x0443},
6942         {
6943          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6944          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6945          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6946          0x043d,
6947          0x0441},
6948         {
6949          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6950          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6951          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6952          0x043a,
6953          0x043f},
6954         {
6955          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6956          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6957          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6958          0x0438,
6959          0x043d},
6960         {
6961          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6962          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6963          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6964          0x0436,
6965          0x043a},
6966         {
6967          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6968          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6969          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6970          0x0434,
6971          0x0438},
6972         {
6973          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6974          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6975          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6976          0x0431,
6977          0x0436},
6978         {
6979          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6980          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6981          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6982          0x042f,
6983          0x0434},
6984         {
6985          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6986          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6987          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6988          0x042d,
6989          0x0431},
6990         {
6991          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6992          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6993          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6994          0x042b,
6995          0x042f},
6996         {
6997          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6998          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6999          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7000          0x0429,
7001          0x042d},
7002         {
7003          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7004          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7005          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7006          0x0427,
7007          0x042b},
7008         {
7009          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7010          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7011          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7012          0x0424,
7013          0x0429},
7014         {
7015          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7016          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7017          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7018          0x041f,
7019          0x0424}
7020 };
7021 
7022 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7023         {
7024          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7025          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7026          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7027          0x0214,
7028          0x0215},
7029         {
7030          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7031          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7032          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7033          0x0213,
7034          0x0214},
7035         {
7036          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7037          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7038          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7039          0x0212,
7040          0x0213},
7041         {
7042          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7043          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7044          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7045          0x0211,
7046          0x0212},
7047         {
7048          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7049          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7050          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7051          0x020f,
7052          0x0211},
7053         {
7054          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7055          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7056          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7057          0x020e,
7058          0x020f},
7059         {
7060          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7061          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7062          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7063          0x020d,
7064          0x020e},
7065         {
7066          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7067          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7068          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7069          0x020c,
7070          0x020d},
7071         {
7072          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7073          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7074          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7075          0x020b,
7076          0x020c},
7077         {
7078          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7079          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7080          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7081          0x020a,
7082          0x020b},
7083         {
7084          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7085          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7086          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7087          0x0209,
7088          0x020a},
7089         {
7090          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7091          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7092          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7093          0x0208,
7094          0x0209},
7095         {
7096          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7097          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7098          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7099          0x0207,
7100          0x0208},
7101         {
7102          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7103          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7104          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7105          0x0206,
7106          0x0207},
7107         {
7108          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7109          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7110          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7111          0x0205,
7112          0x0206},
7113         {
7114          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7115          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7116          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7117          0x0204,
7118          0x0205},
7119         {
7120          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7121          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7122          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7123          0x0203,
7124          0x0204},
7125         {
7126          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7127          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7128          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7129          0x0202,
7130          0x0203},
7131         {
7132          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7133          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7134          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7135          0x0201,
7136          0x0202},
7137         {
7138          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7139          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7140          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7141          0x0200,
7142          0x0201},
7143         {
7144          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7145          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7146          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7147          0x01ff,
7148          0x0200},
7149         {
7150          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7151          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7152          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7153          0x01fe,
7154          0x01ff},
7155         {
7156          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7157          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7158          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7159          0x01fc,
7160          0x01fd},
7161         {
7162          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7163          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7164          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7165          0x01fb,
7166          0x01fc},
7167         {
7168          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7169          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7170          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7171          0x01fa,
7172          0x01fb},
7173         {
7174          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7175          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7176          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7177          0x01f9,
7178          0x01fa},
7179         {
7180          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7181          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7182          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7183          0x01f8,
7184          0x01f9},
7185         {
7186          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7187          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7188          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7189          0x01f7,
7190          0x01f8},
7191         {
7192          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7193          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7194          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7195          0x01f6,
7196          0x01f7},
7197         {
7198          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7199          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7200          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7201          0x01f5,
7202          0x01f6},
7203         {
7204          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7205          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7206          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7207          0x01f4,
7208          0x01f5},
7209         {
7210          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7211          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7212          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7213          0x01f3,
7214          0x01f4},
7215         {
7216          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7217          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7218          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7219          0x01f2,
7220          0x01f3},
7221         {
7222          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7223          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7224          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7225          0x01f1,
7226          0x01f2},
7227         {
7228          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7229          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7230          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7231          0x01f0,
7232          0x01f1},
7233         {
7234          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7235          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7236          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7237          0x01f0,
7238          0x01f0},
7239         {
7240          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7241          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7242          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7243          0x01ef,
7244          0x01f0},
7245         {
7246          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7247          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7248          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7249          0x01ee,
7250          0x01ef},
7251         {
7252          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7253          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7254          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7255          0x01ed,
7256          0x01ee},
7257         {
7258          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7259          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7260          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7261          0x01ec,
7262          0x01ed},
7263         {
7264          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7265          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7266          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7267          0x01eb,
7268          0x01ec},
7269         {
7270          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7271          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7272          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7273          0x01ea,
7274          0x01eb},
7275         {
7276          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7277          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7278          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7279          0x01e9,
7280          0x01ea},
7281         {
7282          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7283          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7284          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7285          0x01e8,
7286          0x01e9},
7287         {
7288          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7289          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7290          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7291          0x01e7,
7292          0x01e8},
7293         {
7294          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7295          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7296          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7297          0x01e6,
7298          0x01e7},
7299         {
7300          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7301          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7302          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7303          0x01e5,
7304          0x01e6},
7305         {
7306          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7307          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7308          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7309          0x01e5,
7310          0x01e5},
7311         {
7312          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7313          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7314          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7315          0x01e4,
7316          0x01e5},
7317         {
7318          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7319          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7320          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7321          0x01e3,
7322          0x01e4},
7323         {
7324          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7325          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7326          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7327          0x01e2,
7328          0x01e3},
7329         {
7330          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7331          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7332          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7333          0x01e1,
7334          0x01e2},
7335         {
7336          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7337          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7338          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7339          0x01e0,
7340          0x01e1},
7341         {
7342          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7343          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7344          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7345          0x01df,
7346          0x01e0},
7347         {
7348          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7349          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7350          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7351          0x01de,
7352          0x01df},
7353         {
7354          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7355          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7356          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7357          0x01dd,
7358          0x01de},
7359         {
7360          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7361          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7362          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7363          0x01dd,
7364          0x01dd},
7365         {
7366          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7367          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7368          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7369          0x01dc,
7370          0x01dd},
7371         {
7372          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7373          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7374          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7375          0x01db,
7376          0x01dc},
7377         {
7378          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7379          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7380          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7381          0x01da,
7382          0x01db},
7383         {
7384          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7385          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7386          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7387          0x01d9,
7388          0x01da},
7389         {
7390          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7391          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7392          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7393          0x01d8,
7394          0x01d9},
7395         {
7396          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7397          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7398          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7399          0x01d7,
7400          0x01d8},
7401         {
7402          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7403          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7404          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7405          0x01d7,
7406          0x01d7},
7407         {
7408          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7409          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7410          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7411          0x01d6,
7412          0x01d7},
7413         {
7414          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7415          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7416          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7417          0x01d5,
7418          0x01d6},
7419         {
7420          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7421          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7422          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7423          0x01d4,
7424          0x01d5},
7425         {
7426          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7427          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7428          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7429          0x01d3,
7430          0x01d4},
7431         {
7432          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7433          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7434          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7435          0x01d2,
7436          0x01d3},
7437         {
7438          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7439          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7440          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7441          0x01d2,
7442          0x01d2},
7443         {
7444          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7445          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7446          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7447          0x01d1,
7448          0x01d2},
7449         {
7450          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7451          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7452          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7453          0x01d0,
7454          0x01d1},
7455         {
7456          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7457          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7458          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7459          0x01cf,
7460          0x01d0},
7461         {
7462          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7463          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7464          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7465          0x01ce,
7466          0x01cf},
7467         {
7468          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7469          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7470          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7471          0x01ce,
7472          0x01ce},
7473         {
7474          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7475          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7476          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7477          0x01cd,
7478          0x01ce},
7479         {
7480          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7481          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7482          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7483          0x01cc,
7484          0x01cd},
7485         {
7486          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7487          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7488          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7489          0x01cb,
7490          0x01cc},
7491         {
7492          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7493          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7494          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7495          0x01ca,
7496          0x01cb},
7497         {
7498          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7499          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7500          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7501          0x01ca,
7502          0x01cb},
7503         {
7504          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7505          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7506          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7507          0x01c9,
7508          0x01ca},
7509         {
7510          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7511          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7512          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7513          0x01c9,
7514          0x01ca},
7515         {
7516          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7517          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7518          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7519          0x01c9,
7520          0x01c9},
7521         {
7522          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7523          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7524          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7525          0x01c8,
7526          0x01c9},
7527         {
7528          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7529          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7530          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7531          0x01c8,
7532          0x01c9},
7533         {
7534          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7535          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7536          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7537          0x01c8,
7538          0x01c8},
7539         {
7540          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7541          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7542          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7543          0x01c7,
7544          0x01c8},
7545         {
7546          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7547          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7548          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7549          0x01c7,
7550          0x01c8},
7551         {
7552          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7553          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7554          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7555          0x01c6,
7556          0x01c7},
7557         {
7558          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7559          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7560          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7561          0x01c6,
7562          0x01c7},
7563         {
7564          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7565          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7566          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7567          0x01c6,
7568          0x01c6},
7569         {
7570          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7571          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7572          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7573          0x01c5,
7574          0x01c6},
7575         {
7576          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7577          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7578          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7579          0x01c5,
7580          0x01c6},
7581         {
7582          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7583          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7584          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7585          0x01c4,
7586          0x01c5},
7587         {
7588          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7589          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7590          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7591          0x01c4,
7592          0x01c5},
7593         {
7594          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7595          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7596          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7597          0x01c4,
7598          0x01c4},
7599         {
7600          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7601          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7602          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7603          0x01c3,
7604          0x01c4},
7605         {
7606          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7607          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7608          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7609          0x01c3,
7610          0x01c4},
7611         {
7612          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7613          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7614          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7615          0x01c2,
7616          0x01c3},
7617         {
7618          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7619          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7620          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7621          0x01c2,
7622          0x01c3},
7623         {
7624          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7625          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7626          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7627          0x01c2,
7628          0x01c2},
7629         {
7630          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7631          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7632          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7633          0x01c1,
7634          0x01c2},
7635         {
7636          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7637          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7638          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7639          0x01c0,
7640          0x01c1},
7641         {
7642          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7643          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7644          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7645          0x01bf,
7646          0x01c0},
7647         {
7648          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7649          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7650          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7651          0x01bf,
7652          0x01bf},
7653         {
7654          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7655          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7656          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7657          0x01be,
7658          0x01bf},
7659         {
7660          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7661          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7662          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7663          0x01bd,
7664          0x01be},
7665         {
7666          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7667          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7668          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7669          0x01bc,
7670          0x01bd},
7671         {
7672          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7673          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7674          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7675          0x043f,
7676          0x0443},
7677         {
7678          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7679          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7680          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7681          0x043d,
7682          0x0441},
7683         {
7684          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7685          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7686          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7687          0x043a,
7688          0x043f},
7689         {
7690          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7691          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7692          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7693          0x0438,
7694          0x043d},
7695         {
7696          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7697          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7698          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7699          0x0436,
7700          0x043a},
7701         {
7702          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7703          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7704          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7705          0x0434,
7706          0x0438},
7707         {
7708          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7709          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7710          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7711          0x0431,
7712          0x0436},
7713         {
7714          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7715          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7716          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7717          0x042f,
7718          0x0434},
7719         {
7720          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7721          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7722          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7723          0x042d,
7724          0x0431},
7725         {
7726          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7727          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7728          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7729          0x042b,
7730          0x042f},
7731         {
7732          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7733          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7734          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7735          0x0429,
7736          0x042d},
7737         {
7738          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7739          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7740          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7741          0x0427,
7742          0x042b},
7743         {
7744          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7745          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7746          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7747          0x0424,
7748          0x0429},
7749         {
7750          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7751          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7752          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7753          0x041f,
7754          0x0424}
7755 };
7756 
7757 static struct radio_regs regs_2055[] = {
7758         {0x02, 0x80, 0x80, 0, 0},
7759         {0x03, 0, 0, 0, 0},
7760         {0x04, 0x27, 0x27, 0, 0},
7761         {0x05, 0, 0, 0, 0},
7762         {0x06, 0x27, 0x27, 0, 0},
7763         {0x07, 0x7f, 0x7f, 1, 1},
7764         {0x08, 0x7, 0x7, 1, 1},
7765         {0x09, 0x7f, 0x7f, 1, 1},
7766         {0x0A, 0x7, 0x7, 1, 1},
7767         {0x0B, 0x15, 0x15, 0, 0},
7768         {0x0C, 0x15, 0x15, 0, 0},
7769         {0x0D, 0x4f, 0x4f, 1, 1},
7770         {0x0E, 0x5, 0x5, 1, 1},
7771         {0x0F, 0x4f, 0x4f, 1, 1},
7772         {0x10, 0x5, 0x5, 1, 1},
7773         {0x11, 0xd0, 0xd0, 0, 0},
7774         {0x12, 0x2, 0x2, 0, 0},
7775         {0x13, 0, 0, 0, 0},
7776         {0x14, 0x40, 0x40, 0, 0},
7777         {0x15, 0, 0, 0, 0},
7778         {0x16, 0, 0, 0, 0},
7779         {0x17, 0, 0, 0, 0},
7780         {0x18, 0, 0, 0, 0},
7781         {0x19, 0, 0, 0, 0},
7782         {0x1A, 0, 0, 0, 0},
7783         {0x1B, 0, 0, 0, 0},
7784         {0x1C, 0, 0, 0, 0},
7785         {0x1D, 0xc0, 0xc0, 0, 0},
7786         {0x1E, 0xff, 0xff, 0, 0},
7787         {0x1F, 0xc0, 0xc0, 0, 0},
7788         {0x20, 0xff, 0xff, 0, 0},
7789         {0x21, 0xc0, 0xc0, 0, 0},
7790         {0x22, 0, 0, 0, 0},
7791         {0x23, 0x2c, 0x2c, 0, 0},
7792         {0x24, 0, 0, 0, 0},
7793         {0x25, 0, 0, 0, 0},
7794         {0x26, 0, 0, 0, 0},
7795         {0x27, 0, 0, 0, 0},
7796         {0x28, 0, 0, 0, 0},
7797         {0x29, 0, 0, 0, 0},
7798         {0x2A, 0, 0, 0, 0},
7799         {0x2B, 0, 0, 0, 0},
7800         {0x2C, 0, 0, 0, 0},
7801         {0x2D, 0xa4, 0xa4, 0, 0},
7802         {0x2E, 0x38, 0x38, 0, 0},
7803         {0x2F, 0, 0, 0, 0},
7804         {0x30, 0x4, 0x4, 1, 1},
7805         {0x31, 0, 0, 0, 0},
7806         {0x32, 0xa, 0xa, 0, 0},
7807         {0x33, 0x87, 0x87, 0, 0},
7808         {0x34, 0x9, 0x9, 0, 0},
7809         {0x35, 0x70, 0x70, 0, 0},
7810         {0x36, 0x11, 0x11, 0, 0},
7811         {0x37, 0x18, 0x18, 1, 1},
7812         {0x38, 0x6, 0x6, 0, 0},
7813         {0x39, 0x4, 0x4, 1, 1},
7814         {0x3A, 0x6, 0x6, 0, 0},
7815         {0x3B, 0x9e, 0x9e, 0, 0},
7816         {0x3C, 0x9, 0x9, 0, 0},
7817         {0x3D, 0xc8, 0xc8, 1, 1},
7818         {0x3E, 0x88, 0x88, 0, 0},
7819         {0x3F, 0, 0, 0, 0},
7820         {0x40, 0, 0, 0, 0},
7821         {0x41, 0, 0, 0, 0},
7822         {0x42, 0x1, 0x1, 0, 0},
7823         {0x43, 0x2, 0x2, 0, 0},
7824         {0x44, 0x96, 0x96, 0, 0},
7825         {0x45, 0x3e, 0x3e, 0, 0},
7826         {0x46, 0x3e, 0x3e, 0, 0},
7827         {0x47, 0x13, 0x13, 0, 0},
7828         {0x48, 0x2, 0x2, 0, 0},
7829         {0x49, 0x15, 0x15, 0, 0},
7830         {0x4A, 0x7, 0x7, 0, 0},
7831         {0x4B, 0, 0, 0, 0},
7832         {0x4C, 0, 0, 0, 0},
7833         {0x4D, 0, 0, 0, 0},
7834         {0x4E, 0, 0, 0, 0},
7835         {0x4F, 0, 0, 0, 0},
7836         {0x50, 0x8, 0x8, 0, 0},
7837         {0x51, 0x8, 0x8, 0, 0},
7838         {0x52, 0x6, 0x6, 0, 0},
7839         {0x53, 0x84, 0x84, 1, 1},
7840         {0x54, 0xc3, 0xc3, 0, 0},
7841         {0x55, 0x8f, 0x8f, 0, 0},
7842         {0x56, 0xff, 0xff, 0, 0},
7843         {0x57, 0xff, 0xff, 0, 0},
7844         {0x58, 0x88, 0x88, 0, 0},
7845         {0x59, 0x88, 0x88, 0, 0},
7846         {0x5A, 0, 0, 0, 0},
7847         {0x5B, 0xcc, 0xcc, 0, 0},
7848         {0x5C, 0x6, 0x6, 0, 0},
7849         {0x5D, 0x80, 0x80, 0, 0},
7850         {0x5E, 0x80, 0x80, 0, 0},
7851         {0x5F, 0xf8, 0xf8, 0, 0},
7852         {0x60, 0x88, 0x88, 0, 0},
7853         {0x61, 0x88, 0x88, 0, 0},
7854         {0x62, 0x88, 0x8, 1, 1},
7855         {0x63, 0x88, 0x88, 0, 0},
7856         {0x64, 0, 0, 0, 0},
7857         {0x65, 0x1, 0x1, 1, 1},
7858         {0x66, 0x8a, 0x8a, 0, 0},
7859         {0x67, 0x8, 0x8, 0, 0},
7860         {0x68, 0x83, 0x83, 0, 0},
7861         {0x69, 0x6, 0x6, 0, 0},
7862         {0x6A, 0xa0, 0xa0, 0, 0},
7863         {0x6B, 0xa, 0xa, 0, 0},
7864         {0x6C, 0x87, 0x87, 1, 1},
7865         {0x6D, 0x2a, 0x2a, 0, 0},
7866         {0x6E, 0x2a, 0x2a, 0, 0},
7867         {0x6F, 0x2a, 0x2a, 0, 0},
7868         {0x70, 0x2a, 0x2a, 0, 0},
7869         {0x71, 0x18, 0x18, 0, 0},
7870         {0x72, 0x6a, 0x6a, 1, 1},
7871         {0x73, 0xab, 0xab, 1, 1},
7872         {0x74, 0x13, 0x13, 1, 1},
7873         {0x75, 0xc1, 0xc1, 1, 1},
7874         {0x76, 0xaa, 0xaa, 1, 1},
7875         {0x77, 0x87, 0x87, 1, 1},
7876         {0x78, 0, 0, 0, 0},
7877         {0x79, 0x6, 0x6, 0, 0},
7878         {0x7A, 0x7, 0x7, 0, 0},
7879         {0x7B, 0x7, 0x7, 0, 0},
7880         {0x7C, 0x15, 0x15, 0, 0},
7881         {0x7D, 0x55, 0x55, 0, 0},
7882         {0x7E, 0x97, 0x97, 1, 1},
7883         {0x7F, 0x8, 0x8, 0, 0},
7884         {0x80, 0x14, 0x14, 1, 1},
7885         {0x81, 0x33, 0x33, 0, 0},
7886         {0x82, 0x88, 0x88, 0, 0},
7887         {0x83, 0x6, 0x6, 0, 0},
7888         {0x84, 0x3, 0x3, 1, 1},
7889         {0x85, 0xa, 0xa, 0, 0},
7890         {0x86, 0x3, 0x3, 1, 1},
7891         {0x87, 0x2a, 0x2a, 0, 0},
7892         {0x88, 0xa4, 0xa4, 0, 0},
7893         {0x89, 0x18, 0x18, 0, 0},
7894         {0x8A, 0x28, 0x28, 0, 0},
7895         {0x8B, 0, 0, 0, 0},
7896         {0x8C, 0x4a, 0x4a, 0, 0},
7897         {0x8D, 0, 0, 0, 0},
7898         {0x8E, 0xf8, 0xf8, 0, 0},
7899         {0x8F, 0x88, 0x88, 0, 0},
7900         {0x90, 0x88, 0x88, 0, 0},
7901         {0x91, 0x88, 0x8, 1, 1},
7902         {0x92, 0x88, 0x88, 0, 0},
7903         {0x93, 0, 0, 0, 0},
7904         {0x94, 0x1, 0x1, 1, 1},
7905         {0x95, 0x8a, 0x8a, 0, 0},
7906         {0x96, 0x8, 0x8, 0, 0},
7907         {0x97, 0x83, 0x83, 0, 0},
7908         {0x98, 0x6, 0x6, 0, 0},
7909         {0x99, 0xa0, 0xa0, 0, 0},
7910         {0x9A, 0xa, 0xa, 0, 0},
7911         {0x9B, 0x87, 0x87, 1, 1},
7912         {0x9C, 0x2a, 0x2a, 0, 0},
7913         {0x9D, 0x2a, 0x2a, 0, 0},
7914         {0x9E, 0x2a, 0x2a, 0, 0},
7915         {0x9F, 0x2a, 0x2a, 0, 0},
7916         {0xA0, 0x18, 0x18, 0, 0},
7917         {0xA1, 0x6a, 0x6a, 1, 1},
7918         {0xA2, 0xab, 0xab, 1, 1},
7919         {0xA3, 0x13, 0x13, 1, 1},
7920         {0xA4, 0xc1, 0xc1, 1, 1},
7921         {0xA5, 0xaa, 0xaa, 1, 1},
7922         {0xA6, 0x87, 0x87, 1, 1},
7923         {0xA7, 0, 0, 0, 0},
7924         {0xA8, 0x6, 0x6, 0, 0},
7925         {0xA9, 0x7, 0x7, 0, 0},
7926         {0xAA, 0x7, 0x7, 0, 0},
7927         {0xAB, 0x15, 0x15, 0, 0},
7928         {0xAC, 0x55, 0x55, 0, 0},
7929         {0xAD, 0x97, 0x97, 1, 1},
7930         {0xAE, 0x8, 0x8, 0, 0},
7931         {0xAF, 0x14, 0x14, 1, 1},
7932         {0xB0, 0x33, 0x33, 0, 0},
7933         {0xB1, 0x88, 0x88, 0, 0},
7934         {0xB2, 0x6, 0x6, 0, 0},
7935         {0xB3, 0x3, 0x3, 1, 1},
7936         {0xB4, 0xa, 0xa, 0, 0},
7937         {0xB5, 0x3, 0x3, 1, 1},
7938         {0xB6, 0x2a, 0x2a, 0, 0},
7939         {0xB7, 0xa4, 0xa4, 0, 0},
7940         {0xB8, 0x18, 0x18, 0, 0},
7941         {0xB9, 0x28, 0x28, 0, 0},
7942         {0xBA, 0, 0, 0, 0},
7943         {0xBB, 0x4a, 0x4a, 0, 0},
7944         {0xBC, 0, 0, 0, 0},
7945         {0xBD, 0x71, 0x71, 0, 0},
7946         {0xBE, 0x72, 0x72, 0, 0},
7947         {0xBF, 0x73, 0x73, 0, 0},
7948         {0xC0, 0x74, 0x74, 0, 0},
7949         {0xC1, 0x75, 0x75, 0, 0},
7950         {0xC2, 0x76, 0x76, 0, 0},
7951         {0xC3, 0x77, 0x77, 0, 0},
7952         {0xC4, 0x78, 0x78, 0, 0},
7953         {0xC5, 0x79, 0x79, 0, 0},
7954         {0xC6, 0x7a, 0x7a, 0, 0},
7955         {0xC7, 0, 0, 0, 0},
7956         {0xC8, 0, 0, 0, 0},
7957         {0xC9, 0, 0, 0, 0},
7958         {0xCA, 0, 0, 0, 0},
7959         {0xCB, 0, 0, 0, 0},
7960         {0xCC, 0, 0, 0, 0},
7961         {0xCD, 0, 0, 0, 0},
7962         {0xCE, 0x6, 0x6, 0, 0},
7963         {0xCF, 0, 0, 0, 0},
7964         {0xD0, 0, 0, 0, 0},
7965         {0xD1, 0x18, 0x18, 0, 0},
7966         {0xD2, 0x88, 0x88, 0, 0},
7967         {0xD3, 0, 0, 0, 0},
7968         {0xD4, 0, 0, 0, 0},
7969         {0xD5, 0, 0, 0, 0},
7970         {0xD6, 0, 0, 0, 0},
7971         {0xD7, 0, 0, 0, 0},
7972         {0xD8, 0, 0, 0, 0},
7973         {0xD9, 0, 0, 0, 0},
7974         {0xDA, 0x6, 0x6, 0, 0},
7975         {0xDB, 0, 0, 0, 0},
7976         {0xDC, 0, 0, 0, 0},
7977         {0xDD, 0x18, 0x18, 0, 0},
7978         {0xDE, 0x88, 0x88, 0, 0},
7979         {0xDF, 0, 0, 0, 0},
7980         {0xE0, 0, 0, 0, 0},
7981         {0xE1, 0, 0, 0, 0},
7982         {0xE2, 0, 0, 0, 0},
7983         {0xFFFF, 0, 0, 0, 0},
7984 };
7985 
7986 static struct radio_regs regs_SYN_2056[] = {
7987         {0x02, 0, 0, 0, 0},
7988         {0x03, 0, 0, 0, 0},
7989         {0x04, 0, 0, 0, 0},
7990         {0x05, 0, 0, 0, 0},
7991         {0x06, 0, 0, 0, 0},
7992         {0x07, 0, 0, 0, 0},
7993         {0x08, 0, 0, 0, 0},
7994         {0x09, 0x1, 0x1, 0, 0},
7995         {0x0A, 0, 0, 0, 0},
7996         {0x0B, 0, 0, 0, 0},
7997         {0x0C, 0, 0, 0, 0},
7998         {0x0D, 0, 0, 0, 0},
7999         {0x0E, 0, 0, 0, 0},
8000         {0x0F, 0, 0, 0, 0},
8001         {0x10, 0, 0, 0, 0},
8002         {0x11, 0, 0, 0, 0},
8003         {0x12, 0, 0, 0, 0},
8004         {0x13, 0, 0, 0, 0},
8005         {0x14, 0, 0, 0, 0},
8006         {0x15, 0, 0, 0, 0},
8007         {0x16, 0, 0, 0, 0},
8008         {0x17, 0, 0, 0, 0},
8009         {0x18, 0, 0, 0, 0},
8010         {0x19, 0, 0, 0, 0},
8011         {0x1A, 0, 0, 0, 0},
8012         {0x1B, 0, 0, 0, 0},
8013         {0x1C, 0, 0, 0, 0},
8014         {0x1D, 0, 0, 0, 0},
8015         {0x1E, 0, 0, 0, 0},
8016         {0x1F, 0, 0, 0, 0},
8017         {0x20, 0, 0, 0, 0},
8018         {0x21, 0, 0, 0, 0},
8019         {0x22, 0x60, 0x60, 0, 0},
8020         {0x23, 0x6, 0x6, 0, 0},
8021         {0x24, 0xc, 0xc, 0, 0},
8022         {0x25, 0, 0, 0, 0},
8023         {0x26, 0, 0, 0, 0},
8024         {0x27, 0, 0, 0, 0},
8025         {0x28, 0x1, 0x1, 0, 0},
8026         {0x29, 0, 0, 0, 0},
8027         {0x2A, 0, 0, 0, 0},
8028         {0x2B, 0, 0, 0, 0},
8029         {0x2C, 0, 0, 0, 0},
8030         {0x2D, 0, 0, 0, 0},
8031         {0x2E, 0xd, 0xd, 0, 0},
8032         {0x2F, 0x1f, 0x1f, 0, 0},
8033         {0x30, 0x15, 0x15, 0, 0},
8034         {0x31, 0xf, 0xf, 0, 0},
8035         {0x32, 0, 0, 0, 0},
8036         {0x33, 0, 0, 0, 0},
8037         {0x34, 0, 0, 0, 0},
8038         {0x35, 0, 0, 0, 0},
8039         {0x36, 0, 0, 0, 0},
8040         {0x37, 0, 0, 0, 0},
8041         {0x38, 0, 0, 0, 0},
8042         {0x39, 0, 0, 0, 0},
8043         {0x3A, 0, 0, 0, 0},
8044         {0x3B, 0, 0, 0, 0},
8045         {0x3C, 0x13, 0x13, 0, 0},
8046         {0x3D, 0xf, 0xf, 0, 0},
8047         {0x3E, 0x18, 0x18, 0, 0},
8048         {0x3F, 0, 0, 0, 0},
8049         {0x40, 0, 0, 0, 0},
8050         {0x41, 0x20, 0x20, 0, 0},
8051         {0x42, 0x20, 0x20, 0, 0},
8052         {0x43, 0, 0, 0, 0},
8053         {0x44, 0x77, 0x77, 0, 0},
8054         {0x45, 0x7, 0x7, 0, 0},
8055         {0x46, 0x1, 0x1, 0, 0},
8056         {0x47, 0x4, 0x4, 0, 0},
8057         {0x48, 0xf, 0xf, 0, 0},
8058         {0x49, 0x30, 0x30, 0, 0},
8059         {0x4A, 0x32, 0x32, 0, 0},
8060         {0x4B, 0xd, 0xd, 0, 0},
8061         {0x4C, 0xd, 0xd, 0, 0},
8062         {0x4D, 0x4, 0x4, 0, 0},
8063         {0x4E, 0x6, 0x6, 0, 0},
8064         {0x4F, 0x1, 0x1, 0, 0},
8065         {0x50, 0x1c, 0x1c, 0, 0},
8066         {0x51, 0x2, 0x2, 0, 0},
8067         {0x52, 0x2, 0x2, 0, 0},
8068         {0x53, 0xf7, 0xf7, 1, 1},
8069         {0x54, 0xb4, 0xb4, 0, 0},
8070         {0x55, 0xd2, 0xd2, 0, 0},
8071         {0x56, 0, 0, 0, 0},
8072         {0x57, 0, 0, 0, 0},
8073         {0x58, 0x4, 0x4, 0, 0},
8074         {0x59, 0x96, 0x96, 0, 0},
8075         {0x5A, 0x3e, 0x3e, 0, 0},
8076         {0x5B, 0x3e, 0x3e, 0, 0},
8077         {0x5C, 0x13, 0x13, 0, 0},
8078         {0x5D, 0x2, 0x2, 0, 0},
8079         {0x5E, 0, 0, 0, 0},
8080         {0x5F, 0x7, 0x7, 0, 0},
8081         {0x60, 0x7, 0x7, 1, 1},
8082         {0x61, 0x8, 0x8, 0, 0},
8083         {0x62, 0x3, 0x3, 0, 0},
8084         {0x63, 0, 0, 0, 0},
8085         {0x64, 0, 0, 0, 0},
8086         {0x65, 0, 0, 0, 0},
8087         {0x66, 0, 0, 0, 0},
8088         {0x67, 0, 0, 0, 0},
8089         {0x68, 0x40, 0x40, 0, 0},
8090         {0x69, 0, 0, 0, 0},
8091         {0x6A, 0, 0, 0, 0},
8092         {0x6B, 0, 0, 0, 0},
8093         {0x6C, 0, 0, 0, 0},
8094         {0x6D, 0x1, 0x1, 0, 0},
8095         {0x6E, 0, 0, 0, 0},
8096         {0x6F, 0, 0, 0, 0},
8097         {0x70, 0x60, 0x60, 0, 0},
8098         {0x71, 0x66, 0x66, 0, 0},
8099         {0x72, 0xc, 0xc, 0, 0},
8100         {0x73, 0x66, 0x66, 0, 0},
8101         {0x74, 0x8f, 0x8f, 1, 1},
8102         {0x75, 0, 0, 0, 0},
8103         {0x76, 0xcc, 0xcc, 0, 0},
8104         {0x77, 0x1, 0x1, 0, 0},
8105         {0x78, 0x66, 0x66, 0, 0},
8106         {0x79, 0x66, 0x66, 0, 0},
8107         {0x7A, 0, 0, 0, 0},
8108         {0x7B, 0, 0, 0, 0},
8109         {0x7C, 0, 0, 0, 0},
8110         {0x7D, 0, 0, 0, 0},
8111         {0x7E, 0, 0, 0, 0},
8112         {0x7F, 0, 0, 0, 0},
8113         {0x80, 0, 0, 0, 0},
8114         {0x81, 0, 0, 0, 0},
8115         {0x82, 0, 0, 0, 0},
8116         {0x83, 0, 0, 0, 0},
8117         {0x84, 0, 0, 0, 0},
8118         {0x85, 0xff, 0xff, 0, 0},
8119         {0x86, 0, 0, 0, 0},
8120         {0x87, 0, 0, 0, 0},
8121         {0x88, 0, 0, 0, 0},
8122         {0x89, 0, 0, 0, 0},
8123         {0x8A, 0, 0, 0, 0},
8124         {0x8B, 0, 0, 0, 0},
8125         {0x8C, 0, 0, 0, 0},
8126         {0x8D, 0, 0, 0, 0},
8127         {0x8E, 0, 0, 0, 0},
8128         {0x8F, 0, 0, 0, 0},
8129         {0x90, 0, 0, 0, 0},
8130         {0x91, 0, 0, 0, 0},
8131         {0x92, 0, 0, 0, 0},
8132         {0x93, 0, 0, 0, 0},
8133         {0x94, 0, 0, 0, 0},
8134         {0x95, 0, 0, 0, 0},
8135         {0x96, 0, 0, 0, 0},
8136         {0x97, 0, 0, 0, 0},
8137         {0x98, 0, 0, 0, 0},
8138         {0x99, 0, 0, 0, 0},
8139         {0x9A, 0, 0, 0, 0},
8140         {0x9B, 0, 0, 0, 0},
8141         {0x9C, 0, 0, 0, 0},
8142         {0x9D, 0, 0, 0, 0},
8143         {0x9E, 0, 0, 0, 0},
8144         {0x9F, 0x6, 0x6, 0, 0},
8145         {0xA0, 0x66, 0x66, 0, 0},
8146         {0xA1, 0x66, 0x66, 0, 0},
8147         {0xA2, 0x66, 0x66, 0, 0},
8148         {0xA3, 0x66, 0x66, 0, 0},
8149         {0xA4, 0x66, 0x66, 0, 0},
8150         {0xA5, 0x66, 0x66, 0, 0},
8151         {0xA6, 0x66, 0x66, 0, 0},
8152         {0xA7, 0x66, 0x66, 0, 0},
8153         {0xA8, 0x66, 0x66, 0, 0},
8154         {0xA9, 0x66, 0x66, 0, 0},
8155         {0xAA, 0x66, 0x66, 0, 0},
8156         {0xAB, 0x66, 0x66, 0, 0},
8157         {0xAC, 0x66, 0x66, 0, 0},
8158         {0xAD, 0x66, 0x66, 0, 0},
8159         {0xAE, 0x66, 0x66, 0, 0},
8160         {0xAF, 0x66, 0x66, 0, 0},
8161         {0xB0, 0x66, 0x66, 0, 0},
8162         {0xB1, 0x66, 0x66, 0, 0},
8163         {0xB2, 0x66, 0x66, 0, 0},
8164         {0xB3, 0xa, 0xa, 0, 0},
8165         {0xB4, 0, 0, 0, 0},
8166         {0xB5, 0, 0, 0, 0},
8167         {0xB6, 0, 0, 0, 0},
8168         {0xFFFF, 0, 0, 0, 0}
8169 };
8170 
8171 static struct radio_regs regs_TX_2056[] = {
8172         {0x02, 0, 0, 0, 0},
8173         {0x03, 0, 0, 0, 0},
8174         {0x04, 0, 0, 0, 0},
8175         {0x05, 0, 0, 0, 0},
8176         {0x06, 0, 0, 0, 0},
8177         {0x07, 0, 0, 0, 0},
8178         {0x08, 0, 0, 0, 0},
8179         {0x09, 0, 0, 0, 0},
8180         {0x0A, 0, 0, 0, 0},
8181         {0x0B, 0, 0, 0, 0},
8182         {0x0C, 0, 0, 0, 0},
8183         {0x0D, 0, 0, 0, 0},
8184         {0x0E, 0, 0, 0, 0},
8185         {0x0F, 0, 0, 0, 0},
8186         {0x10, 0, 0, 0, 0},
8187         {0x11, 0, 0, 0, 0},
8188         {0x12, 0, 0, 0, 0},
8189         {0x13, 0, 0, 0, 0},
8190         {0x14, 0, 0, 0, 0},
8191         {0x15, 0, 0, 0, 0},
8192         {0x16, 0, 0, 0, 0},
8193         {0x17, 0, 0, 0, 0},
8194         {0x18, 0, 0, 0, 0},
8195         {0x19, 0, 0, 0, 0},
8196         {0x1A, 0, 0, 0, 0},
8197         {0x1B, 0, 0, 0, 0},
8198         {0x1C, 0, 0, 0, 0},
8199         {0x1D, 0, 0, 0, 0},
8200         {0x1E, 0, 0, 0, 0},
8201         {0x1F, 0, 0, 0, 0},
8202         {0x20, 0, 0, 0, 0},
8203         {0x21, 0x88, 0x88, 0, 0},
8204         {0x22, 0x88, 0x88, 0, 0},
8205         {0x23, 0x88, 0x88, 0, 0},
8206         {0x24, 0x88, 0x88, 0, 0},
8207         {0x25, 0xc, 0xc, 0, 0},
8208         {0x26, 0, 0, 0, 0},
8209         {0x27, 0x3, 0x3, 0, 0},
8210         {0x28, 0, 0, 0, 0},
8211         {0x29, 0x3, 0x3, 0, 0},
8212         {0x2A, 0x37, 0x37, 0, 0},
8213         {0x2B, 0x3, 0x3, 0, 0},
8214         {0x2C, 0, 0, 0, 0},
8215         {0x2D, 0, 0, 0, 0},
8216         {0x2E, 0x1, 0x1, 0, 0},
8217         {0x2F, 0x1, 0x1, 0, 0},
8218         {0x30, 0, 0, 0, 0},
8219         {0x31, 0, 0, 0, 0},
8220         {0x32, 0, 0, 0, 0},
8221         {0x33, 0x11, 0x11, 0, 0},
8222         {0x34, 0x11, 0x11, 0, 0},
8223         {0x35, 0, 0, 0, 0},
8224         {0x36, 0, 0, 0, 0},
8225         {0x37, 0x3, 0x3, 0, 0},
8226         {0x38, 0xf, 0xf, 0, 0},
8227         {0x39, 0, 0, 0, 0},
8228         {0x3A, 0x2d, 0x2d, 0, 0},
8229         {0x3B, 0, 0, 0, 0},
8230         {0x3C, 0x6e, 0x6e, 0, 0},
8231         {0x3D, 0xf0, 0xf0, 1, 1},
8232         {0x3E, 0, 0, 0, 0},
8233         {0x3F, 0, 0, 0, 0},
8234         {0x40, 0, 0, 0, 0},
8235         {0x41, 0x3, 0x3, 0, 0},
8236         {0x42, 0x3, 0x3, 0, 0},
8237         {0x43, 0, 0, 0, 0},
8238         {0x44, 0x1e, 0x1e, 0, 0},
8239         {0x45, 0, 0, 0, 0},
8240         {0x46, 0x6e, 0x6e, 0, 0},
8241         {0x47, 0xf0, 0xf0, 1, 1},
8242         {0x48, 0, 0, 0, 0},
8243         {0x49, 0x2, 0x2, 0, 0},
8244         {0x4A, 0xff, 0xff, 1, 1},
8245         {0x4B, 0xc, 0xc, 0, 0},
8246         {0x4C, 0, 0, 0, 0},
8247         {0x4D, 0x38, 0x38, 0, 0},
8248         {0x4E, 0x70, 0x70, 1, 1},
8249         {0x4F, 0x2, 0x2, 0, 0},
8250         {0x50, 0x88, 0x88, 0, 0},
8251         {0x51, 0xc, 0xc, 0, 0},
8252         {0x52, 0, 0, 0, 0},
8253         {0x53, 0x8, 0x8, 0, 0},
8254         {0x54, 0x70, 0x70, 1, 1},
8255         {0x55, 0x2, 0x2, 0, 0},
8256         {0x56, 0xff, 0xff, 1, 1},
8257         {0x57, 0, 0, 0, 0},
8258         {0x58, 0x83, 0x83, 0, 0},
8259         {0x59, 0x77, 0x77, 1, 1},
8260         {0x5A, 0, 0, 0, 0},
8261         {0x5B, 0x2, 0x2, 0, 0},
8262         {0x5C, 0x88, 0x88, 0, 0},
8263         {0x5D, 0, 0, 0, 0},
8264         {0x5E, 0x8, 0x8, 0, 0},
8265         {0x5F, 0x77, 0x77, 1, 1},
8266         {0x60, 0x1, 0x1, 0, 0},
8267         {0x61, 0, 0, 0, 0},
8268         {0x62, 0x7, 0x7, 0, 0},
8269         {0x63, 0, 0, 0, 0},
8270         {0x64, 0x7, 0x7, 0, 0},
8271         {0x65, 0, 0, 0, 0},
8272         {0x66, 0, 0, 0, 0},
8273         {0x67, 0x74, 0x74, 1, 1},
8274         {0x68, 0, 0, 0, 0},
8275         {0x69, 0xa, 0xa, 0, 0},
8276         {0x6A, 0, 0, 0, 0},
8277         {0x6B, 0, 0, 0, 0},
8278         {0x6C, 0, 0, 0, 0},
8279         {0x6D, 0, 0, 0, 0},
8280         {0x6E, 0, 0, 0, 0},
8281         {0x6F, 0, 0, 0, 0},
8282         {0x70, 0, 0, 0, 0},
8283         {0x71, 0x2, 0x2, 0, 0},
8284         {0x72, 0, 0, 0, 0},
8285         {0x73, 0, 0, 0, 0},
8286         {0x74, 0xe, 0xe, 0, 0},
8287         {0x75, 0xe, 0xe, 0, 0},
8288         {0x76, 0xe, 0xe, 0, 0},
8289         {0x77, 0x13, 0x13, 0, 0},
8290         {0x78, 0x13, 0x13, 0, 0},
8291         {0x79, 0x1b, 0x1b, 0, 0},
8292         {0x7A, 0x1b, 0x1b, 0, 0},
8293         {0x7B, 0x55, 0x55, 0, 0},
8294         {0x7C, 0x5b, 0x5b, 0, 0},
8295         {0x7D, 0, 0, 0, 0},
8296         {0x7E, 0, 0, 0, 0},
8297         {0x7F, 0, 0, 0, 0},
8298         {0x80, 0, 0, 0, 0},
8299         {0x81, 0, 0, 0, 0},
8300         {0x82, 0, 0, 0, 0},
8301         {0x83, 0, 0, 0, 0},
8302         {0x84, 0, 0, 0, 0},
8303         {0x85, 0, 0, 0, 0},
8304         {0x86, 0, 0, 0, 0},
8305         {0x87, 0, 0, 0, 0},
8306         {0x88, 0, 0, 0, 0},
8307         {0x89, 0, 0, 0, 0},
8308         {0x8A, 0, 0, 0, 0},
8309         {0x8B, 0, 0, 0, 0},
8310         {0x8C, 0, 0, 0, 0},
8311         {0x8D, 0, 0, 0, 0},
8312         {0x8E, 0, 0, 0, 0},
8313         {0x8F, 0, 0, 0, 0},
8314         {0x90, 0, 0, 0, 0},
8315         {0x91, 0, 0, 0, 0},
8316         {0x92, 0, 0, 0, 0},
8317         {0xFFFF, 0, 0, 0, 0}
8318 };
8319 
8320 static struct radio_regs regs_RX_2056[] = {
8321         {0x02, 0, 0, 0, 0},
8322         {0x03, 0, 0, 0, 0},
8323         {0x04, 0, 0, 0, 0},
8324         {0x05, 0, 0, 0, 0},
8325         {0x06, 0, 0, 0, 0},
8326         {0x07, 0, 0, 0, 0},
8327         {0x08, 0, 0, 0, 0},
8328         {0x09, 0, 0, 0, 0},
8329         {0x0A, 0, 0, 0, 0},
8330         {0x0B, 0, 0, 0, 0},
8331         {0x0C, 0, 0, 0, 0},
8332         {0x0D, 0, 0, 0, 0},
8333         {0x0E, 0, 0, 0, 0},
8334         {0x0F, 0, 0, 0, 0},
8335         {0x10, 0, 0, 0, 0},
8336         {0x11, 0, 0, 0, 0},
8337         {0x12, 0, 0, 0, 0},
8338         {0x13, 0, 0, 0, 0},
8339         {0x14, 0, 0, 0, 0},
8340         {0x15, 0, 0, 0, 0},
8341         {0x16, 0, 0, 0, 0},
8342         {0x17, 0, 0, 0, 0},
8343         {0x18, 0, 0, 0, 0},
8344         {0x19, 0, 0, 0, 0},
8345         {0x1A, 0, 0, 0, 0},
8346         {0x1B, 0, 0, 0, 0},
8347         {0x1C, 0, 0, 0, 0},
8348         {0x1D, 0, 0, 0, 0},
8349         {0x1E, 0, 0, 0, 0},
8350         {0x1F, 0, 0, 0, 0},
8351         {0x20, 0x3, 0x3, 0, 0},
8352         {0x21, 0, 0, 0, 0},
8353         {0x22, 0, 0, 0, 0},
8354         {0x23, 0x90, 0x90, 0, 0},
8355         {0x24, 0x55, 0x55, 0, 0},
8356         {0x25, 0x15, 0x15, 0, 0},
8357         {0x26, 0x5, 0x5, 0, 0},
8358         {0x27, 0x15, 0x15, 0, 0},
8359         {0x28, 0x5, 0x5, 0, 0},
8360         {0x29, 0x20, 0x20, 0, 0},
8361         {0x2A, 0x11, 0x11, 0, 0},
8362         {0x2B, 0x90, 0x90, 0, 0},
8363         {0x2C, 0, 0, 0, 0},
8364         {0x2D, 0x88, 0x88, 0, 0},
8365         {0x2E, 0x32, 0x32, 0, 0},
8366         {0x2F, 0x77, 0x77, 0, 0},
8367         {0x30, 0x17, 0x17, 1, 1},
8368         {0x31, 0xff, 0xff, 1, 1},
8369         {0x32, 0x20, 0x20, 0, 0},
8370         {0x33, 0, 0, 0, 0},
8371         {0x34, 0x88, 0x88, 0, 0},
8372         {0x35, 0x32, 0x32, 0, 0},
8373         {0x36, 0x77, 0x77, 0, 0},
8374         {0x37, 0x17, 0x17, 1, 1},
8375         {0x38, 0xf0, 0xf0, 1, 1},
8376         {0x39, 0x20, 0x20, 0, 0},
8377         {0x3A, 0x8, 0x8, 0, 0},
8378         {0x3B, 0x99, 0x99, 0, 0},
8379         {0x3C, 0, 0, 0, 0},
8380         {0x3D, 0x44, 0x44, 1, 1},
8381         {0x3E, 0, 0, 0, 0},
8382         {0x3F, 0x44, 0x44, 0, 0},
8383         {0x40, 0xf, 0xf, 1, 1},
8384         {0x41, 0x6, 0x6, 0, 0},
8385         {0x42, 0x4, 0x4, 0, 0},
8386         {0x43, 0x50, 0x50, 1, 1},
8387         {0x44, 0x8, 0x8, 0, 0},
8388         {0x45, 0x99, 0x99, 0, 0},
8389         {0x46, 0, 0, 0, 0},
8390         {0x47, 0x11, 0x11, 0, 0},
8391         {0x48, 0, 0, 0, 0},
8392         {0x49, 0x44, 0x44, 0, 0},
8393         {0x4A, 0x7, 0x7, 0, 0},
8394         {0x4B, 0x6, 0x6, 0, 0},
8395         {0x4C, 0x4, 0x4, 0, 0},
8396         {0x4D, 0, 0, 0, 0},
8397         {0x4E, 0, 0, 0, 0},
8398         {0x4F, 0x66, 0x66, 0, 0},
8399         {0x50, 0x66, 0x66, 0, 0},
8400         {0x51, 0x57, 0x57, 0, 0},
8401         {0x52, 0x57, 0x57, 0, 0},
8402         {0x53, 0x44, 0x44, 0, 0},
8403         {0x54, 0, 0, 0, 0},
8404         {0x55, 0, 0, 0, 0},
8405         {0x56, 0x8, 0x8, 0, 0},
8406         {0x57, 0x8, 0x8, 0, 0},
8407         {0x58, 0x7, 0x7, 0, 0},
8408         {0x59, 0x22, 0x22, 0, 0},
8409         {0x5A, 0x22, 0x22, 0, 0},
8410         {0x5B, 0x2, 0x2, 0, 0},
8411         {0x5C, 0x23, 0x23, 0, 0},
8412         {0x5D, 0x7, 0x7, 0, 0},
8413         {0x5E, 0x55, 0x55, 0, 0},
8414         {0x5F, 0x23, 0x23, 0, 0},
8415         {0x60, 0x41, 0x41, 0, 0},
8416         {0x61, 0x1, 0x1, 0, 0},
8417         {0x62, 0xa, 0xa, 0, 0},
8418         {0x63, 0, 0, 0, 0},
8419         {0x64, 0, 0, 0, 0},
8420         {0x65, 0, 0, 0, 0},
8421         {0x66, 0, 0, 0, 0},
8422         {0x67, 0, 0, 0, 0},
8423         {0x68, 0, 0, 0, 0},
8424         {0x69, 0, 0, 0, 0},
8425         {0x6A, 0, 0, 0, 0},
8426         {0x6B, 0xc, 0xc, 0, 0},
8427         {0x6C, 0, 0, 0, 0},
8428         {0x6D, 0, 0, 0, 0},
8429         {0x6E, 0, 0, 0, 0},
8430         {0x6F, 0, 0, 0, 0},
8431         {0x70, 0, 0, 0, 0},
8432         {0x71, 0, 0, 0, 0},
8433         {0x72, 0x22, 0x22, 0, 0},
8434         {0x73, 0x22, 0x22, 0, 0},
8435         {0x74, 0x2, 0x2, 0, 0},
8436         {0x75, 0xa, 0xa, 0, 0},
8437         {0x76, 0x1, 0x1, 0, 0},
8438         {0x77, 0x22, 0x22, 0, 0},
8439         {0x78, 0x30, 0x30, 0, 0},
8440         {0x79, 0, 0, 0, 0},
8441         {0x7A, 0, 0, 0, 0},
8442         {0x7B, 0, 0, 0, 0},
8443         {0x7C, 0, 0, 0, 0},
8444         {0x7D, 0, 0, 0, 0},
8445         {0x7E, 0, 0, 0, 0},
8446         {0x7F, 0, 0, 0, 0},
8447         {0x80, 0, 0, 0, 0},
8448         {0x81, 0, 0, 0, 0},
8449         {0x82, 0, 0, 0, 0},
8450         {0x83, 0, 0, 0, 0},
8451         {0x84, 0, 0, 0, 0},
8452         {0x85, 0, 0, 0, 0},
8453         {0x86, 0, 0, 0, 0},
8454         {0x87, 0, 0, 0, 0},
8455         {0x88, 0, 0, 0, 0},
8456         {0x89, 0, 0, 0, 0},
8457         {0x8A, 0, 0, 0, 0},
8458         {0x8B, 0, 0, 0, 0},
8459         {0x8C, 0, 0, 0, 0},
8460         {0x8D, 0, 0, 0, 0},
8461         {0x8E, 0, 0, 0, 0},
8462         {0x8F, 0, 0, 0, 0},
8463         {0x90, 0, 0, 0, 0},
8464         {0x91, 0, 0, 0, 0},
8465         {0x92, 0, 0, 0, 0},
8466         {0x93, 0, 0, 0, 0},
8467         {0x94, 0, 0, 0, 0},
8468         {0xFFFF, 0, 0, 0, 0}
8469 };
8470 
8471 static struct radio_regs regs_SYN_2056_A1[] = {
8472         {0x02, 0, 0, 0, 0},
8473         {0x03, 0, 0, 0, 0},
8474         {0x04, 0, 0, 0, 0},
8475         {0x05, 0, 0, 0, 0},
8476         {0x06, 0, 0, 0, 0},
8477         {0x07, 0, 0, 0, 0},
8478         {0x08, 0, 0, 0, 0},
8479         {0x09, 0x1, 0x1, 0, 0},
8480         {0x0A, 0, 0, 0, 0},
8481         {0x0B, 0, 0, 0, 0},
8482         {0x0C, 0, 0, 0, 0},
8483         {0x0D, 0, 0, 0, 0},
8484         {0x0E, 0, 0, 0, 0},
8485         {0x0F, 0, 0, 0, 0},
8486         {0x10, 0, 0, 0, 0},
8487         {0x11, 0, 0, 0, 0},
8488         {0x12, 0, 0, 0, 0},
8489         {0x13, 0, 0, 0, 0},
8490         {0x14, 0, 0, 0, 0},
8491         {0x15, 0, 0, 0, 0},
8492         {0x16, 0, 0, 0, 0},
8493         {0x17, 0, 0, 0, 0},
8494         {0x18, 0, 0, 0, 0},
8495         {0x19, 0, 0, 0, 0},
8496         {0x1A, 0, 0, 0, 0},
8497         {0x1B, 0, 0, 0, 0},
8498         {0x1C, 0, 0, 0, 0},
8499         {0x1D, 0, 0, 0, 0},
8500         {0x1E, 0, 0, 0, 0},
8501         {0x1F, 0, 0, 0, 0},
8502         {0x20, 0, 0, 0, 0},
8503         {0x21, 0, 0, 0, 0},
8504         {0x22, 0x60, 0x60, 0, 0},
8505         {0x23, 0x6, 0x6, 0, 0},
8506         {0x24, 0xc, 0xc, 0, 0},
8507         {0x25, 0, 0, 0, 0},
8508         {0x26, 0, 0, 0, 0},
8509         {0x27, 0, 0, 0, 0},
8510         {0x28, 0x1, 0x1, 0, 0},
8511         {0x29, 0, 0, 0, 0},
8512         {0x2A, 0, 0, 0, 0},
8513         {0x2B, 0, 0, 0, 0},
8514         {0x2C, 0, 0, 0, 0},
8515         {0x2D, 0, 0, 0, 0},
8516         {0x2E, 0xd, 0xd, 0, 0},
8517         {0x2F, 0x1f, 0x1f, 0, 0},
8518         {0x30, 0x15, 0x15, 0, 0},
8519         {0x31, 0xf, 0xf, 0, 0},
8520         {0x32, 0, 0, 0, 0},
8521         {0x33, 0, 0, 0, 0},
8522         {0x34, 0, 0, 0, 0},
8523         {0x35, 0, 0, 0, 0},
8524         {0x36, 0, 0, 0, 0},
8525         {0x37, 0, 0, 0, 0},
8526         {0x38, 0, 0, 0, 0},
8527         {0x39, 0, 0, 0, 0},
8528         {0x3A, 0, 0, 0, 0},
8529         {0x3B, 0, 0, 0, 0},
8530         {0x3C, 0x13, 0x13, 0, 0},
8531         {0x3D, 0xf, 0xf, 0, 0},
8532         {0x3E, 0x18, 0x18, 0, 0},
8533         {0x3F, 0, 0, 0, 0},
8534         {0x40, 0, 0, 0, 0},
8535         {0x41, 0x20, 0x20, 0, 0},
8536         {0x42, 0x20, 0x20, 0, 0},
8537         {0x43, 0, 0, 0, 0},
8538         {0x44, 0x77, 0x77, 0, 0},
8539         {0x45, 0x7, 0x7, 0, 0},
8540         {0x46, 0x1, 0x1, 0, 0},
8541         {0x47, 0x4, 0x4, 0, 0},
8542         {0x48, 0xf, 0xf, 0, 0},
8543         {0x49, 0x30, 0x30, 0, 0},
8544         {0x4A, 0x32, 0x32, 0, 0},
8545         {0x4B, 0xd, 0xd, 0, 0},
8546         {0x4C, 0xd, 0xd, 0, 0},
8547         {0x4D, 0x4, 0x4, 0, 0},
8548         {0x4E, 0x6, 0x6, 0, 0},
8549         {0x4F, 0x1, 0x1, 0, 0},
8550         {0x50, 0x1c, 0x1c, 0, 0},
8551         {0x51, 0x2, 0x2, 0, 0},
8552         {0x52, 0x2, 0x2, 0, 0},
8553         {0x53, 0xf7, 0xf7, 1, 1},
8554         {0x54, 0xb4, 0xb4, 0, 0},
8555         {0x55, 0xd2, 0xd2, 0, 0},
8556         {0x56, 0, 0, 0, 0},
8557         {0x57, 0, 0, 0, 0},
8558         {0x58, 0x4, 0x4, 0, 0},
8559         {0x59, 0x96, 0x96, 0, 0},
8560         {0x5A, 0x3e, 0x3e, 0, 0},
8561         {0x5B, 0x3e, 0x3e, 0, 0},
8562         {0x5C, 0x13, 0x13, 0, 0},
8563         {0x5D, 0x2, 0x2, 0, 0},
8564         {0x5E, 0, 0, 0, 0},
8565         {0x5F, 0x7, 0x7, 0, 0},
8566         {0x60, 0x7, 0x7, 1, 1},
8567         {0x61, 0x8, 0x8, 0, 0},
8568         {0x62, 0x3, 0x3, 0, 0},
8569         {0x63, 0, 0, 0, 0},
8570         {0x64, 0, 0, 0, 0},
8571         {0x65, 0, 0, 0, 0},
8572         {0x66, 0, 0, 0, 0},
8573         {0x67, 0, 0, 0, 0},
8574         {0x68, 0x40, 0x40, 0, 0},
8575         {0x69, 0, 0, 0, 0},
8576         {0x6A, 0, 0, 0, 0},
8577         {0x6B, 0, 0, 0, 0},
8578         {0x6C, 0, 0, 0, 0},
8579         {0x6D, 0x1, 0x1, 0, 0},
8580         {0x6E, 0, 0, 0, 0},
8581         {0x6F, 0, 0, 0, 0},
8582         {0x70, 0x60, 0x60, 0, 0},
8583         {0x71, 0x66, 0x66, 0, 0},
8584         {0x72, 0xc, 0xc, 0, 0},
8585         {0x73, 0x66, 0x66, 0, 0},
8586         {0x74, 0x8f, 0x8f, 1, 1},
8587         {0x75, 0, 0, 0, 0},
8588         {0x76, 0xcc, 0xcc, 0, 0},
8589         {0x77, 0x1, 0x1, 0, 0},
8590         {0x78, 0x66, 0x66, 0, 0},
8591         {0x79, 0x66, 0x66, 0, 0},
8592         {0x7A, 0, 0, 0, 0},
8593         {0x7B, 0, 0, 0, 0},
8594         {0x7C, 0, 0, 0, 0},
8595         {0x7D, 0, 0, 0, 0},
8596         {0x7E, 0, 0, 0, 0},
8597         {0x7F, 0, 0, 0, 0},
8598         {0x80, 0, 0, 0, 0},
8599         {0x81, 0, 0, 0, 0},
8600         {0x82, 0, 0, 0, 0},
8601         {0x83, 0, 0, 0, 0},
8602         {0x84, 0, 0, 0, 0},
8603         {0x85, 0xff, 0xff, 0, 0},
8604         {0x86, 0, 0, 0, 0},
8605         {0x87, 0, 0, 0, 0},
8606         {0x88, 0, 0, 0, 0},
8607         {0x89, 0, 0, 0, 0},
8608         {0x8A, 0, 0, 0, 0},
8609         {0x8B, 0, 0, 0, 0},
8610         {0x8C, 0, 0, 0, 0},
8611         {0x8D, 0, 0, 0, 0},
8612         {0x8E, 0, 0, 0, 0},
8613         {0x8F, 0, 0, 0, 0},
8614         {0x90, 0, 0, 0, 0},
8615         {0x91, 0, 0, 0, 0},
8616         {0x92, 0, 0, 0, 0},
8617         {0x93, 0, 0, 0, 0},
8618         {0x94, 0, 0, 0, 0},
8619         {0x95, 0, 0, 0, 0},
8620         {0x96, 0, 0, 0, 0},
8621         {0x97, 0, 0, 0, 0},
8622         {0x98, 0, 0, 0, 0},
8623         {0x99, 0, 0, 0, 0},
8624         {0x9A, 0, 0, 0, 0},
8625         {0x9B, 0, 0, 0, 0},
8626         {0x9C, 0, 0, 0, 0},
8627         {0x9D, 0, 0, 0, 0},
8628         {0x9E, 0, 0, 0, 0},
8629         {0x9F, 0x6, 0x6, 0, 0},
8630         {0xA0, 0x66, 0x66, 0, 0},
8631         {0xA1, 0x66, 0x66, 0, 0},
8632         {0xA2, 0x66, 0x66, 0, 0},
8633         {0xA3, 0x66, 0x66, 0, 0},
8634         {0xA4, 0x66, 0x66, 0, 0},
8635         {0xA5, 0x66, 0x66, 0, 0},
8636         {0xA6, 0x66, 0x66, 0, 0},
8637         {0xA7, 0x66, 0x66, 0, 0},
8638         {0xA8, 0x66, 0x66, 0, 0},
8639         {0xA9, 0x66, 0x66, 0, 0},
8640         {0xAA, 0x66, 0x66, 0, 0},
8641         {0xAB, 0x66, 0x66, 0, 0},
8642         {0xAC, 0x66, 0x66, 0, 0},
8643         {0xAD, 0x66, 0x66, 0, 0},
8644         {0xAE, 0x66, 0x66, 0, 0},
8645         {0xAF, 0x66, 0x66, 0, 0},
8646         {0xB0, 0x66, 0x66, 0, 0},
8647         {0xB1, 0x66, 0x66, 0, 0},
8648         {0xB2, 0x66, 0x66, 0, 0},
8649         {0xB3, 0xa, 0xa, 0, 0},
8650         {0xB4, 0, 0, 0, 0},
8651         {0xB5, 0, 0, 0, 0},
8652         {0xB6, 0, 0, 0, 0},
8653         {0xFFFF, 0, 0, 0, 0}
8654 };
8655 
8656 static struct radio_regs regs_TX_2056_A1[] = {
8657         {0x02, 0, 0, 0, 0},
8658         {0x03, 0, 0, 0, 0},
8659         {0x04, 0, 0, 0, 0},
8660         {0x05, 0, 0, 0, 0},
8661         {0x06, 0, 0, 0, 0},
8662         {0x07, 0, 0, 0, 0},
8663         {0x08, 0, 0, 0, 0},
8664         {0x09, 0, 0, 0, 0},
8665         {0x0A, 0, 0, 0, 0},
8666         {0x0B, 0, 0, 0, 0},
8667         {0x0C, 0, 0, 0, 0},
8668         {0x0D, 0, 0, 0, 0},
8669         {0x0E, 0, 0, 0, 0},
8670         {0x0F, 0, 0, 0, 0},
8671         {0x10, 0, 0, 0, 0},
8672         {0x11, 0, 0, 0, 0},
8673         {0x12, 0, 0, 0, 0},
8674         {0x13, 0, 0, 0, 0},
8675         {0x14, 0, 0, 0, 0},
8676         {0x15, 0, 0, 0, 0},
8677         {0x16, 0, 0, 0, 0},
8678         {0x17, 0, 0, 0, 0},
8679         {0x18, 0, 0, 0, 0},
8680         {0x19, 0, 0, 0, 0},
8681         {0x1A, 0, 0, 0, 0},
8682         {0x1B, 0, 0, 0, 0},
8683         {0x1C, 0, 0, 0, 0},
8684         {0x1D, 0, 0, 0, 0},
8685         {0x1E, 0, 0, 0, 0},
8686         {0x1F, 0, 0, 0, 0},
8687         {0x20, 0, 0, 0, 0},
8688         {0x21, 0x88, 0x88, 0, 0},
8689         {0x22, 0x88, 0x88, 0, 0},
8690         {0x23, 0x88, 0x88, 0, 0},
8691         {0x24, 0x88, 0x88, 0, 0},
8692         {0x25, 0xc, 0xc, 0, 0},
8693         {0x26, 0, 0, 0, 0},
8694         {0x27, 0x3, 0x3, 0, 0},
8695         {0x28, 0, 0, 0, 0},
8696         {0x29, 0x3, 0x3, 0, 0},
8697         {0x2A, 0x37, 0x37, 0, 0},
8698         {0x2B, 0x3, 0x3, 0, 0},
8699         {0x2C, 0, 0, 0, 0},
8700         {0x2D, 0, 0, 0, 0},
8701         {0x2E, 0x1, 0x1, 0, 0},
8702         {0x2F, 0x1, 0x1, 0, 0},
8703         {0x30, 0, 0, 0, 0},
8704         {0x31, 0, 0, 0, 0},
8705         {0x32, 0, 0, 0, 0},
8706         {0x33, 0x11, 0x11, 0, 0},
8707         {0x34, 0x11, 0x11, 0, 0},
8708         {0x35, 0, 0, 0, 0},
8709         {0x36, 0, 0, 0, 0},
8710         {0x37, 0x3, 0x3, 0, 0},
8711         {0x38, 0xf, 0xf, 0, 0},
8712         {0x39, 0, 0, 0, 0},
8713         {0x3A, 0x2d, 0x2d, 0, 0},
8714         {0x3B, 0, 0, 0, 0},
8715         {0x3C, 0x6e, 0x6e, 0, 0},
8716         {0x3D, 0xf0, 0xf0, 1, 1},
8717         {0x3E, 0, 0, 0, 0},
8718         {0x3F, 0, 0, 0, 0},
8719         {0x40, 0, 0, 0, 0},
8720         {0x41, 0x3, 0x3, 0, 0},
8721         {0x42, 0x3, 0x3, 0, 0},
8722         {0x43, 0, 0, 0, 0},
8723         {0x44, 0x1e, 0x1e, 0, 0},
8724         {0x45, 0, 0, 0, 0},
8725         {0x46, 0x6e, 0x6e, 0, 0},
8726         {0x47, 0xf0, 0xf0, 1, 1},
8727         {0x48, 0, 0, 0, 0},
8728         {0x49, 0x2, 0x2, 0, 0},
8729         {0x4A, 0xff, 0xff, 1, 1},
8730         {0x4B, 0xc, 0xc, 0, 0},
8731         {0x4C, 0, 0, 0, 0},
8732         {0x4D, 0x38, 0x38, 0, 0},
8733         {0x4E, 0x70, 0x70, 1, 1},
8734         {0x4F, 0x2, 0x2, 0, 0},
8735         {0x50, 0x88, 0x88, 0, 0},
8736         {0x51, 0xc, 0xc, 0, 0},
8737         {0x52, 0, 0, 0, 0},
8738         {0x53, 0x8, 0x8, 0, 0},
8739         {0x54, 0x70, 0x70, 1, 1},
8740         {0x55, 0x2, 0x2, 0, 0},
8741         {0x56, 0xff, 0xff, 1, 1},
8742         {0x57, 0, 0, 0, 0},
8743         {0x58, 0x83, 0x83, 0, 0},
8744         {0x59, 0x77, 0x77, 1, 1},
8745         {0x5A, 0, 0, 0, 0},
8746         {0x5B, 0x2, 0x2, 0, 0},
8747         {0x5C, 0x88, 0x88, 0, 0},
8748         {0x5D, 0, 0, 0, 0},
8749         {0x5E, 0x8, 0x8, 0, 0},
8750         {0x5F, 0x77, 0x77, 1, 1},
8751         {0x60, 0x1, 0x1, 0, 0},
8752         {0x61, 0, 0, 0, 0},
8753         {0x62, 0x7, 0x7, 0, 0},
8754         {0x63, 0, 0, 0, 0},
8755         {0x64, 0x7, 0x7, 0, 0},
8756         {0x65, 0, 0, 0, 0},
8757         {0x66, 0, 0, 0, 0},
8758         {0x67, 0x72, 0x72, 1, 1},
8759         {0x68, 0, 0, 0, 0},
8760         {0x69, 0xa, 0xa, 0, 0},
8761         {0x6A, 0, 0, 0, 0},
8762         {0x6B, 0, 0, 0, 0},
8763         {0x6C, 0, 0, 0, 0},
8764         {0x6D, 0, 0, 0, 0},
8765         {0x6E, 0, 0, 0, 0},
8766         {0x6F, 0, 0, 0, 0},
8767         {0x70, 0, 0, 0, 0},
8768         {0x71, 0x2, 0x2, 0, 0},
8769         {0x72, 0, 0, 0, 0},
8770         {0x73, 0, 0, 0, 0},
8771         {0x74, 0xe, 0xe, 0, 0},
8772         {0x75, 0xe, 0xe, 0, 0},
8773         {0x76, 0xe, 0xe, 0, 0},
8774         {0x77, 0x13, 0x13, 0, 0},
8775         {0x78, 0x13, 0x13, 0, 0},
8776         {0x79, 0x1b, 0x1b, 0, 0},
8777         {0x7A, 0x1b, 0x1b, 0, 0},
8778         {0x7B, 0x55, 0x55, 0, 0},
8779         {0x7C, 0x5b, 0x5b, 0, 0},
8780         {0x7D, 0, 0, 0, 0},
8781         {0x7E, 0, 0, 0, 0},
8782         {0x7F, 0, 0, 0, 0},
8783         {0x80, 0, 0, 0, 0},
8784         {0x81, 0, 0, 0, 0},
8785         {0x82, 0, 0, 0, 0},
8786         {0x83, 0, 0, 0, 0},
8787         {0x84, 0, 0, 0, 0},
8788         {0x85, 0, 0, 0, 0},
8789         {0x86, 0, 0, 0, 0},
8790         {0x87, 0, 0, 0, 0},
8791         {0x88, 0, 0, 0, 0},
8792         {0x89, 0, 0, 0, 0},
8793         {0x8A, 0, 0, 0, 0},
8794         {0x8B, 0, 0, 0, 0},
8795         {0x8C, 0, 0, 0, 0},
8796         {0x8D, 0, 0, 0, 0},
8797         {0x8E, 0, 0, 0, 0},
8798         {0x8F, 0, 0, 0, 0},
8799         {0x90, 0, 0, 0, 0},
8800         {0x91, 0, 0, 0, 0},
8801         {0x92, 0, 0, 0, 0},
8802         {0xFFFF, 0, 0, 0, 0}
8803 };
8804 
8805 static struct radio_regs regs_RX_2056_A1[] = {
8806         {0x02, 0, 0, 0, 0},
8807         {0x03, 0, 0, 0, 0},
8808         {0x04, 0, 0, 0, 0},
8809         {0x05, 0, 0, 0, 0},
8810         {0x06, 0, 0, 0, 0},
8811         {0x07, 0, 0, 0, 0},
8812         {0x08, 0, 0, 0, 0},
8813         {0x09, 0, 0, 0, 0},
8814         {0x0A, 0, 0, 0, 0},
8815         {0x0B, 0, 0, 0, 0},
8816         {0x0C, 0, 0, 0, 0},
8817         {0x0D, 0, 0, 0, 0},
8818         {0x0E, 0, 0, 0, 0},
8819         {0x0F, 0, 0, 0, 0},
8820         {0x10, 0, 0, 0, 0},
8821         {0x11, 0, 0, 0, 0},
8822         {0x12, 0, 0, 0, 0},
8823         {0x13, 0, 0, 0, 0},
8824         {0x14, 0, 0, 0, 0},
8825         {0x15, 0, 0, 0, 0},
8826         {0x16, 0, 0, 0, 0},
8827         {0x17, 0, 0, 0, 0},
8828         {0x18, 0, 0, 0, 0},
8829         {0x19, 0, 0, 0, 0},
8830         {0x1A, 0, 0, 0, 0},
8831         {0x1B, 0, 0, 0, 0},
8832         {0x1C, 0, 0, 0, 0},
8833         {0x1D, 0, 0, 0, 0},
8834         {0x1E, 0, 0, 0, 0},
8835         {0x1F, 0, 0, 0, 0},
8836         {0x20, 0x3, 0x3, 0, 0},
8837         {0x21, 0, 0, 0, 0},
8838         {0x22, 0, 0, 0, 0},
8839         {0x23, 0x90, 0x90, 0, 0},
8840         {0x24, 0x55, 0x55, 0, 0},
8841         {0x25, 0x15, 0x15, 0, 0},
8842         {0x26, 0x5, 0x5, 0, 0},
8843         {0x27, 0x15, 0x15, 0, 0},
8844         {0x28, 0x5, 0x5, 0, 0},
8845         {0x29, 0x20, 0x20, 0, 0},
8846         {0x2A, 0x11, 0x11, 0, 0},
8847         {0x2B, 0x90, 0x90, 0, 0},
8848         {0x2C, 0, 0, 0, 0},
8849         {0x2D, 0x88, 0x88, 0, 0},
8850         {0x2E, 0x32, 0x32, 0, 0},
8851         {0x2F, 0x77, 0x77, 0, 0},
8852         {0x30, 0x17, 0x17, 1, 1},
8853         {0x31, 0xff, 0xff, 1, 1},
8854         {0x32, 0x20, 0x20, 0, 0},
8855         {0x33, 0, 0, 0, 0},
8856         {0x34, 0x88, 0x88, 0, 0},
8857         {0x35, 0x32, 0x32, 0, 0},
8858         {0x36, 0x77, 0x77, 0, 0},
8859         {0x37, 0x17, 0x17, 1, 1},
8860         {0x38, 0xf0, 0xf0, 1, 1},
8861         {0x39, 0x20, 0x20, 0, 0},
8862         {0x3A, 0x8, 0x8, 0, 0},
8863         {0x3B, 0x55, 0x55, 1, 1},
8864         {0x3C, 0, 0, 0, 0},
8865         {0x3D, 0x44, 0x44, 1, 1},
8866         {0x3E, 0, 0, 0, 0},
8867         {0x3F, 0x44, 0x44, 0, 0},
8868         {0x40, 0xf, 0xf, 1, 1},
8869         {0x41, 0x6, 0x6, 0, 0},
8870         {0x42, 0x4, 0x4, 0, 0},
8871         {0x43, 0x50, 0x50, 1, 1},
8872         {0x44, 0x8, 0x8, 0, 0},
8873         {0x45, 0x55, 0x55, 1, 1},
8874         {0x46, 0, 0, 0, 0},
8875         {0x47, 0x11, 0x11, 0, 0},
8876         {0x48, 0, 0, 0, 0},
8877         {0x49, 0x44, 0x44, 0, 0},
8878         {0x4A, 0x7, 0x7, 0, 0},
8879         {0x4B, 0x6, 0x6, 0, 0},
8880         {0x4C, 0x4, 0x4, 0, 0},
8881         {0x4D, 0, 0, 0, 0},
8882         {0x4E, 0, 0, 0, 0},
8883         {0x4F, 0x26, 0x26, 1, 1},
8884         {0x50, 0x26, 0x26, 1, 1},
8885         {0x51, 0xf, 0xf, 1, 1},
8886         {0x52, 0xf, 0xf, 1, 1},
8887         {0x53, 0x44, 0x44, 0, 0},
8888         {0x54, 0, 0, 0, 0},
8889         {0x55, 0, 0, 0, 0},
8890         {0x56, 0x8, 0x8, 0, 0},
8891         {0x57, 0x8, 0x8, 0, 0},
8892         {0x58, 0x7, 0x7, 0, 0},
8893         {0x59, 0x22, 0x22, 0, 0},
8894         {0x5A, 0x22, 0x22, 0, 0},
8895         {0x5B, 0x2, 0x2, 0, 0},
8896         {0x5C, 0x2f, 0x2f, 1, 1},
8897         {0x5D, 0x7, 0x7, 0, 0},
8898         {0x5E, 0x55, 0x55, 0, 0},
8899         {0x5F, 0x23, 0x23, 0, 0},
8900         {0x60, 0x41, 0x41, 0, 0},
8901         {0x61, 0x1, 0x1, 0, 0},
8902         {0x62, 0xa, 0xa, 0, 0},
8903         {0x63, 0, 0, 0, 0},
8904         {0x64, 0, 0, 0, 0},
8905         {0x65, 0, 0, 0, 0},
8906         {0x66, 0, 0, 0, 0},
8907         {0x67, 0, 0, 0, 0},
8908         {0x68, 0, 0, 0, 0},
8909         {0x69, 0, 0, 0, 0},
8910         {0x6A, 0, 0, 0, 0},
8911         {0x6B, 0xc, 0xc, 0, 0},
8912         {0x6C, 0, 0, 0, 0},
8913         {0x6D, 0, 0, 0, 0},
8914         {0x6E, 0, 0, 0, 0},
8915         {0x6F, 0, 0, 0, 0},
8916         {0x70, 0, 0, 0, 0},
8917         {0x71, 0, 0, 0, 0},
8918         {0x72, 0x22, 0x22, 0, 0},
8919         {0x73, 0x22, 0x22, 0, 0},
8920         {0x74, 0, 0, 1, 1},
8921         {0x75, 0xa, 0xa, 0, 0},
8922         {0x76, 0x1, 0x1, 0, 0},
8923         {0x77, 0x22, 0x22, 0, 0},
8924         {0x78, 0x30, 0x30, 0, 0},
8925         {0x79, 0, 0, 0, 0},
8926         {0x7A, 0, 0, 0, 0},
8927         {0x7B, 0, 0, 0, 0},
8928         {0x7C, 0, 0, 0, 0},
8929         {0x7D, 0, 0, 0, 0},
8930         {0x7E, 0, 0, 0, 0},
8931         {0x7F, 0, 0, 0, 0},
8932         {0x80, 0, 0, 0, 0},
8933         {0x81, 0, 0, 0, 0},
8934         {0x82, 0, 0, 0, 0},
8935         {0x83, 0, 0, 0, 0},
8936         {0x84, 0, 0, 0, 0},
8937         {0x85, 0, 0, 0, 0},
8938         {0x86, 0, 0, 0, 0},
8939         {0x87, 0, 0, 0, 0},
8940         {0x88, 0, 0, 0, 0},
8941         {0x89, 0, 0, 0, 0},
8942         {0x8A, 0, 0, 0, 0},
8943         {0x8B, 0, 0, 0, 0},
8944         {0x8C, 0, 0, 0, 0},
8945         {0x8D, 0, 0, 0, 0},
8946         {0x8E, 0, 0, 0, 0},
8947         {0x8F, 0, 0, 0, 0},
8948         {0x90, 0, 0, 0, 0},
8949         {0x91, 0, 0, 0, 0},
8950         {0x92, 0, 0, 0, 0},
8951         {0x93, 0, 0, 0, 0},
8952         {0x94, 0, 0, 0, 0},
8953         {0xFFFF, 0, 0, 0, 0}
8954 };
8955 
8956 static struct radio_regs regs_SYN_2056_rev5[] = {
8957         {0x02, 0, 0, 0, 0},
8958         {0x03, 0, 0, 0, 0},
8959         {0x04, 0, 0, 0, 0},
8960         {0x05, 0, 0, 0, 0},
8961         {0x06, 0, 0, 0, 0},
8962         {0x07, 0, 0, 0, 0},
8963         {0x08, 0, 0, 0, 0},
8964         {0x09, 0x1, 0x1, 0, 0},
8965         {0x0A, 0, 0, 0, 0},
8966         {0x0B, 0, 0, 0, 0},
8967         {0x0C, 0, 0, 0, 0},
8968         {0x0D, 0, 0, 0, 0},
8969         {0x0E, 0, 0, 0, 0},
8970         {0x0F, 0, 0, 0, 0},
8971         {0x10, 0, 0, 0, 0},
8972         {0x11, 0, 0, 0, 0},
8973         {0x12, 0, 0, 0, 0},
8974         {0x13, 0, 0, 0, 0},
8975         {0x14, 0, 0, 0, 0},
8976         {0x15, 0, 0, 0, 0},
8977         {0x16, 0, 0, 0, 0},
8978         {0x17, 0, 0, 0, 0},
8979         {0x18, 0, 0, 0, 0},
8980         {0x19, 0, 0, 0, 0},
8981         {0x1A, 0, 0, 0, 0},
8982         {0x1B, 0, 0, 0, 0},
8983         {0x1C, 0, 0, 0, 0},
8984         {0x1D, 0, 0, 0, 0},
8985         {0x1E, 0, 0, 0, 0},
8986         {0x1F, 0, 0, 0, 0},
8987         {0x20, 0, 0, 0, 0},
8988         {0x21, 0, 0, 0, 0},
8989         {0x22, 0x60, 0x60, 0, 0},
8990         {0x23, 0x6, 0x6, 0, 0},
8991         {0x24, 0xc, 0xc, 0, 0},
8992         {0x25, 0, 0, 0, 0},
8993         {0x26, 0, 0, 0, 0},
8994         {0x27, 0, 0, 0, 0},
8995         {0x28, 0x1, 0x1, 0, 0},
8996         {0x29, 0, 0, 0, 0},
8997         {0x2A, 0, 0, 0, 0},
8998         {0x2B, 0, 0, 0, 0},
8999         {0x2C, 0, 0, 0, 0},
9000         {0x2D, 0, 0, 0, 0},
9001         {0x2E, 0, 0, 0, 0},
9002         {0x2F, 0x1f, 0x1f, 0, 0},
9003         {0x30, 0x15, 0x15, 0, 0},
9004         {0x31, 0xf, 0xf, 0, 0},
9005         {0x32, 0, 0, 0, 0},
9006         {0x33, 0, 0, 0, 0},
9007         {0x34, 0, 0, 0, 0},
9008         {0x35, 0, 0, 0, 0},
9009         {0x36, 0, 0, 0, 0},
9010         {0x37, 0, 0, 0, 0},
9011         {0x38, 0, 0, 0, 0},
9012         {0x39, 0, 0, 0, 0},
9013         {0x3A, 0, 0, 0, 0},
9014         {0x3B, 0, 0, 0, 0},
9015         {0x3C, 0x13, 0x13, 0, 0},
9016         {0x3D, 0xf, 0xf, 0, 0},
9017         {0x3E, 0x18, 0x18, 0, 0},
9018         {0x3F, 0, 0, 0, 0},
9019         {0x40, 0, 0, 0, 0},
9020         {0x41, 0x20, 0x20, 0, 0},
9021         {0x42, 0x20, 0x20, 0, 0},
9022         {0x43, 0, 0, 0, 0},
9023         {0x44, 0x77, 0x77, 0, 0},
9024         {0x45, 0x7, 0x7, 0, 0},
9025         {0x46, 0x1, 0x1, 0, 0},
9026         {0x47, 0x4, 0x4, 0, 0},
9027         {0x48, 0xf, 0xf, 0, 0},
9028         {0x49, 0x30, 0x30, 0, 0},
9029         {0x4A, 0x32, 0x32, 0, 0},
9030         {0x4B, 0xd, 0xd, 0, 0},
9031         {0x4C, 0xd, 0xd, 0, 0},
9032         {0x4D, 0x4, 0x4, 0, 0},
9033         {0x4E, 0x6, 0x6, 0, 0},
9034         {0x4F, 0x1, 0x1, 0, 0},
9035         {0x50, 0x1c, 0x1c, 0, 0},
9036         {0x51, 0x2, 0x2, 0, 0},
9037         {0x52, 0x2, 0x2, 0, 0},
9038         {0x53, 0xf7, 0xf7, 1, 1},
9039         {0x54, 0xb4, 0xb4, 0, 0},
9040         {0x55, 0xd2, 0xd2, 0, 0},
9041         {0x56, 0, 0, 0, 0},
9042         {0x57, 0, 0, 0, 0},
9043         {0x58, 0x4, 0x4, 0, 0},
9044         {0x59, 0x96, 0x96, 0, 0},
9045         {0x5A, 0x3e, 0x3e, 0, 0},
9046         {0x5B, 0x3e, 0x3e, 0, 0},
9047         {0x5C, 0x13, 0x13, 0, 0},
9048         {0x5D, 0x2, 0x2, 0, 0},
9049         {0x5E, 0, 0, 0, 0},
9050         {0x5F, 0x7, 0x7, 0, 0},
9051         {0x60, 0x7, 0x7, 1, 1},
9052         {0x61, 0x8, 0x8, 0, 0},
9053         {0x62, 0x3, 0x3, 0, 0},
9054         {0x63, 0, 0, 0, 0},
9055         {0x64, 0, 0, 0, 0},
9056         {0x65, 0, 0, 0, 0},
9057         {0x66, 0, 0, 0, 0},
9058         {0x67, 0, 0, 0, 0},
9059         {0x68, 0x40, 0x40, 0, 0},
9060         {0x69, 0, 0, 0, 0},
9061         {0x6A, 0, 0, 0, 0},
9062         {0x6B, 0, 0, 0, 0},
9063         {0x6C, 0, 0, 0, 0},
9064         {0x6D, 0x1, 0x1, 0, 0},
9065         {0x6E, 0, 0, 0, 0},
9066         {0x6F, 0, 0, 0, 0},
9067         {0x70, 0x60, 0x60, 0, 0},
9068         {0x71, 0x66, 0x66, 0, 0},
9069         {0x72, 0xc, 0xc, 0, 0},
9070         {0x73, 0x66, 0x66, 0, 0},
9071         {0x74, 0x8f, 0x8f, 1, 1},
9072         {0x75, 0, 0, 0, 0},
9073         {0x76, 0xcc, 0xcc, 0, 0},
9074         {0x77, 0x1, 0x1, 0, 0},
9075         {0x78, 0x66, 0x66, 0, 0},
9076         {0x79, 0x66, 0x66, 0, 0},
9077         {0x7A, 0, 0, 0, 0},
9078         {0x7B, 0, 0, 0, 0},
9079         {0x7C, 0, 0, 0, 0},
9080         {0x7D, 0, 0, 0, 0},
9081         {0x7E, 0, 0, 0, 0},
9082         {0x7F, 0, 0, 0, 0},
9083         {0x80, 0, 0, 0, 0},
9084         {0x81, 0, 0, 0, 0},
9085         {0x82, 0, 0, 0, 0},
9086         {0x83, 0, 0, 0, 0},
9087         {0x84, 0, 0, 0, 0},
9088         {0x85, 0xff, 0xff, 0, 0},
9089         {0x86, 0, 0, 0, 0},
9090         {0x87, 0, 0, 0, 0},
9091         {0x88, 0, 0, 0, 0},
9092         {0x89, 0, 0, 0, 0},
9093         {0x8A, 0, 0, 0, 0},
9094         {0x8B, 0, 0, 0, 0},
9095         {0x8C, 0, 0, 0, 0},
9096         {0x8D, 0, 0, 0, 0},
9097         {0x8E, 0, 0, 0, 0},
9098         {0x8F, 0, 0, 0, 0},
9099         {0x90, 0, 0, 0, 0},
9100         {0x91, 0, 0, 0, 0},
9101         {0x92, 0, 0, 0, 0},
9102         {0x93, 0, 0, 0, 0},
9103         {0x94, 0, 0, 0, 0},
9104         {0x95, 0, 0, 0, 0},
9105         {0x96, 0, 0, 0, 0},
9106         {0x97, 0, 0, 0, 0},
9107         {0x98, 0, 0, 0, 0},
9108         {0x99, 0, 0, 0, 0},
9109         {0x9A, 0, 0, 0, 0},
9110         {0x9B, 0, 0, 0, 0},
9111         {0x9C, 0, 0, 0, 0},
9112         {0x9D, 0, 0, 0, 0},
9113         {0x9E, 0, 0, 0, 0},
9114         {0x9F, 0x6, 0x6, 0, 0},
9115         {0xA0, 0x66, 0x66, 0, 0},
9116         {0xA1, 0x66, 0x66, 0, 0},
9117         {0xA2, 0x66, 0x66, 0, 0},
9118         {0xA3, 0x66, 0x66, 0, 0},
9119         {0xA4, 0x66, 0x66, 0, 0},
9120         {0xA5, 0x66, 0x66, 0, 0},
9121         {0xA6, 0x66, 0x66, 0, 0},
9122         {0xA7, 0x66, 0x66, 0, 0},
9123         {0xA8, 0x66, 0x66, 0, 0},
9124         {0xA9, 0x66, 0x66, 0, 0},
9125         {0xAA, 0x66, 0x66, 0, 0},
9126         {0xAB, 0x66, 0x66, 0, 0},
9127         {0xAC, 0x66, 0x66, 0, 0},
9128         {0xAD, 0x66, 0x66, 0, 0},
9129         {0xAE, 0x66, 0x66, 0, 0},
9130         {0xAF, 0x66, 0x66, 0, 0},
9131         {0xB0, 0x66, 0x66, 0, 0},
9132         {0xB1, 0x66, 0x66, 0, 0},
9133         {0xB2, 0x66, 0x66, 0, 0},
9134         {0xB3, 0xa, 0xa, 0, 0},
9135         {0xB4, 0, 0, 0, 0},
9136         {0xB5, 0, 0, 0, 0},
9137         {0xB6, 0, 0, 0, 0},
9138         {0xFFFF, 0, 0, 0, 0}
9139 };
9140 
9141 static struct radio_regs regs_TX_2056_rev5[] = {
9142         {0x02, 0, 0, 0, 0},
9143         {0x03, 0, 0, 0, 0},
9144         {0x04, 0, 0, 0, 0},
9145         {0x05, 0, 0, 0, 0},
9146         {0x06, 0, 0, 0, 0},
9147         {0x07, 0, 0, 0, 0},
9148         {0x08, 0, 0, 0, 0},
9149         {0x09, 0, 0, 0, 0},
9150         {0x0A, 0, 0, 0, 0},
9151         {0x0B, 0, 0, 0, 0},
9152         {0x0C, 0, 0, 0, 0},
9153         {0x0D, 0, 0, 0, 0},
9154         {0x0E, 0, 0, 0, 0},
9155         {0x0F, 0, 0, 0, 0},
9156         {0x10, 0, 0, 0, 0},
9157         {0x11, 0, 0, 0, 0},
9158         {0x12, 0, 0, 0, 0},
9159         {0x13, 0, 0, 0, 0},
9160         {0x14, 0, 0, 0, 0},
9161         {0x15, 0, 0, 0, 0},
9162         {0x16, 0, 0, 0, 0},
9163         {0x17, 0, 0, 0, 0},
9164         {0x18, 0, 0, 0, 0},
9165         {0x19, 0, 0, 0, 0},
9166         {0x1A, 0, 0, 0, 0},
9167         {0x1B, 0, 0, 0, 0},
9168         {0x1C, 0, 0, 0, 0},
9169         {0x1D, 0, 0, 0, 0},
9170         {0x1E, 0, 0, 0, 0},
9171         {0x1F, 0, 0, 0, 0},
9172         {0x20, 0, 0, 0, 0},
9173         {0x21, 0x88, 0x88, 0, 0},
9174         {0x22, 0x88, 0x88, 0, 0},
9175         {0x23, 0x88, 0x88, 0, 0},
9176         {0x24, 0x88, 0x88, 0, 0},
9177         {0x25, 0xc, 0xc, 0, 0},
9178         {0x26, 0, 0, 0, 0},
9179         {0x27, 0x3, 0x3, 0, 0},
9180         {0x28, 0, 0, 0, 0},
9181         {0x29, 0x3, 0x3, 0, 0},
9182         {0x2A, 0x37, 0x37, 0, 0},
9183         {0x2B, 0x3, 0x3, 0, 0},
9184         {0x2C, 0, 0, 0, 0},
9185         {0x2D, 0, 0, 0, 0},
9186         {0x2E, 0x1, 0x1, 0, 0},
9187         {0x2F, 0x1, 0x1, 0, 0},
9188         {0x30, 0, 0, 0, 0},
9189         {0x31, 0, 0, 0, 0},
9190         {0x32, 0, 0, 0, 0},
9191         {0x33, 0x11, 0x11, 0, 0},
9192         {0x34, 0x11, 0x11, 0, 0},
9193         {0x35, 0, 0, 0, 0},
9194         {0x36, 0, 0, 0, 0},
9195         {0x37, 0x3, 0x3, 0, 0},
9196         {0x38, 0xf, 0xf, 0, 0},
9197         {0x39, 0, 0, 0, 0},
9198         {0x3A, 0x2d, 0x2d, 0, 0},
9199         {0x3B, 0, 0, 0, 0},
9200         {0x3C, 0x6e, 0x6e, 0, 0},
9201         {0x3D, 0xf0, 0xf0, 1, 1},
9202         {0x3E, 0, 0, 0, 0},
9203         {0x3F, 0, 0, 0, 0},
9204         {0x40, 0, 0, 0, 0},
9205         {0x41, 0x3, 0x3, 0, 0},
9206         {0x42, 0x3, 0x3, 0, 0},
9207         {0x43, 0, 0, 0, 0},
9208         {0x44, 0x1e, 0x1e, 0, 0},
9209         {0x45, 0, 0, 0, 0},
9210         {0x46, 0x6e, 0x6e, 0, 0},
9211         {0x47, 0xf0, 0xf0, 1, 1},
9212         {0x48, 0, 0, 0, 0},
9213         {0x49, 0x2, 0x2, 0, 0},
9214         {0x4A, 0xff, 0xff, 1, 1},
9215         {0x4B, 0xc, 0xc, 0, 0},
9216         {0x4C, 0, 0, 0, 0},
9217         {0x4D, 0x38, 0x38, 0, 0},
9218         {0x4E, 0x70, 0x70, 1, 1},
9219         {0x4F, 0x2, 0x2, 0, 0},
9220         {0x50, 0x88, 0x88, 0, 0},
9221         {0x51, 0xc, 0xc, 0, 0},
9222         {0x52, 0, 0, 0, 0},
9223         {0x53, 0x8, 0x8, 0, 0},
9224         {0x54, 0x70, 0x70, 1, 1},
9225         {0x55, 0x2, 0x2, 0, 0},
9226         {0x56, 0xff, 0xff, 1, 1},
9227         {0x57, 0, 0, 0, 0},
9228         {0x58, 0x83, 0x83, 0, 0},
9229         {0x59, 0x77, 0x77, 1, 1},
9230         {0x5A, 0, 0, 0, 0},
9231         {0x5B, 0x2, 0x2, 0, 0},
9232         {0x5C, 0x88, 0x88, 0, 0},
9233         {0x5D, 0, 0, 0, 0},
9234         {0x5E, 0x8, 0x8, 0, 0},
9235         {0x5F, 0x77, 0x77, 1, 1},
9236         {0x60, 0x1, 0x1, 0, 0},
9237         {0x61, 0, 0, 0, 0},
9238         {0x62, 0x7, 0x7, 0, 0},
9239         {0x63, 0, 0, 0, 0},
9240         {0x64, 0x7, 0x7, 0, 0},
9241         {0x65, 0, 0, 0, 0},
9242         {0x66, 0, 0, 0, 0},
9243         {0x67, 0, 0, 1, 1},
9244         {0x68, 0, 0, 0, 0},
9245         {0x69, 0xa, 0xa, 0, 0},
9246         {0x6A, 0, 0, 0, 0},
9247         {0x6B, 0, 0, 0, 0},
9248         {0x6C, 0, 0, 0, 0},
9249         {0x6D, 0, 0, 0, 0},
9250         {0x6E, 0, 0, 0, 0},
9251         {0x6F, 0, 0, 0, 0},
9252         {0x70, 0, 0, 0, 0},
9253         {0x71, 0x2, 0x2, 0, 0},
9254         {0x72, 0, 0, 0, 0},
9255         {0x73, 0, 0, 0, 0},
9256         {0x74, 0xe, 0xe, 0, 0},
9257         {0x75, 0xe, 0xe, 0, 0},
9258         {0x76, 0xe, 0xe, 0, 0},
9259         {0x77, 0x13, 0x13, 0, 0},
9260         {0x78, 0x13, 0x13, 0, 0},
9261         {0x79, 0x1b, 0x1b, 0, 0},
9262         {0x7A, 0x1b, 0x1b, 0, 0},
9263         {0x7B, 0x55, 0x55, 0, 0},
9264         {0x7C, 0x5b, 0x5b, 0, 0},
9265         {0x7D, 0, 0, 0, 0},
9266         {0x7E, 0, 0, 0, 0},
9267         {0x7F, 0, 0, 0, 0},
9268         {0x80, 0, 0, 0, 0},
9269         {0x81, 0, 0, 0, 0},
9270         {0x82, 0, 0, 0, 0},
9271         {0x83, 0, 0, 0, 0},
9272         {0x84, 0, 0, 0, 0},
9273         {0x85, 0, 0, 0, 0},
9274         {0x86, 0, 0, 0, 0},
9275         {0x87, 0, 0, 0, 0},
9276         {0x88, 0, 0, 0, 0},
9277         {0x89, 0, 0, 0, 0},
9278         {0x8A, 0, 0, 0, 0},
9279         {0x8B, 0, 0, 0, 0},
9280         {0x8C, 0, 0, 0, 0},
9281         {0x8D, 0, 0, 0, 0},
9282         {0x8E, 0, 0, 0, 0},
9283         {0x8F, 0, 0, 0, 0},
9284         {0x90, 0, 0, 0, 0},
9285         {0x91, 0, 0, 0, 0},
9286         {0x92, 0, 0, 0, 0},
9287         {0x93, 0x70, 0x70, 0, 0},
9288         {0x94, 0x70, 0x70, 0, 0},
9289         {0x95, 0x71, 0x71, 1, 1},
9290         {0x96, 0x71, 0x71, 1, 1},
9291         {0x97, 0x72, 0x72, 1, 1},
9292         {0x98, 0x73, 0x73, 1, 1},
9293         {0x99, 0x74, 0x74, 1, 1},
9294         {0x9A, 0x75, 0x75, 1, 1},
9295         {0xFFFF, 0, 0, 0, 0}
9296 };
9297 
9298 static struct radio_regs regs_RX_2056_rev5[] = {
9299         {0x02, 0, 0, 0, 0},
9300         {0x03, 0, 0, 0, 0},
9301         {0x04, 0, 0, 0, 0},
9302         {0x05, 0, 0, 0, 0},
9303         {0x06, 0, 0, 0, 0},
9304         {0x07, 0, 0, 0, 0},
9305         {0x08, 0, 0, 0, 0},
9306         {0x09, 0, 0, 0, 0},
9307         {0x0A, 0, 0, 0, 0},
9308         {0x0B, 0, 0, 0, 0},
9309         {0x0C, 0, 0, 0, 0},
9310         {0x0D, 0, 0, 0, 0},
9311         {0x0E, 0, 0, 0, 0},
9312         {0x0F, 0, 0, 0, 0},
9313         {0x10, 0, 0, 0, 0},
9314         {0x11, 0, 0, 0, 0},
9315         {0x12, 0, 0, 0, 0},
9316         {0x13, 0, 0, 0, 0},
9317         {0x14, 0, 0, 0, 0},
9318         {0x15, 0, 0, 0, 0},
9319         {0x16, 0, 0, 0, 0},
9320         {0x17, 0, 0, 0, 0},
9321         {0x18, 0, 0, 0, 0},
9322         {0x19, 0, 0, 0, 0},
9323         {0x1A, 0, 0, 0, 0},
9324         {0x1B, 0, 0, 0, 0},
9325         {0x1C, 0, 0, 0, 0},
9326         {0x1D, 0, 0, 0, 0},
9327         {0x1E, 0, 0, 0, 0},
9328         {0x1F, 0, 0, 0, 0},
9329         {0x20, 0x3, 0x3, 0, 0},
9330         {0x21, 0, 0, 0, 0},
9331         {0x22, 0, 0, 0, 0},
9332         {0x23, 0x90, 0x90, 0, 0},
9333         {0x24, 0x55, 0x55, 0, 0},
9334         {0x25, 0x15, 0x15, 0, 0},
9335         {0x26, 0x5, 0x5, 0, 0},
9336         {0x27, 0x15, 0x15, 0, 0},
9337         {0x28, 0x5, 0x5, 0, 0},
9338         {0x29, 0x20, 0x20, 0, 0},
9339         {0x2A, 0x11, 0x11, 0, 0},
9340         {0x2B, 0x90, 0x90, 0, 0},
9341         {0x2C, 0, 0, 0, 0},
9342         {0x2D, 0x88, 0x88, 0, 0},
9343         {0x2E, 0x32, 0x32, 0, 0},
9344         {0x2F, 0x77, 0x77, 0, 0},
9345         {0x30, 0x17, 0x17, 1, 1},
9346         {0x31, 0xff, 0xff, 1, 1},
9347         {0x32, 0x20, 0x20, 0, 0},
9348         {0x33, 0, 0, 0, 0},
9349         {0x34, 0x88, 0x88, 0, 0},
9350         {0x35, 0x32, 0x32, 0, 0},
9351         {0x36, 0x77, 0x77, 0, 0},
9352         {0x37, 0x17, 0x17, 1, 1},
9353         {0x38, 0xf0, 0xf0, 1, 1},
9354         {0x39, 0x20, 0x20, 0, 0},
9355         {0x3A, 0x8, 0x8, 0, 0},
9356         {0x3B, 0x55, 0x55, 1, 1},
9357         {0x3C, 0, 0, 0, 0},
9358         {0x3D, 0x88, 0x88, 1, 1},
9359         {0x3E, 0, 0, 0, 0},
9360         {0x3F, 0, 0, 1, 1},
9361         {0x40, 0x7, 0x7, 1, 1},
9362         {0x41, 0x6, 0x6, 0, 0},
9363         {0x42, 0x4, 0x4, 0, 0},
9364         {0x43, 0, 0, 0, 0},
9365         {0x44, 0x8, 0x8, 0, 0},
9366         {0x45, 0x55, 0x55, 1, 1},
9367         {0x46, 0, 0, 0, 0},
9368         {0x47, 0x11, 0x11, 0, 0},
9369         {0x48, 0, 0, 0, 0},
9370         {0x49, 0, 0, 1, 1},
9371         {0x4A, 0x7, 0x7, 0, 0},
9372         {0x4B, 0x6, 0x6, 0, 0},
9373         {0x4C, 0x4, 0x4, 0, 0},
9374         {0x4D, 0, 0, 0, 0},
9375         {0x4E, 0, 0, 0, 0},
9376         {0x4F, 0x26, 0x26, 1, 1},
9377         {0x50, 0x26, 0x26, 1, 1},
9378         {0x51, 0xf, 0xf, 1, 1},
9379         {0x52, 0xf, 0xf, 1, 1},
9380         {0x53, 0x44, 0x44, 0, 0},
9381         {0x54, 0, 0, 0, 0},
9382         {0x55, 0, 0, 0, 0},
9383         {0x56, 0x8, 0x8, 0, 0},
9384         {0x57, 0x8, 0x8, 0, 0},
9385         {0x58, 0x7, 0x7, 0, 0},
9386         {0x59, 0x22, 0x22, 0, 0},
9387         {0x5A, 0x22, 0x22, 0, 0},
9388         {0x5B, 0x2, 0x2, 0, 0},
9389         {0x5C, 0x4, 0x4, 1, 1},
9390         {0x5D, 0x7, 0x7, 0, 0},
9391         {0x5E, 0x55, 0x55, 0, 0},
9392         {0x5F, 0x23, 0x23, 0, 0},
9393         {0x60, 0x41, 0x41, 0, 0},
9394         {0x61, 0x1, 0x1, 0, 0},
9395         {0x62, 0xa, 0xa, 0, 0},
9396         {0x63, 0, 0, 0, 0},
9397         {0x64, 0, 0, 0, 0},
9398         {0x65, 0, 0, 0, 0},
9399         {0x66, 0, 0, 0, 0},
9400         {0x67, 0, 0, 0, 0},
9401         {0x68, 0, 0, 0, 0},
9402         {0x69, 0, 0, 0, 0},
9403         {0x6A, 0, 0, 0, 0},
9404         {0x6B, 0xc, 0xc, 0, 0},
9405         {0x6C, 0, 0, 0, 0},
9406         {0x6D, 0, 0, 0, 0},
9407         {0x6E, 0, 0, 0, 0},
9408         {0x6F, 0, 0, 0, 0},
9409         {0x70, 0, 0, 0, 0},
9410         {0x71, 0, 0, 0, 0},
9411         {0x72, 0x22, 0x22, 0, 0},
9412         {0x73, 0x22, 0x22, 0, 0},
9413         {0x74, 0, 0, 1, 1},
9414         {0x75, 0xa, 0xa, 0, 0},
9415         {0x76, 0x1, 0x1, 0, 0},
9416         {0x77, 0x22, 0x22, 0, 0},
9417         {0x78, 0x30, 0x30, 0, 0},
9418         {0x79, 0, 0, 0, 0},
9419         {0x7A, 0, 0, 0, 0},
9420         {0x7B, 0, 0, 0, 0},
9421         {0x7C, 0, 0, 0, 0},
9422         {0x7D, 0, 0, 0, 0},
9423         {0x7E, 0, 0, 0, 0},
9424         {0x7F, 0, 0, 0, 0},
9425         {0x80, 0, 0, 0, 0},
9426         {0x81, 0, 0, 0, 0},
9427         {0x82, 0, 0, 0, 0},
9428         {0x83, 0, 0, 0, 0},
9429         {0x84, 0, 0, 0, 0},
9430         {0x85, 0, 0, 0, 0},
9431         {0x86, 0, 0, 0, 0},
9432         {0x87, 0, 0, 0, 0},
9433         {0x88, 0, 0, 0, 0},
9434         {0x89, 0, 0, 0, 0},
9435         {0x8A, 0, 0, 0, 0},
9436         {0x8B, 0, 0, 0, 0},
9437         {0x8C, 0, 0, 0, 0},
9438         {0x8D, 0, 0, 0, 0},
9439         {0x8E, 0, 0, 0, 0},
9440         {0x8F, 0, 0, 0, 0},
9441         {0x90, 0, 0, 0, 0},
9442         {0x91, 0, 0, 0, 0},
9443         {0x92, 0, 0, 0, 0},
9444         {0x93, 0, 0, 0, 0},
9445         {0x94, 0, 0, 0, 0},
9446         {0xFFFF, 0, 0, 0, 0}
9447 };
9448 
9449 static struct radio_regs regs_SYN_2056_rev6[] = {
9450         {0x02, 0, 0, 0, 0},
9451         {0x03, 0, 0, 0, 0},
9452         {0x04, 0, 0, 0, 0},
9453         {0x05, 0, 0, 0, 0},
9454         {0x06, 0, 0, 0, 0},
9455         {0x07, 0, 0, 0, 0},
9456         {0x08, 0, 0, 0, 0},
9457         {0x09, 0x1, 0x1, 0, 0},
9458         {0x0A, 0, 0, 0, 0},
9459         {0x0B, 0, 0, 0, 0},
9460         {0x0C, 0, 0, 0, 0},
9461         {0x0D, 0, 0, 0, 0},
9462         {0x0E, 0, 0, 0, 0},
9463         {0x0F, 0, 0, 0, 0},
9464         {0x10, 0, 0, 0, 0},
9465         {0x11, 0, 0, 0, 0},
9466         {0x12, 0, 0, 0, 0},
9467         {0x13, 0, 0, 0, 0},
9468         {0x14, 0, 0, 0, 0},
9469         {0x15, 0, 0, 0, 0},
9470         {0x16, 0, 0, 0, 0},
9471         {0x17, 0, 0, 0, 0},
9472         {0x18, 0, 0, 0, 0},
9473         {0x19, 0, 0, 0, 0},
9474         {0x1A, 0, 0, 0, 0},
9475         {0x1B, 0, 0, 0, 0},
9476         {0x1C, 0, 0, 0, 0},
9477         {0x1D, 0, 0, 0, 0},
9478         {0x1E, 0, 0, 0, 0},
9479         {0x1F, 0, 0, 0, 0},
9480         {0x20, 0, 0, 0, 0},
9481         {0x21, 0, 0, 0, 0},
9482         {0x22, 0x60, 0x60, 0, 0},
9483         {0x23, 0x6, 0x6, 0, 0},
9484         {0x24, 0xc, 0xc, 0, 0},
9485         {0x25, 0, 0, 0, 0},
9486         {0x26, 0, 0, 0, 0},
9487         {0x27, 0, 0, 0, 0},
9488         {0x28, 0x1, 0x1, 0, 0},
9489         {0x29, 0, 0, 0, 0},
9490         {0x2A, 0, 0, 0, 0},
9491         {0x2B, 0, 0, 0, 0},
9492         {0x2C, 0, 0, 0, 0},
9493         {0x2D, 0, 0, 0, 0},
9494         {0x2E, 0, 0, 0, 0},
9495         {0x2F, 0x1f, 0x1f, 0, 0},
9496         {0x30, 0x15, 0x15, 0, 0},
9497         {0x31, 0xf, 0xf, 0, 0},
9498         {0x32, 0, 0, 0, 0},
9499         {0x33, 0, 0, 0, 0},
9500         {0x34, 0, 0, 0, 0},
9501         {0x35, 0, 0, 0, 0},
9502         {0x36, 0, 0, 0, 0},
9503         {0x37, 0, 0, 0, 0},
9504         {0x38, 0, 0, 0, 0},
9505         {0x39, 0, 0, 0, 0},
9506         {0x3A, 0, 0, 0, 0},
9507         {0x3B, 0, 0, 0, 0},
9508         {0x3C, 0x13, 0x13, 0, 0},
9509         {0x3D, 0xf, 0xf, 0, 0},
9510         {0x3E, 0x18, 0x18, 0, 0},
9511         {0x3F, 0, 0, 0, 0},
9512         {0x40, 0, 0, 0, 0},
9513         {0x41, 0x20, 0x20, 0, 0},
9514         {0x42, 0x20, 0x20, 0, 0},
9515         {0x43, 0, 0, 0, 0},
9516         {0x44, 0x77, 0x77, 0, 0},
9517         {0x45, 0x7, 0x7, 0, 0},
9518         {0x46, 0x1, 0x1, 0, 0},
9519         {0x47, 0x4, 0x4, 0, 0},
9520         {0x48, 0xf, 0xf, 0, 0},
9521         {0x49, 0x30, 0x30, 0, 0},
9522         {0x4A, 0x32, 0x32, 0, 0},
9523         {0x4B, 0xd, 0xd, 0, 0},
9524         {0x4C, 0xd, 0xd, 0, 0},
9525         {0x4D, 0x4, 0x4, 0, 0},
9526         {0x4E, 0x6, 0x6, 0, 0},
9527         {0x4F, 0x1, 0x1, 0, 0},
9528         {0x50, 0x1c, 0x1c, 0, 0},
9529         {0x51, 0x2, 0x2, 0, 0},
9530         {0x52, 0x2, 0x2, 0, 0},
9531         {0x53, 0xf7, 0xf7, 1, 1},
9532         {0x54, 0xb4, 0xb4, 0, 0},
9533         {0x55, 0xd2, 0xd2, 0, 0},
9534         {0x56, 0, 0, 0, 0},
9535         {0x57, 0, 0, 0, 0},
9536         {0x58, 0x4, 0x4, 0, 0},
9537         {0x59, 0x96, 0x96, 0, 0},
9538         {0x5A, 0x3e, 0x3e, 0, 0},
9539         {0x5B, 0x3e, 0x3e, 0, 0},
9540         {0x5C, 0x13, 0x13, 0, 0},
9541         {0x5D, 0x2, 0x2, 0, 0},
9542         {0x5E, 0, 0, 0, 0},
9543         {0x5F, 0x7, 0x7, 0, 0},
9544         {0x60, 0x7, 0x7, 1, 1},
9545         {0x61, 0x8, 0x8, 0, 0},
9546         {0x62, 0x3, 0x3, 0, 0},
9547         {0x63, 0, 0, 0, 0},
9548         {0x64, 0, 0, 0, 0},
9549         {0x65, 0, 0, 0, 0},
9550         {0x66, 0, 0, 0, 0},
9551         {0x67, 0, 0, 0, 0},
9552         {0x68, 0x40, 0x40, 0, 0},
9553         {0x69, 0, 0, 0, 0},
9554         {0x6A, 0, 0, 0, 0},
9555         {0x6B, 0, 0, 0, 0},
9556         {0x6C, 0, 0, 0, 0},
9557         {0x6D, 0x1, 0x1, 0, 0},
9558         {0x6E, 0, 0, 0, 0},
9559         {0x6F, 0, 0, 0, 0},
9560         {0x70, 0x60, 0x60, 0, 0},
9561         {0x71, 0x66, 0x66, 0, 0},
9562         {0x72, 0xc, 0xc, 0, 0},
9563         {0x73, 0x66, 0x66, 0, 0},
9564         {0x74, 0x8f, 0x8f, 1, 1},
9565         {0x75, 0, 0, 0, 0},
9566         {0x76, 0xcc, 0xcc, 0, 0},
9567         {0x77, 0x1, 0x1, 0, 0},
9568         {0x78, 0x66, 0x66, 0, 0},
9569         {0x79, 0x66, 0x66, 0, 0},
9570         {0x7A, 0, 0, 0, 0},
9571         {0x7B, 0, 0, 0, 0},
9572         {0x7C, 0, 0, 0, 0},
9573         {0x7D, 0, 0, 0, 0},
9574         {0x7E, 0, 0, 0, 0},
9575         {0x7F, 0, 0, 0, 0},
9576         {0x80, 0, 0, 0, 0},
9577         {0x81, 0, 0, 0, 0},
9578         {0x82, 0, 0, 0, 0},
9579         {0x83, 0, 0, 0, 0},
9580         {0x84, 0, 0, 0, 0},
9581         {0x85, 0xff, 0xff, 0, 0},
9582         {0x86, 0, 0, 0, 0},
9583         {0x87, 0, 0, 0, 0},
9584         {0x88, 0, 0, 0, 0},
9585         {0x89, 0, 0, 0, 0},
9586         {0x8A, 0, 0, 0, 0},
9587         {0x8B, 0, 0, 0, 0},
9588         {0x8C, 0, 0, 0, 0},
9589         {0x8D, 0, 0, 0, 0},
9590         {0x8E, 0, 0, 0, 0},
9591         {0x8F, 0, 0, 0, 0},
9592         {0x90, 0, 0, 0, 0},
9593         {0x91, 0, 0, 0, 0},
9594         {0x92, 0, 0, 0, 0},
9595         {0x93, 0, 0, 0, 0},
9596         {0x94, 0, 0, 0, 0},
9597         {0x95, 0, 0, 0, 0},
9598         {0x96, 0, 0, 0, 0},
9599         {0x97, 0, 0, 0, 0},
9600         {0x98, 0, 0, 0, 0},
9601         {0x99, 0, 0, 0, 0},
9602         {0x9A, 0, 0, 0, 0},
9603         {0x9B, 0, 0, 0, 0},
9604         {0x9C, 0, 0, 0, 0},
9605         {0x9D, 0, 0, 0, 0},
9606         {0x9E, 0, 0, 0, 0},
9607         {0x9F, 0x6, 0x6, 0, 0},
9608         {0xA0, 0x66, 0x66, 0, 0},
9609         {0xA1, 0x66, 0x66, 0, 0},
9610         {0xA2, 0x66, 0x66, 0, 0},
9611         {0xA3, 0x66, 0x66, 0, 0},
9612         {0xA4, 0x66, 0x66, 0, 0},
9613         {0xA5, 0x66, 0x66, 0, 0},
9614         {0xA6, 0x66, 0x66, 0, 0},
9615         {0xA7, 0x66, 0x66, 0, 0},
9616         {0xA8, 0x66, 0x66, 0, 0},
9617         {0xA9, 0x66, 0x66, 0, 0},
9618         {0xAA, 0x66, 0x66, 0, 0},
9619         {0xAB, 0x66, 0x66, 0, 0},
9620         {0xAC, 0x66, 0x66, 0, 0},
9621         {0xAD, 0x66, 0x66, 0, 0},
9622         {0xAE, 0x66, 0x66, 0, 0},
9623         {0xAF, 0x66, 0x66, 0, 0},
9624         {0xB0, 0x66, 0x66, 0, 0},
9625         {0xB1, 0x66, 0x66, 0, 0},
9626         {0xB2, 0x66, 0x66, 0, 0},
9627         {0xB3, 0xa, 0xa, 0, 0},
9628         {0xB4, 0, 0, 0, 0},
9629         {0xB5, 0, 0, 0, 0},
9630         {0xB6, 0, 0, 0, 0},
9631         {0xFFFF, 0, 0, 0, 0}
9632 };
9633 
9634 static struct radio_regs regs_TX_2056_rev6[] = {
9635         {0x02, 0, 0, 0, 0},
9636         {0x03, 0, 0, 0, 0},
9637         {0x04, 0, 0, 0, 0},
9638         {0x05, 0, 0, 0, 0},
9639         {0x06, 0, 0, 0, 0},
9640         {0x07, 0, 0, 0, 0},
9641         {0x08, 0, 0, 0, 0},
9642         {0x09, 0, 0, 0, 0},
9643         {0x0A, 0, 0, 0, 0},
9644         {0x0B, 0, 0, 0, 0},
9645         {0x0C, 0, 0, 0, 0},
9646         {0x0D, 0, 0, 0, 0},
9647         {0x0E, 0, 0, 0, 0},
9648         {0x0F, 0, 0, 0, 0},
9649         {0x10, 0, 0, 0, 0},
9650         {0x11, 0, 0, 0, 0},
9651         {0x12, 0, 0, 0, 0},
9652         {0x13, 0, 0, 0, 0},
9653         {0x14, 0, 0, 0, 0},
9654         {0x15, 0, 0, 0, 0},
9655         {0x16, 0, 0, 0, 0},
9656         {0x17, 0, 0, 0, 0},
9657         {0x18, 0, 0, 0, 0},
9658         {0x19, 0, 0, 0, 0},
9659         {0x1A, 0, 0, 0, 0},
9660         {0x1B, 0, 0, 0, 0},
9661         {0x1C, 0, 0, 0, 0},
9662         {0x1D, 0, 0, 0, 0},
9663         {0x1E, 0, 0, 0, 0},
9664         {0x1F, 0, 0, 0, 0},
9665         {0x20, 0, 0, 0, 0},
9666         {0x21, 0x88, 0x88, 0, 0},
9667         {0x22, 0x88, 0x88, 0, 0},
9668         {0x23, 0x88, 0x88, 0, 0},
9669         {0x24, 0x88, 0x88, 0, 0},
9670         {0x25, 0xc, 0xc, 0, 0},
9671         {0x26, 0, 0, 0, 0},
9672         {0x27, 0x3, 0x3, 0, 0},
9673         {0x28, 0, 0, 0, 0},
9674         {0x29, 0x3, 0x3, 0, 0},
9675         {0x2A, 0x37, 0x37, 0, 0},
9676         {0x2B, 0x3, 0x3, 0, 0},
9677         {0x2C, 0, 0, 0, 0},
9678         {0x2D, 0, 0, 0, 0},
9679         {0x2E, 0x1, 0x1, 0, 0},
9680         {0x2F, 0x1, 0x1, 0, 0},
9681         {0x30, 0, 0, 0, 0},
9682         {0x31, 0, 0, 0, 0},
9683         {0x32, 0, 0, 0, 0},
9684         {0x33, 0x11, 0x11, 0, 0},
9685         {0x34, 0xee, 0xee, 1, 1},
9686         {0x35, 0, 0, 0, 0},
9687         {0x36, 0, 0, 0, 0},
9688         {0x37, 0x3, 0x3, 0, 0},
9689         {0x38, 0x50, 0x50, 1, 1},
9690         {0x39, 0, 0, 0, 0},
9691         {0x3A, 0x50, 0x50, 1, 1},
9692         {0x3B, 0, 0, 0, 0},
9693         {0x3C, 0x6e, 0x6e, 0, 0},
9694         {0x3D, 0xf0, 0xf0, 1, 1},
9695         {0x3E, 0, 0, 0, 0},
9696         {0x3F, 0, 0, 0, 0},
9697         {0x40, 0, 0, 0, 0},
9698         {0x41, 0x3, 0x3, 0, 0},
9699         {0x42, 0x3, 0x3, 0, 0},
9700         {0x43, 0, 0, 0, 0},
9701         {0x44, 0x1e, 0x1e, 0, 0},
9702         {0x45, 0, 0, 0, 0},
9703         {0x46, 0x6e, 0x6e, 0, 0},
9704         {0x47, 0xf0, 0xf0, 1, 1},
9705         {0x48, 0, 0, 0, 0},
9706         {0x49, 0x2, 0x2, 0, 0},
9707         {0x4A, 0xff, 0xff, 1, 1},
9708         {0x4B, 0xc, 0xc, 0, 0},
9709         {0x4C, 0, 0, 0, 0},
9710         {0x4D, 0x38, 0x38, 0, 0},
9711         {0x4E, 0x70, 0x70, 1, 1},
9712         {0x4F, 0x2, 0x2, 0, 0},
9713         {0x50, 0x88, 0x88, 0, 0},
9714         {0x51, 0xc, 0xc, 0, 0},
9715         {0x52, 0, 0, 0, 0},
9716         {0x53, 0x8, 0x8, 0, 0},
9717         {0x54, 0x70, 0x70, 1, 1},
9718         {0x55, 0x2, 0x2, 0, 0},
9719         {0x56, 0xff, 0xff, 1, 1},
9720         {0x57, 0, 0, 0, 0},
9721         {0x58, 0x83, 0x83, 0, 0},
9722         {0x59, 0x77, 0x77, 1, 1},
9723         {0x5A, 0, 0, 0, 0},
9724         {0x5B, 0x2, 0x2, 0, 0},
9725         {0x5C, 0x88, 0x88, 0, 0},
9726         {0x5D, 0, 0, 0, 0},
9727         {0x5E, 0x8, 0x8, 0, 0},
9728         {0x5F, 0x77, 0x77, 1, 1},
9729         {0x60, 0x1, 0x1, 0, 0},
9730         {0x61, 0, 0, 0, 0},
9731         {0x62, 0x7, 0x7, 0, 0},
9732         {0x63, 0, 0, 0, 0},
9733         {0x64, 0x7, 0x7, 0, 0},
9734         {0x65, 0, 0, 0, 0},
9735         {0x66, 0, 0, 0, 0},
9736         {0x67, 0, 0, 1, 1},
9737         {0x68, 0, 0, 0, 0},
9738         {0x69, 0xa, 0xa, 0, 0},
9739         {0x6A, 0, 0, 0, 0},
9740         {0x6B, 0, 0, 0, 0},
9741         {0x6C, 0, 0, 0, 0},
9742         {0x6D, 0, 0, 0, 0},
9743         {0x6E, 0, 0, 0, 0},
9744         {0x6F, 0, 0, 0, 0},
9745         {0x70, 0, 0, 0, 0},
9746         {0x71, 0x2, 0x2, 0, 0},
9747         {0x72, 0, 0, 0, 0},
9748         {0x73, 0, 0, 0, 0},
9749         {0x74, 0xe, 0xe, 0, 0},
9750         {0x75, 0xe, 0xe, 0, 0},
9751         {0x76, 0xe, 0xe, 0, 0},
9752         {0x77, 0x13, 0x13, 0, 0},
9753         {0x78, 0x13, 0x13, 0, 0},
9754         {0x79, 0x1b, 0x1b, 0, 0},
9755         {0x7A, 0x1b, 0x1b, 0, 0},
9756         {0x7B, 0x55, 0x55, 0, 0},
9757         {0x7C, 0x5b, 0x5b, 0, 0},
9758         {0x7D, 0x30, 0x30, 1, 1},
9759         {0x7E, 0, 0, 0, 0},
9760         {0x7F, 0, 0, 0, 0},
9761         {0x80, 0, 0, 0, 0},
9762         {0x81, 0, 0, 0, 0},
9763         {0x82, 0, 0, 0, 0},
9764         {0x83, 0, 0, 0, 0},
9765         {0x84, 0, 0, 0, 0},
9766         {0x85, 0, 0, 0, 0},
9767         {0x86, 0, 0, 0, 0},
9768         {0x87, 0, 0, 0, 0},
9769         {0x88, 0, 0, 0, 0},
9770         {0x89, 0, 0, 0, 0},
9771         {0x8A, 0, 0, 0, 0},
9772         {0x8B, 0, 0, 0, 0},
9773         {0x8C, 0, 0, 0, 0},
9774         {0x8D, 0, 0, 0, 0},
9775         {0x8E, 0, 0, 0, 0},
9776         {0x8F, 0, 0, 0, 0},
9777         {0x90, 0, 0, 0, 0},
9778         {0x91, 0, 0, 0, 0},
9779         {0x92, 0, 0, 0, 0},
9780         {0x93, 0x70, 0x70, 0, 0},
9781         {0x94, 0x70, 0x70, 0, 0},
9782         {0x95, 0x70, 0x70, 0, 0},
9783         {0x96, 0x70, 0x70, 0, 0},
9784         {0x97, 0x70, 0x70, 0, 0},
9785         {0x98, 0x70, 0x70, 0, 0},
9786         {0x99, 0x70, 0x70, 0, 0},
9787         {0x9A, 0x70, 0x70, 0, 0},
9788         {0xFFFF, 0, 0, 0, 0}
9789 };
9790 
9791 static struct radio_regs regs_RX_2056_rev6[] = {
9792         {0x02, 0, 0, 0, 0},
9793         {0x03, 0, 0, 0, 0},
9794         {0x04, 0, 0, 0, 0},
9795         {0x05, 0, 0, 0, 0},
9796         {0x06, 0, 0, 0, 0},
9797         {0x07, 0, 0, 0, 0},
9798         {0x08, 0, 0, 0, 0},
9799         {0x09, 0, 0, 0, 0},
9800         {0x0A, 0, 0, 0, 0},
9801         {0x0B, 0, 0, 0, 0},
9802         {0x0C, 0, 0, 0, 0},
9803         {0x0D, 0, 0, 0, 0},
9804         {0x0E, 0, 0, 0, 0},
9805         {0x0F, 0, 0, 0, 0},
9806         {0x10, 0, 0, 0, 0},
9807         {0x11, 0, 0, 0, 0},
9808         {0x12, 0, 0, 0, 0},
9809         {0x13, 0, 0, 0, 0},
9810         {0x14, 0, 0, 0, 0},
9811         {0x15, 0, 0, 0, 0},
9812         {0x16, 0, 0, 0, 0},
9813         {0x17, 0, 0, 0, 0},
9814         {0x18, 0, 0, 0, 0},
9815         {0x19, 0, 0, 0, 0},
9816         {0x1A, 0, 0, 0, 0},
9817         {0x1B, 0, 0, 0, 0},
9818         {0x1C, 0, 0, 0, 0},
9819         {0x1D, 0, 0, 0, 0},
9820         {0x1E, 0, 0, 0, 0},
9821         {0x1F, 0, 0, 0, 0},
9822         {0x20, 0x3, 0x3, 0, 0},
9823         {0x21, 0, 0, 0, 0},
9824         {0x22, 0, 0, 0, 0},
9825         {0x23, 0x90, 0x90, 0, 0},
9826         {0x24, 0x55, 0x55, 0, 0},
9827         {0x25, 0x15, 0x15, 0, 0},
9828         {0x26, 0x5, 0x5, 0, 0},
9829         {0x27, 0x15, 0x15, 0, 0},
9830         {0x28, 0x5, 0x5, 0, 0},
9831         {0x29, 0x20, 0x20, 0, 0},
9832         {0x2A, 0x11, 0x11, 0, 0},
9833         {0x2B, 0x90, 0x90, 0, 0},
9834         {0x2C, 0, 0, 0, 0},
9835         {0x2D, 0x88, 0x88, 0, 0},
9836         {0x2E, 0x32, 0x32, 0, 0},
9837         {0x2F, 0x77, 0x77, 0, 0},
9838         {0x30, 0x17, 0x17, 1, 1},
9839         {0x31, 0xff, 0xff, 1, 1},
9840         {0x32, 0x20, 0x20, 0, 0},
9841         {0x33, 0, 0, 0, 0},
9842         {0x34, 0x88, 0x88, 0, 0},
9843         {0x35, 0x32, 0x32, 0, 0},
9844         {0x36, 0x77, 0x77, 0, 0},
9845         {0x37, 0x17, 0x17, 1, 1},
9846         {0x38, 0xf0, 0xf0, 1, 1},
9847         {0x39, 0x20, 0x20, 0, 0},
9848         {0x3A, 0x8, 0x8, 0, 0},
9849         {0x3B, 0x55, 0x55, 1, 1},
9850         {0x3C, 0, 0, 0, 0},
9851         {0x3D, 0x88, 0x88, 1, 1},
9852         {0x3E, 0, 0, 0, 0},
9853         {0x3F, 0x44, 0x44, 0, 0},
9854         {0x40, 0x7, 0x7, 1, 1},
9855         {0x41, 0x6, 0x6, 0, 0},
9856         {0x42, 0x4, 0x4, 0, 0},
9857         {0x43, 0, 0, 0, 0},
9858         {0x44, 0x8, 0x8, 0, 0},
9859         {0x45, 0x55, 0x55, 1, 1},
9860         {0x46, 0, 0, 0, 0},
9861         {0x47, 0x11, 0x11, 0, 0},
9862         {0x48, 0, 0, 0, 0},
9863         {0x49, 0x44, 0x44, 0, 0},
9864         {0x4A, 0x7, 0x7, 0, 0},
9865         {0x4B, 0x6, 0x6, 0, 0},
9866         {0x4C, 0x4, 0x4, 0, 0},
9867         {0x4D, 0, 0, 0, 0},
9868         {0x4E, 0, 0, 0, 0},
9869         {0x4F, 0x26, 0x26, 1, 1},
9870         {0x50, 0x26, 0x26, 1, 1},
9871         {0x51, 0xf, 0xf, 1, 1},
9872         {0x52, 0xf, 0xf, 1, 1},
9873         {0x53, 0x44, 0x44, 0, 0},
9874         {0x54, 0, 0, 0, 0},
9875         {0x55, 0, 0, 0, 0},
9876         {0x56, 0x8, 0x8, 0, 0},
9877         {0x57, 0x8, 0x8, 0, 0},
9878         {0x58, 0x7, 0x7, 0, 0},
9879         {0x59, 0x22, 0x22, 0, 0},
9880         {0x5A, 0x22, 0x22, 0, 0},
9881         {0x5B, 0x2, 0x2, 0, 0},
9882         {0x5C, 0x4, 0x4, 1, 1},
9883         {0x5D, 0x7, 0x7, 0, 0},
9884         {0x5E, 0x55, 0x55, 0, 0},
9885         {0x5F, 0x23, 0x23, 0, 0},
9886         {0x60, 0x41, 0x41, 0, 0},
9887         {0x61, 0x1, 0x1, 0, 0},
9888         {0x62, 0xa, 0xa, 0, 0},
9889         {0x63, 0, 0, 0, 0},
9890         {0x64, 0, 0, 0, 0},
9891         {0x65, 0, 0, 0, 0},
9892         {0x66, 0, 0, 0, 0},
9893         {0x67, 0, 0, 0, 0},
9894         {0x68, 0, 0, 0, 0},
9895         {0x69, 0, 0, 0, 0},
9896         {0x6A, 0, 0, 0, 0},
9897         {0x6B, 0xc, 0xc, 0, 0},
9898         {0x6C, 0, 0, 0, 0},
9899         {0x6D, 0, 0, 0, 0},
9900         {0x6E, 0, 0, 0, 0},
9901         {0x6F, 0, 0, 0, 0},
9902         {0x70, 0, 0, 0, 0},
9903         {0x71, 0, 0, 0, 0},
9904         {0x72, 0x22, 0x22, 0, 0},
9905         {0x73, 0x22, 0x22, 0, 0},
9906         {0x74, 0, 0, 1, 1},
9907         {0x75, 0xa, 0xa, 0, 0},
9908         {0x76, 0x1, 0x1, 0, 0},
9909         {0x77, 0x22, 0x22, 0, 0},
9910         {0x78, 0x30, 0x30, 0, 0},
9911         {0x79, 0, 0, 0, 0},
9912         {0x7A, 0, 0, 0, 0},
9913         {0x7B, 0, 0, 0, 0},
9914         {0x7C, 0, 0, 0, 0},
9915         {0x7D, 0x5, 0x5, 1, 1},
9916         {0x7E, 0, 0, 0, 0},
9917         {0x7F, 0, 0, 0, 0},
9918         {0x80, 0, 0, 0, 0},
9919         {0x81, 0, 0, 0, 0},
9920         {0x82, 0, 0, 0, 0},
9921         {0x83, 0, 0, 0, 0},
9922         {0x84, 0, 0, 0, 0},
9923         {0x85, 0, 0, 0, 0},
9924         {0x86, 0, 0, 0, 0},
9925         {0x87, 0, 0, 0, 0},
9926         {0x88, 0, 0, 0, 0},
9927         {0x89, 0, 0, 0, 0},
9928         {0x8A, 0, 0, 0, 0},
9929         {0x8B, 0, 0, 0, 0},
9930         {0x8C, 0, 0, 0, 0},
9931         {0x8D, 0, 0, 0, 0},
9932         {0x8E, 0, 0, 0, 0},
9933         {0x8F, 0, 0, 0, 0},
9934         {0x90, 0, 0, 0, 0},
9935         {0x91, 0, 0, 0, 0},
9936         {0x92, 0, 0, 0, 0},
9937         {0x93, 0, 0, 0, 0},
9938         {0x94, 0, 0, 0, 0},
9939         {0xFFFF, 0, 0, 0, 0}
9940 };
9941 
9942 static struct radio_regs regs_SYN_2056_rev7[] = {
9943         {0x02, 0, 0, 0, 0},
9944         {0x03, 0, 0, 0, 0},
9945         {0x04, 0, 0, 0, 0},
9946         {0x05, 0, 0, 0, 0},
9947         {0x06, 0, 0, 0, 0},
9948         {0x07, 0, 0, 0, 0},
9949         {0x08, 0, 0, 0, 0},
9950         {0x09, 0x1, 0x1, 0, 0},
9951         {0x0A, 0, 0, 0, 0},
9952         {0x0B, 0, 0, 0, 0},
9953         {0x0C, 0, 0, 0, 0},
9954         {0x0D, 0, 0, 0, 0},
9955         {0x0E, 0, 0, 0, 0},
9956         {0x0F, 0, 0, 0, 0},
9957         {0x10, 0, 0, 0, 0},
9958         {0x11, 0, 0, 0, 0},
9959         {0x12, 0, 0, 0, 0},
9960         {0x13, 0, 0, 0, 0},
9961         {0x14, 0, 0, 0, 0},
9962         {0x15, 0, 0, 0, 0},
9963         {0x16, 0, 0, 0, 0},
9964         {0x17, 0, 0, 0, 0},
9965         {0x18, 0, 0, 0, 0},
9966         {0x19, 0, 0, 0, 0},
9967         {0x1A, 0, 0, 0, 0},
9968         {0x1B, 0, 0, 0, 0},
9969         {0x1C, 0, 0, 0, 0},
9970         {0x1D, 0, 0, 0, 0},
9971         {0x1E, 0, 0, 0, 0},
9972         {0x1F, 0, 0, 0, 0},
9973         {0x20, 0, 0, 0, 0},
9974         {0x21, 0, 0, 0, 0},
9975         {0x22, 0x60, 0x60, 0, 0},
9976         {0x23, 0x6, 0x6, 0, 0},
9977         {0x24, 0xc, 0xc, 0, 0},
9978         {0x25, 0, 0, 0, 0},
9979         {0x26, 0, 0, 0, 0},
9980         {0x27, 0, 0, 0, 0},
9981         {0x28, 0x1, 0x1, 0, 0},
9982         {0x29, 0, 0, 0, 0},
9983         {0x2A, 0, 0, 0, 0},
9984         {0x2B, 0, 0, 0, 0},
9985         {0x2C, 0, 0, 0, 0},
9986         {0x2D, 0, 0, 0, 0},
9987         {0x2E, 0, 0, 0, 0},
9988         {0x2F, 0x1f, 0x1f, 0, 0},
9989         {0x30, 0x15, 0x15, 0, 0},
9990         {0x31, 0xf, 0xf, 0, 0},
9991         {0x32, 0, 0, 0, 0},
9992         {0x33, 0, 0, 0, 0},
9993         {0x34, 0, 0, 0, 0},
9994         {0x35, 0, 0, 0, 0},
9995         {0x36, 0, 0, 0, 0},
9996         {0x37, 0, 0, 0, 0},
9997         {0x38, 0, 0, 0, 0},
9998         {0x39, 0, 0, 0, 0},
9999         {0x3A, 0, 0, 0, 0},
10000         {0x3B, 0, 0, 0, 0},
10001         {0x3C, 0x13, 0x13, 0, 0},
10002         {0x3D, 0xf, 0xf, 0, 0},
10003         {0x3E, 0x18, 0x18, 0, 0},
10004         {0x3F, 0, 0, 0, 0},
10005         {0x40, 0, 0, 0, 0},
10006         {0x41, 0x20, 0x20, 0, 0},
10007         {0x42, 0x20, 0x20, 0, 0},
10008         {0x43, 0, 0, 0, 0},
10009         {0x44, 0x77, 0x77, 0, 0},
10010         {0x45, 0x7, 0x7, 0, 0},
10011         {0x46, 0x1, 0x1, 0, 0},
10012         {0x47, 0x4, 0x4, 0, 0},
10013         {0x48, 0xf, 0xf, 0, 0},
10014         {0x49, 0x30, 0x30, 0, 0},
10015         {0x4A, 0x32, 0x32, 0, 0},
10016         {0x4B, 0xd, 0xd, 0, 0},
10017         {0x4C, 0xd, 0xd, 0, 0},
10018         {0x4D, 0x4, 0x4, 0, 0},
10019         {0x4E, 0x6, 0x6, 0, 0},
10020         {0x4F, 0x1, 0x1, 0, 0},
10021         {0x50, 0x1c, 0x1c, 0, 0},
10022         {0x51, 0x2, 0x2, 0, 0},
10023         {0x52, 0x2, 0x2, 0, 0},
10024         {0x53, 0xf7, 0xf7, 1, 1},
10025         {0x54, 0xb4, 0xb4, 0, 0},
10026         {0x55, 0xd2, 0xd2, 0, 0},
10027         {0x56, 0, 0, 0, 0},
10028         {0x57, 0, 0, 0, 0},
10029         {0x58, 0x4, 0x4, 0, 0},
10030         {0x59, 0x96, 0x96, 0, 0},
10031         {0x5A, 0x3e, 0x3e, 0, 0},
10032         {0x5B, 0x3e, 0x3e, 0, 0},
10033         {0x5C, 0x13, 0x13, 0, 0},
10034         {0x5D, 0x2, 0x2, 0, 0},
10035         {0x5E, 0, 0, 0, 0},
10036         {0x5F, 0x7, 0x7, 0, 0},
10037         {0x60, 0x7, 0x7, 1, 1},
10038         {0x61, 0x8, 0x8, 0, 0},
10039         {0x62, 0x3, 0x3, 0, 0},
10040         {0x63, 0, 0, 0, 0},
10041         {0x64, 0, 0, 0, 0},
10042         {0x65, 0, 0, 0, 0},
10043         {0x66, 0, 0, 0, 0},
10044         {0x67, 0, 0, 0, 0},
10045         {0x68, 0x40, 0x40, 0, 0},
10046         {0x69, 0, 0, 0, 0},
10047         {0x6A, 0, 0, 0, 0},
10048         {0x6B, 0, 0, 0, 0},
10049         {0x6C, 0, 0, 0, 0},
10050         {0x6D, 0x1, 0x1, 0, 0},
10051         {0x6E, 0, 0, 0, 0},
10052         {0x6F, 0, 0, 0, 0},
10053         {0x70, 0x60, 0x60, 0, 0},
10054         {0x71, 0x66, 0x66, 0, 0},
10055         {0x72, 0xc, 0xc, 0, 0},
10056         {0x73, 0x66, 0x66, 0, 0},
10057         {0x74, 0x8f, 0x8f, 1, 1},
10058         {0x75, 0, 0, 0, 0},
10059         {0x76, 0xcc, 0xcc, 0, 0},
10060         {0x77, 0x1, 0x1, 0, 0},
10061         {0x78, 0x66, 0x66, 0, 0},
10062         {0x79, 0x66, 0x66, 0, 0},
10063         {0x7A, 0, 0, 0, 0},
10064         {0x7B, 0, 0, 0, 0},
10065         {0x7C, 0, 0, 0, 0},
10066         {0x7D, 0, 0, 0, 0},
10067         {0x7E, 0, 0, 0, 0},
10068         {0x7F, 0, 0, 0, 0},
10069         {0x80, 0, 0, 0, 0},
10070         {0x81, 0, 0, 0, 0},
10071         {0x82, 0, 0, 0, 0},
10072         {0x83, 0, 0, 0, 0},
10073         {0x84, 0, 0, 0, 0},
10074         {0x85, 0xff, 0xff, 0, 0},
10075         {0x86, 0, 0, 0, 0},
10076         {0x87, 0, 0, 0, 0},
10077         {0x88, 0, 0, 0, 0},
10078         {0x89, 0, 0, 0, 0},
10079         {0x8A, 0, 0, 0, 0},
10080         {0x8B, 0, 0, 0, 0},
10081         {0x8C, 0, 0, 0, 0},
10082         {0x8D, 0, 0, 0, 0},
10083         {0x8E, 0, 0, 0, 0},
10084         {0x8F, 0, 0, 0, 0},
10085         {0x90, 0, 0, 0, 0},
10086         {0x91, 0, 0, 0, 0},
10087         {0x92, 0, 0, 0, 0},
10088         {0x93, 0, 0, 0, 0},
10089         {0x94, 0, 0, 0, 0},
10090         {0x95, 0, 0, 0, 0},
10091         {0x96, 0, 0, 0, 0},
10092         {0x97, 0, 0, 0, 0},
10093         {0x98, 0, 0, 0, 0},
10094         {0x99, 0, 0, 0, 0},
10095         {0x9A, 0, 0, 0, 0},
10096         {0x9B, 0, 0, 0, 0},
10097         {0x9C, 0, 0, 0, 0},
10098         {0x9D, 0, 0, 0, 0},
10099         {0x9E, 0, 0, 0, 0},
10100         {0x9F, 0x6, 0x6, 0, 0},
10101         {0xA0, 0x66, 0x66, 0, 0},
10102         {0xA1, 0x66, 0x66, 0, 0},
10103         {0xA2, 0x66, 0x66, 0, 0},
10104         {0xA3, 0x66, 0x66, 0, 0},
10105         {0xA4, 0x66, 0x66, 0, 0},
10106         {0xA5, 0x66, 0x66, 0, 0},
10107         {0xA6, 0x66, 0x66, 0, 0},
10108         {0xA7, 0x66, 0x66, 0, 0},
10109         {0xA8, 0x66, 0x66, 0, 0},
10110         {0xA9, 0x66, 0x66, 0, 0},
10111         {0xAA, 0x66, 0x66, 0, 0},
10112         {0xAB, 0x66, 0x66, 0, 0},
10113         {0xAC, 0x66, 0x66, 0, 0},
10114         {0xAD, 0x66, 0x66, 0, 0},
10115         {0xAE, 0x66, 0x66, 0, 0},
10116         {0xAF, 0x66, 0x66, 0, 0},
10117         {0xB0, 0x66, 0x66, 0, 0},
10118         {0xB1, 0x66, 0x66, 0, 0},
10119         {0xB2, 0x66, 0x66, 0, 0},
10120         {0xB3, 0xa, 0xa, 0, 0},
10121         {0xB4, 0, 0, 0, 0},
10122         {0xB5, 0, 0, 0, 0},
10123         {0xB6, 0, 0, 0, 0},
10124         {0xFFFF, 0, 0, 0, 0},
10125 };
10126 
10127 static struct radio_regs regs_TX_2056_rev7[] = {
10128         {0x02, 0, 0, 0, 0},
10129         {0x03, 0, 0, 0, 0},
10130         {0x04, 0, 0, 0, 0},
10131         {0x05, 0, 0, 0, 0},
10132         {0x06, 0, 0, 0, 0},
10133         {0x07, 0, 0, 0, 0},
10134         {0x08, 0, 0, 0, 0},
10135         {0x09, 0, 0, 0, 0},
10136         {0x0A, 0, 0, 0, 0},
10137         {0x0B, 0, 0, 0, 0},
10138         {0x0C, 0, 0, 0, 0},
10139         {0x0D, 0, 0, 0, 0},
10140         {0x0E, 0, 0, 0, 0},
10141         {0x0F, 0, 0, 0, 0},
10142         {0x10, 0, 0, 0, 0},
10143         {0x11, 0, 0, 0, 0},
10144         {0x12, 0, 0, 0, 0},
10145         {0x13, 0, 0, 0, 0},
10146         {0x14, 0, 0, 0, 0},
10147         {0x15, 0, 0, 0, 0},
10148         {0x16, 0, 0, 0, 0},
10149         {0x17, 0, 0, 0, 0},
10150         {0x18, 0, 0, 0, 0},
10151         {0x19, 0, 0, 0, 0},
10152         {0x1A, 0, 0, 0, 0},
10153         {0x1B, 0, 0, 0, 0},
10154         {0x1C, 0, 0, 0, 0},
10155         {0x1D, 0, 0, 0, 0},
10156         {0x1E, 0, 0, 0, 0},
10157         {0x1F, 0, 0, 0, 0},
10158         {0x20, 0, 0, 0, 0},
10159         {0x21, 0x88, 0x88, 0, 0},
10160         {0x22, 0x88, 0x88, 0, 0},
10161         {0x23, 0x88, 0x88, 0, 0},
10162         {0x24, 0x88, 0x88, 0, 0},
10163         {0x25, 0xc, 0xc, 0, 0},
10164         {0x26, 0, 0, 0, 0},
10165         {0x27, 0x3, 0x3, 0, 0},
10166         {0x28, 0, 0, 0, 0},
10167         {0x29, 0x3, 0x3, 0, 0},
10168         {0x2A, 0x37, 0x37, 0, 0},
10169         {0x2B, 0x3, 0x3, 0, 0},
10170         {0x2C, 0, 0, 0, 0},
10171         {0x2D, 0, 0, 0, 0},
10172         {0x2E, 0x1, 0x1, 0, 0},
10173         {0x2F, 0x1, 0x1, 0, 0},
10174         {0x30, 0, 0, 0, 0},
10175         {0x31, 0, 0, 0, 0},
10176         {0x32, 0, 0, 0, 0},
10177         {0x33, 0x11, 0x11, 0, 0},
10178         {0x34, 0xee, 0xee, 1, 1},
10179         {0x35, 0, 0, 0, 0},
10180         {0x36, 0, 0, 0, 0},
10181         {0x37, 0x3, 0x3, 0, 0},
10182         {0x38, 0x50, 0x50, 1, 1},
10183         {0x39, 0, 0, 0, 0},
10184         {0x3A, 0x50, 0x50, 1, 1},
10185         {0x3B, 0, 0, 0, 0},
10186         {0x3C, 0x6e, 0x6e, 0, 0},
10187         {0x3D, 0xf0, 0xf0, 1, 1},
10188         {0x3E, 0, 0, 0, 0},
10189         {0x3F, 0, 0, 0, 0},
10190         {0x40, 0, 0, 0, 0},
10191         {0x41, 0x3, 0x3, 0, 0},
10192         {0x42, 0x3, 0x3, 0, 0},
10193         {0x43, 0, 0, 0, 0},
10194         {0x44, 0x1e, 0x1e, 0, 0},
10195         {0x45, 0, 0, 0, 0},
10196         {0x46, 0x6e, 0x6e, 0, 0},
10197         {0x47, 0xf0, 0xf0, 1, 1},
10198         {0x48, 0, 0, 0, 0},
10199         {0x49, 0x2, 0x2, 0, 0},
10200         {0x4A, 0xff, 0xff, 1, 1},
10201         {0x4B, 0xc, 0xc, 0, 0},
10202         {0x4C, 0, 0, 0, 0},
10203         {0x4D, 0x38, 0x38, 0, 0},
10204         {0x4E, 0x70, 0x70, 1, 1},
10205         {0x4F, 0x2, 0x2, 0, 0},
10206         {0x50, 0x88, 0x88, 0, 0},
10207         {0x51, 0xc, 0xc, 0, 0},
10208         {0x52, 0, 0, 0, 0},
10209         {0x53, 0x8, 0x8, 0, 0},
10210         {0x54, 0x70, 0x70, 1, 1},
10211         {0x55, 0x2, 0x2, 0, 0},
10212         {0x56, 0xff, 0xff, 1, 1},
10213         {0x57, 0, 0, 0, 0},
10214         {0x58, 0x83, 0x83, 0, 0},
10215         {0x59, 0x77, 0x77, 1, 1},
10216         {0x5A, 0, 0, 0, 0},
10217         {0x5B, 0x2, 0x2, 0, 0},
10218         {0x5C, 0x88, 0x88, 0, 0},
10219         {0x5D, 0, 0, 0, 0},
10220         {0x5E, 0x8, 0x8, 0, 0},
10221         {0x5F, 0x77, 0x77, 1, 1},
10222         {0x60, 0x1, 0x1, 0, 0},
10223         {0x61, 0, 0, 0, 0},
10224         {0x62, 0x7, 0x7, 0, 0},
10225         {0x63, 0, 0, 0, 0},
10226         {0x64, 0x7, 0x7, 0, 0},
10227         {0x65, 0, 0, 0, 0},
10228         {0x66, 0, 0, 0, 0},
10229         {0x67, 0, 0, 1, 1},
10230         {0x68, 0, 0, 0, 0},
10231         {0x69, 0xa, 0xa, 0, 0},
10232         {0x6A, 0, 0, 0, 0},
10233         {0x6B, 0, 0, 0, 0},
10234         {0x6C, 0, 0, 0, 0},
10235         {0x6D, 0, 0, 0, 0},
10236         {0x6E, 0, 0, 0, 0},
10237         {0x6F, 0, 0, 0, 0},
10238         {0x70, 0, 0, 0, 0},
10239         {0x71, 0x2, 0x2, 0, 0},
10240         {0x72, 0, 0, 0, 0},
10241         {0x73, 0, 0, 0, 0},
10242         {0x74, 0xe, 0xe, 0, 0},
10243         {0x75, 0xe, 0xe, 0, 0},
10244         {0x76, 0xe, 0xe, 0, 0},
10245         {0x77, 0x13, 0x13, 0, 0},
10246         {0x78, 0x13, 0x13, 0, 0},
10247         {0x79, 0x1b, 0x1b, 0, 0},
10248         {0x7A, 0x1b, 0x1b, 0, 0},
10249         {0x7B, 0x55, 0x55, 0, 0},
10250         {0x7C, 0x5b, 0x5b, 0, 0},
10251         {0x7D, 0x30, 0x30, 1, 1},
10252         {0x7E, 0, 0, 0, 0},
10253         {0x7F, 0, 0, 0, 0},
10254         {0x80, 0, 0, 0, 0},
10255         {0x81, 0, 0, 0, 0},
10256         {0x82, 0, 0, 0, 0},
10257         {0x83, 0, 0, 0, 0},
10258         {0x84, 0, 0, 0, 0},
10259         {0x85, 0, 0, 0, 0},
10260         {0x86, 0, 0, 0, 0},
10261         {0x87, 0, 0, 0, 0},
10262         {0x88, 0, 0, 0, 0},
10263         {0x89, 0, 0, 0, 0},
10264         {0x8A, 0, 0, 0, 0},
10265         {0x8B, 0, 0, 0, 0},
10266         {0x8C, 0, 0, 0, 0},
10267         {0x8D, 0, 0, 0, 0},
10268         {0x8E, 0, 0, 0, 0},
10269         {0x8F, 0, 0, 0, 0},
10270         {0x90, 0, 0, 0, 0},
10271         {0x91, 0, 0, 0, 0},
10272         {0x92, 0, 0, 0, 0},
10273         {0x93, 0x70, 0x70, 0, 0},
10274         {0x94, 0x70, 0x70, 0, 0},
10275         {0x95, 0x71, 0x71, 1, 1},
10276         {0x96, 0x71, 0x71, 1, 1},
10277         {0x97, 0x72, 0x72, 1, 1},
10278         {0x98, 0x73, 0x73, 1, 1},
10279         {0x99, 0x74, 0x74, 1, 1},
10280         {0x9A, 0x75, 0x75, 1, 1},
10281         {0xFFFF, 0, 0, 0, 0},
10282 };
10283 
10284 static struct radio_regs regs_RX_2056_rev7[] = {
10285         {0x02, 0, 0, 0, 0},
10286         {0x03, 0, 0, 0, 0},
10287         {0x04, 0, 0, 0, 0},
10288         {0x05, 0, 0, 0, 0},
10289         {0x06, 0, 0, 0, 0},
10290         {0x07, 0, 0, 0, 0},
10291         {0x08, 0, 0, 0, 0},
10292         {0x09, 0, 0, 0, 0},
10293         {0x0A, 0, 0, 0, 0},
10294         {0x0B, 0, 0, 0, 0},
10295         {0x0C, 0, 0, 0, 0},
10296         {0x0D, 0, 0, 0, 0},
10297         {0x0E, 0, 0, 0, 0},
10298         {0x0F, 0, 0, 0, 0},
10299         {0x10, 0, 0, 0, 0},
10300         {0x11, 0, 0, 0, 0},
10301         {0x12, 0, 0, 0, 0},
10302         {0x13, 0, 0, 0, 0},
10303         {0x14, 0, 0, 0, 0},
10304         {0x15, 0, 0, 0, 0},
10305         {0x16, 0, 0, 0, 0},
10306         {0x17, 0, 0, 0, 0},
10307         {0x18, 0, 0, 0, 0},
10308         {0x19, 0, 0, 0, 0},
10309         {0x1A, 0, 0, 0, 0},
10310         {0x1B, 0, 0, 0, 0},
10311         {0x1C, 0, 0, 0, 0},
10312         {0x1D, 0, 0, 0, 0},
10313         {0x1E, 0, 0, 0, 0},
10314         {0x1F, 0, 0, 0, 0},
10315         {0x20, 0x3, 0x3, 0, 0},
10316         {0x21, 0, 0, 0, 0},
10317         {0x22, 0, 0, 0, 0},
10318         {0x23, 0x90, 0x90, 0, 0},
10319         {0x24, 0x55, 0x55, 0, 0},
10320         {0x25, 0x15, 0x15, 0, 0},
10321         {0x26, 0x5, 0x5, 0, 0},
10322         {0x27, 0x15, 0x15, 0, 0},
10323         {0x28, 0x5, 0x5, 0, 0},
10324         {0x29, 0x20, 0x20, 0, 0},
10325         {0x2A, 0x11, 0x11, 0, 0},
10326         {0x2B, 0x90, 0x90, 0, 0},
10327         {0x2C, 0, 0, 0, 0},
10328         {0x2D, 0x88, 0x88, 0, 0},
10329         {0x2E, 0x32, 0x32, 0, 0},
10330         {0x2F, 0x77, 0x77, 0, 0},
10331         {0x30, 0x17, 0x17, 1, 1},
10332         {0x31, 0xff, 0xff, 1, 1},
10333         {0x32, 0x20, 0x20, 0, 0},
10334         {0x33, 0, 0, 0, 0},
10335         {0x34, 0x88, 0x88, 0, 0},
10336         {0x35, 0x32, 0x32, 0, 0},
10337         {0x36, 0x77, 0x77, 0, 0},
10338         {0x37, 0x17, 0x17, 1, 1},
10339         {0x38, 0xf0, 0xf0, 1, 1},
10340         {0x39, 0x20, 0x20, 0, 0},
10341         {0x3A, 0x8, 0x8, 0, 0},
10342         {0x3B, 0x55, 0x55, 1, 1},
10343         {0x3C, 0, 0, 0, 0},
10344         {0x3D, 0x88, 0x88, 1, 1},
10345         {0x3E, 0, 0, 0, 0},
10346         {0x3F, 0, 0, 1, 1},
10347         {0x40, 0x7, 0x7, 1, 1},
10348         {0x41, 0x6, 0x6, 0, 0},
10349         {0x42, 0x4, 0x4, 0, 0},
10350         {0x43, 0, 0, 0, 0},
10351         {0x44, 0x8, 0x8, 0, 0},
10352         {0x45, 0x55, 0x55, 1, 1},
10353         {0x46, 0, 0, 0, 0},
10354         {0x47, 0x11, 0x11, 0, 0},
10355         {0x48, 0, 0, 0, 0},
10356         {0x49, 0, 0, 1, 1},
10357         {0x4A, 0x7, 0x7, 0, 0},
10358         {0x4B, 0x6, 0x6, 0, 0},
10359         {0x4C, 0x4, 0x4, 0, 0},
10360         {0x4D, 0, 0, 0, 0},
10361         {0x4E, 0, 0, 0, 0},
10362         {0x4F, 0x26, 0x26, 1, 1},
10363         {0x50, 0x26, 0x26, 1, 1},
10364         {0x51, 0xf, 0xf, 1, 1},
10365         {0x52, 0xf, 0xf, 1, 1},
10366         {0x53, 0x44, 0x44, 0, 0},
10367         {0x54, 0, 0, 0, 0},
10368         {0x55, 0, 0, 0, 0},
10369         {0x56, 0x8, 0x8, 0, 0},
10370         {0x57, 0x8, 0x8, 0, 0},
10371         {0x58, 0x7, 0x7, 0, 0},
10372         {0x59, 0x22, 0x22, 0, 0},
10373         {0x5A, 0x22, 0x22, 0, 0},
10374         {0x5B, 0x2, 0x2, 0, 0},
10375         {0x5C, 0x4, 0x4, 1, 1},
10376         {0x5D, 0x7, 0x7, 0, 0},
10377         {0x5E, 0x55, 0x55, 0, 0},
10378         {0x5F, 0x23, 0x23, 0, 0},
10379         {0x60, 0x41, 0x41, 0, 0},
10380         {0x61, 0x1, 0x1, 0, 0},
10381         {0x62, 0xa, 0xa, 0, 0},
10382         {0x63, 0, 0, 0, 0},
10383         {0x64, 0, 0, 0, 0},
10384         {0x65, 0, 0, 0, 0},
10385         {0x66, 0, 0, 0, 0},
10386         {0x67, 0, 0, 0, 0},
10387         {0x68, 0, 0, 0, 0},
10388         {0x69, 0, 0, 0, 0},
10389         {0x6A, 0, 0, 0, 0},
10390         {0x6B, 0xc, 0xc, 0, 0},
10391         {0x6C, 0, 0, 0, 0},
10392         {0x6D, 0, 0, 0, 0},
10393         {0x6E, 0, 0, 0, 0},
10394         {0x6F, 0, 0, 0, 0},
10395         {0x70, 0, 0, 0, 0},
10396         {0x71, 0, 0, 0, 0},
10397         {0x72, 0x22, 0x22, 0, 0},
10398         {0x73, 0x22, 0x22, 0, 0},
10399         {0x74, 0, 0, 1, 1},
10400         {0x75, 0xa, 0xa, 0, 0},
10401         {0x76, 0x1, 0x1, 0, 0},
10402         {0x77, 0x22, 0x22, 0, 0},
10403         {0x78, 0x30, 0x30, 0, 0},
10404         {0x79, 0, 0, 0, 0},
10405         {0x7A, 0, 0, 0, 0},
10406         {0x7B, 0, 0, 0, 0},
10407         {0x7C, 0, 0, 0, 0},
10408         {0x7D, 0, 0, 0, 0},
10409         {0x7E, 0, 0, 0, 0},
10410         {0x7F, 0, 0, 0, 0},
10411         {0x80, 0, 0, 0, 0},
10412         {0x81, 0, 0, 0, 0},
10413         {0x82, 0, 0, 0, 0},
10414         {0x83, 0, 0, 0, 0},
10415         {0x84, 0, 0, 0, 0},
10416         {0x85, 0, 0, 0, 0},
10417         {0x86, 0, 0, 0, 0},
10418         {0x87, 0, 0, 0, 0},
10419         {0x88, 0, 0, 0, 0},
10420         {0x89, 0, 0, 0, 0},
10421         {0x8A, 0, 0, 0, 0},
10422         {0x8B, 0, 0, 0, 0},
10423         {0x8C, 0, 0, 0, 0},
10424         {0x8D, 0, 0, 0, 0},
10425         {0x8E, 0, 0, 0, 0},
10426         {0x8F, 0, 0, 0, 0},
10427         {0x90, 0, 0, 0, 0},
10428         {0x91, 0, 0, 0, 0},
10429         {0x92, 0, 0, 0, 0},
10430         {0x93, 0, 0, 0, 0},
10431         {0x94, 0, 0, 0, 0},
10432         {0xFFFF, 0, 0, 0, 0},
10433 };
10434 
10435 static struct radio_regs regs_SYN_2056_rev8[] = {
10436         {0x02, 0, 0, 0, 0},
10437         {0x03, 0, 0, 0, 0},
10438         {0x04, 0, 0, 0, 0},
10439         {0x05, 0, 0, 0, 0},
10440         {0x06, 0, 0, 0, 0},
10441         {0x07, 0, 0, 0, 0},
10442         {0x08, 0, 0, 0, 0},
10443         {0x09, 0x1, 0x1, 0, 0},
10444         {0x0A, 0, 0, 0, 0},
10445         {0x0B, 0, 0, 0, 0},
10446         {0x0C, 0, 0, 0, 0},
10447         {0x0D, 0, 0, 0, 0},
10448         {0x0E, 0, 0, 0, 0},
10449         {0x0F, 0, 0, 0, 0},
10450         {0x10, 0, 0, 0, 0},
10451         {0x11, 0, 0, 0, 0},
10452         {0x12, 0, 0, 0, 0},
10453         {0x13, 0, 0, 0, 0},
10454         {0x14, 0, 0, 0, 0},
10455         {0x15, 0, 0, 0, 0},
10456         {0x16, 0, 0, 0, 0},
10457         {0x17, 0, 0, 0, 0},
10458         {0x18, 0, 0, 0, 0},
10459         {0x19, 0, 0, 0, 0},
10460         {0x1A, 0, 0, 0, 0},
10461         {0x1B, 0, 0, 0, 0},
10462         {0x1C, 0, 0, 0, 0},
10463         {0x1D, 0, 0, 0, 0},
10464         {0x1E, 0, 0, 0, 0},
10465         {0x1F, 0, 0, 0, 0},
10466         {0x20, 0, 0, 0, 0},
10467         {0x21, 0, 0, 0, 0},
10468         {0x22, 0x60, 0x60, 0, 0},
10469         {0x23, 0x6, 0x6, 0, 0},
10470         {0x24, 0xc, 0xc, 0, 0},
10471         {0x25, 0, 0, 0, 0},
10472         {0x26, 0, 0, 0, 0},
10473         {0x27, 0, 0, 0, 0},
10474         {0x28, 0x1, 0x1, 0, 0},
10475         {0x29, 0, 0, 0, 0},
10476         {0x2A, 0, 0, 0, 0},
10477         {0x2B, 0, 0, 0, 0},
10478         {0x2C, 0, 0, 0, 0},
10479         {0x2D, 0, 0, 0, 0},
10480         {0x2E, 0, 0, 0, 0},
10481         {0x2F, 0x1f, 0x1f, 0, 0},
10482         {0x30, 0x15, 0x15, 0, 0},
10483         {0x31, 0xf, 0xf, 0, 0},
10484         {0x32, 0, 0, 0, 0},
10485         {0x33, 0, 0, 0, 0},
10486         {0x34, 0, 0, 0, 0},
10487         {0x35, 0, 0, 0, 0},
10488         {0x36, 0, 0, 0, 0},
10489         {0x37, 0, 0, 0, 0},
10490         {0x38, 0, 0, 0, 0},
10491         {0x39, 0, 0, 0, 0},
10492         {0x3A, 0, 0, 0, 0},
10493         {0x3B, 0, 0, 0, 0},
10494         {0x3C, 0x13, 0x13, 0, 0},
10495         {0x3D, 0xf, 0xf, 0, 0},
10496         {0x3E, 0x18, 0x18, 0, 0},
10497         {0x3F, 0, 0, 0, 0},
10498         {0x40, 0, 0, 0, 0},
10499         {0x41, 0x20, 0x20, 0, 0},
10500         {0x42, 0x20, 0x20, 0, 0},
10501         {0x43, 0, 0, 0, 0},
10502         {0x44, 0x77, 0x77, 0, 0},
10503         {0x45, 0x7, 0x7, 0, 0},
10504         {0x46, 0x1, 0x1, 0, 0},
10505         {0x47, 0x4, 0x4, 0, 0},
10506         {0x48, 0xf, 0xf, 0, 0},
10507         {0x49, 0x30, 0x30, 0, 0},
10508         {0x4A, 0x32, 0x32, 0, 0},
10509         {0x4B, 0xd, 0xd, 0, 0},
10510         {0x4C, 0xd, 0xd, 0, 0},
10511         {0x4D, 0x4, 0x4, 0, 0},
10512         {0x4E, 0x6, 0x6, 0, 0},
10513         {0x4F, 0x1, 0x1, 0, 0},
10514         {0x50, 0x1c, 0x1c, 0, 0},
10515         {0x51, 0x2, 0x2, 0, 0},
10516         {0x52, 0x2, 0x2, 0, 0},
10517         {0x53, 0xf7, 0xf7, 1, 1},
10518         {0x54, 0xb4, 0xb4, 0, 0},
10519         {0x55, 0xd2, 0xd2, 0, 0},
10520         {0x56, 0, 0, 0, 0},
10521         {0x57, 0, 0, 0, 0},
10522         {0x58, 0x4, 0x4, 0, 0},
10523         {0x59, 0x96, 0x96, 0, 0},
10524         {0x5A, 0x3e, 0x3e, 0, 0},
10525         {0x5B, 0x3e, 0x3e, 0, 0},
10526         {0x5C, 0x13, 0x13, 0, 0},
10527         {0x5D, 0x2, 0x2, 0, 0},
10528         {0x5E, 0, 0, 0, 0},
10529         {0x5F, 0x7, 0x7, 0, 0},
10530         {0x60, 0x7, 0x7, 1, 1},
10531         {0x61, 0x8, 0x8, 0, 0},
10532         {0x62, 0x3, 0x3, 0, 0},
10533         {0x63, 0, 0, 0, 0},
10534         {0x64, 0, 0, 0, 0},
10535         {0x65, 0, 0, 0, 0},
10536         {0x66, 0, 0, 0, 0},
10537         {0x67, 0, 0, 0, 0},
10538         {0x68, 0x40, 0x40, 0, 0},
10539         {0x69, 0, 0, 0, 0},
10540         {0x6A, 0, 0, 0, 0},
10541         {0x6B, 0, 0, 0, 0},
10542         {0x6C, 0, 0, 0, 0},
10543         {0x6D, 0x1, 0x1, 0, 0},
10544         {0x6E, 0, 0, 0, 0},
10545         {0x6F, 0, 0, 0, 0},
10546         {0x70, 0x60, 0x60, 0, 0},
10547         {0x71, 0x66, 0x66, 0, 0},
10548         {0x72, 0xc, 0xc, 0, 0},
10549         {0x73, 0x66, 0x66, 0, 0},
10550         {0x74, 0x8f, 0x8f, 1, 1},
10551         {0x75, 0, 0, 0, 0},
10552         {0x76, 0xcc, 0xcc, 0, 0},
10553         {0x77, 0x1, 0x1, 0, 0},
10554         {0x78, 0x66, 0x66, 0, 0},
10555         {0x79, 0x66, 0x66, 0, 0},
10556         {0x7A, 0, 0, 0, 0},
10557         {0x7B, 0, 0, 0, 0},
10558         {0x7C, 0, 0, 0, 0},
10559         {0x7D, 0, 0, 0, 0},
10560         {0x7E, 0, 0, 0, 0},
10561         {0x7F, 0, 0, 0, 0},
10562         {0x80, 0, 0, 0, 0},
10563         {0x81, 0, 0, 0, 0},
10564         {0x82, 0, 0, 0, 0},
10565         {0x83, 0, 0, 0, 0},
10566         {0x84, 0, 0, 0, 0},
10567         {0x85, 0xff, 0xff, 0, 0},
10568         {0x86, 0, 0, 0, 0},
10569         {0x87, 0, 0, 0, 0},
10570         {0x88, 0, 0, 0, 0},
10571         {0x89, 0, 0, 0, 0},
10572         {0x8A, 0, 0, 0, 0},
10573         {0x8B, 0, 0, 0, 0},
10574         {0x8C, 0, 0, 0, 0},
10575         {0x8D, 0, 0, 0, 0},
10576         {0x8E, 0, 0, 0, 0},
10577         {0x8F, 0, 0, 0, 0},
10578         {0x90, 0, 0, 0, 0},
10579         {0x91, 0, 0, 0, 0},
10580         {0x92, 0, 0, 0, 0},
10581         {0x93, 0, 0, 0, 0},
10582         {0x94, 0, 0, 0, 0},
10583         {0x95, 0, 0, 0, 0},
10584         {0x96, 0, 0, 0, 0},
10585         {0x97, 0, 0, 0, 0},
10586         {0x98, 0, 0, 0, 0},
10587         {0x99, 0, 0, 0, 0},
10588         {0x9A, 0, 0, 0, 0},
10589         {0x9B, 0, 0, 0, 0},
10590         {0x9C, 0, 0, 0, 0},
10591         {0x9D, 0, 0, 0, 0},
10592         {0x9E, 0, 0, 0, 0},
10593         {0x9F, 0x6, 0x6, 0, 0},
10594         {0xA0, 0x66, 0x66, 0, 0},
10595         {0xA1, 0x66, 0x66, 0, 0},
10596         {0xA2, 0x66, 0x66, 0, 0},
10597         {0xA3, 0x66, 0x66, 0, 0},
10598         {0xA4, 0x66, 0x66, 0, 0},
10599         {0xA5, 0x66, 0x66, 0, 0},
10600         {0xA6, 0x66, 0x66, 0, 0},
10601         {0xA7, 0x66, 0x66, 0, 0},
10602         {0xA8, 0x66, 0x66, 0, 0},
10603         {0xA9, 0x66, 0x66, 0, 0},
10604         {0xAA, 0x66, 0x66, 0, 0},
10605         {0xAB, 0x66, 0x66, 0, 0},
10606         {0xAC, 0x66, 0x66, 0, 0},
10607         {0xAD, 0x66, 0x66, 0, 0},
10608         {0xAE, 0x66, 0x66, 0, 0},
10609         {0xAF, 0x66, 0x66, 0, 0},
10610         {0xB0, 0x66, 0x66, 0, 0},
10611         {0xB1, 0x66, 0x66, 0, 0},
10612         {0xB2, 0x66, 0x66, 0, 0},
10613         {0xB3, 0xa, 0xa, 0, 0},
10614         {0xB4, 0, 0, 0, 0},
10615         {0xB5, 0, 0, 0, 0},
10616         {0xB6, 0, 0, 0, 0},
10617         {0xFFFF, 0, 0, 0, 0},
10618 };
10619 
10620 static struct radio_regs regs_TX_2056_rev8[] = {
10621         {0x02, 0, 0, 0, 0},
10622         {0x03, 0, 0, 0, 0},
10623         {0x04, 0, 0, 0, 0},
10624         {0x05, 0, 0, 0, 0},
10625         {0x06, 0, 0, 0, 0},
10626         {0x07, 0, 0, 0, 0},
10627         {0x08, 0, 0, 0, 0},
10628         {0x09, 0, 0, 0, 0},
10629         {0x0A, 0, 0, 0, 0},
10630         {0x0B, 0, 0, 0, 0},
10631         {0x0C, 0, 0, 0, 0},
10632         {0x0D, 0, 0, 0, 0},
10633         {0x0E, 0, 0, 0, 0},
10634         {0x0F, 0, 0, 0, 0},
10635         {0x10, 0, 0, 0, 0},
10636         {0x11, 0, 0, 0, 0},
10637         {0x12, 0, 0, 0, 0},
10638         {0x13, 0, 0, 0, 0},
10639         {0x14, 0, 0, 0, 0},
10640         {0x15, 0, 0, 0, 0},
10641         {0x16, 0, 0, 0, 0},
10642         {0x17, 0, 0, 0, 0},
10643         {0x18, 0, 0, 0, 0},
10644         {0x19, 0, 0, 0, 0},
10645         {0x1A, 0, 0, 0, 0},
10646         {0x1B, 0, 0, 0, 0},
10647         {0x1C, 0, 0, 0, 0},
10648         {0x1D, 0, 0, 0, 0},
10649         {0x1E, 0, 0, 0, 0},
10650         {0x1F, 0, 0, 0, 0},
10651         {0x20, 0, 0, 0, 0},
10652         {0x21, 0x88, 0x88, 0, 0},
10653         {0x22, 0x88, 0x88, 0, 0},
10654         {0x23, 0x88, 0x88, 0, 0},
10655         {0x24, 0x88, 0x88, 0, 0},
10656         {0x25, 0xc, 0xc, 0, 0},
10657         {0x26, 0, 0, 0, 0},
10658         {0x27, 0x3, 0x3, 0, 0},
10659         {0x28, 0, 0, 0, 0},
10660         {0x29, 0x3, 0x3, 0, 0},
10661         {0x2A, 0x37, 0x37, 0, 0},
10662         {0x2B, 0x3, 0x3, 0, 0},
10663         {0x2C, 0, 0, 0, 0},
10664         {0x2D, 0, 0, 0, 0},
10665         {0x2E, 0x1, 0x1, 0, 0},
10666         {0x2F, 0x1, 0x1, 0, 0},
10667         {0x30, 0, 0, 0, 0},
10668         {0x31, 0, 0, 0, 0},
10669         {0x32, 0, 0, 0, 0},
10670         {0x33, 0x11, 0x11, 0, 0},
10671         {0x34, 0xee, 0xee, 1, 1},
10672         {0x35, 0, 0, 0, 0},
10673         {0x36, 0, 0, 0, 0},
10674         {0x37, 0x3, 0x3, 0, 0},
10675         {0x38, 0x50, 0x50, 1, 1},
10676         {0x39, 0, 0, 0, 0},
10677         {0x3A, 0x50, 0x50, 1, 1},
10678         {0x3B, 0, 0, 0, 0},
10679         {0x3C, 0x6e, 0x6e, 0, 0},
10680         {0x3D, 0xf0, 0xf0, 1, 1},
10681         {0x3E, 0, 0, 0, 0},
10682         {0x3F, 0, 0, 0, 0},
10683         {0x40, 0, 0, 0, 0},
10684         {0x41, 0x3, 0x3, 0, 0},
10685         {0x42, 0x3, 0x3, 0, 0},
10686         {0x43, 0, 0, 0, 0},
10687         {0x44, 0x1e, 0x1e, 0, 0},
10688         {0x45, 0, 0, 0, 0},
10689         {0x46, 0x6e, 0x6e, 0, 0},
10690         {0x47, 0xf0, 0xf0, 1, 1},
10691         {0x48, 0, 0, 0, 0},
10692         {0x49, 0x2, 0x2, 0, 0},
10693         {0x4A, 0xff, 0xff, 1, 1},
10694         {0x4B, 0xc, 0xc, 0, 0},
10695         {0x4C, 0, 0, 0, 0},
10696         {0x4D, 0x38, 0x38, 0, 0},
10697         {0x4E, 0x70, 0x70, 1, 1},
10698         {0x4F, 0x2, 0x2, 0, 0},
10699         {0x50, 0x88, 0x88, 0, 0},
10700         {0x51, 0xc, 0xc, 0, 0},
10701         {0x52, 0, 0, 0, 0},
10702         {0x53, 0x8, 0x8, 0, 0},
10703         {0x54, 0x70, 0x70, 1, 1},
10704         {0x55, 0x2, 0x2, 0, 0},
10705         {0x56, 0xff, 0xff, 1, 1},
10706         {0x57, 0, 0, 0, 0},
10707         {0x58, 0x83, 0x83, 0, 0},
10708         {0x59, 0x77, 0x77, 1, 1},
10709         {0x5A, 0, 0, 0, 0},
10710         {0x5B, 0x2, 0x2, 0, 0},
10711         {0x5C, 0x88, 0x88, 0, 0},
10712         {0x5D, 0, 0, 0, 0},
10713         {0x5E, 0x8, 0x8, 0, 0},
10714         {0x5F, 0x77, 0x77, 1, 1},
10715         {0x60, 0x1, 0x1, 0, 0},
10716         {0x61, 0, 0, 0, 0},
10717         {0x62, 0x7, 0x7, 0, 0},
10718         {0x63, 0, 0, 0, 0},
10719         {0x64, 0x7, 0x7, 0, 0},
10720         {0x65, 0, 0, 0, 0},
10721         {0x66, 0, 0, 0, 0},
10722         {0x67, 0, 0, 1, 1},
10723         {0x68, 0, 0, 0, 0},
10724         {0x69, 0xa, 0xa, 0, 0},
10725         {0x6A, 0, 0, 0, 0},
10726         {0x6B, 0, 0, 0, 0},
10727         {0x6C, 0, 0, 0, 0},
10728         {0x6D, 0, 0, 0, 0},
10729         {0x6E, 0, 0, 0, 0},
10730         {0x6F, 0, 0, 0, 0},
10731         {0x70, 0, 0, 0, 0},
10732         {0x71, 0x2, 0x2, 0, 0},
10733         {0x72, 0, 0, 0, 0},
10734         {0x73, 0, 0, 0, 0},
10735         {0x74, 0xe, 0xe, 0, 0},
10736         {0x75, 0xe, 0xe, 0, 0},
10737         {0x76, 0xe, 0xe, 0, 0},
10738         {0x77, 0x13, 0x13, 0, 0},
10739         {0x78, 0x13, 0x13, 0, 0},
10740         {0x79, 0x1b, 0x1b, 0, 0},
10741         {0x7A, 0x1b, 0x1b, 0, 0},
10742         {0x7B, 0x55, 0x55, 0, 0},
10743         {0x7C, 0x5b, 0x5b, 0, 0},
10744         {0x7D, 0x30, 0x30, 1, 1},
10745         {0x7E, 0, 0, 0, 0},
10746         {0x7F, 0, 0, 0, 0},
10747         {0x80, 0, 0, 0, 0},
10748         {0x81, 0, 0, 0, 0},
10749         {0x82, 0, 0, 0, 0},
10750         {0x83, 0, 0, 0, 0},
10751         {0x84, 0, 0, 0, 0},
10752         {0x85, 0, 0, 0, 0},
10753         {0x86, 0, 0, 0, 0},
10754         {0x87, 0, 0, 0, 0},
10755         {0x88, 0, 0, 0, 0},
10756         {0x89, 0, 0, 0, 0},
10757         {0x8A, 0, 0, 0, 0},
10758         {0x8B, 0, 0, 0, 0},
10759         {0x8C, 0, 0, 0, 0},
10760         {0x8D, 0, 0, 0, 0},
10761         {0x8E, 0, 0, 0, 0},
10762         {0x8F, 0, 0, 0, 0},
10763         {0x90, 0, 0, 0, 0},
10764         {0x91, 0, 0, 0, 0},
10765         {0x92, 0, 0, 0, 0},
10766         {0x93, 0x70, 0x70, 0, 0},
10767         {0x94, 0x70, 0x70, 0, 0},
10768         {0x95, 0x70, 0x70, 0, 0},
10769         {0x96, 0x70, 0x70, 0, 0},
10770         {0x97, 0x70, 0x70, 0, 0},
10771         {0x98, 0x70, 0x70, 0, 0},
10772         {0x99, 0x70, 0x70, 0, 0},
10773         {0x9A, 0x70, 0x70, 0, 0},
10774         {0xFFFF, 0, 0, 0, 0},
10775 };
10776 
10777 static struct radio_regs regs_RX_2056_rev8[] = {
10778         {0x02, 0, 0, 0, 0},
10779         {0x03, 0, 0, 0, 0},
10780         {0x04, 0, 0, 0, 0},
10781         {0x05, 0, 0, 0, 0},
10782         {0x06, 0, 0, 0, 0},
10783         {0x07, 0, 0, 0, 0},
10784         {0x08, 0, 0, 0, 0},
10785         {0x09, 0, 0, 0, 0},
10786         {0x0A, 0, 0, 0, 0},
10787         {0x0B, 0, 0, 0, 0},
10788         {0x0C, 0, 0, 0, 0},
10789         {0x0D, 0, 0, 0, 0},
10790         {0x0E, 0, 0, 0, 0},
10791         {0x0F, 0, 0, 0, 0},
10792         {0x10, 0, 0, 0, 0},
10793         {0x11, 0, 0, 0, 0},
10794         {0x12, 0, 0, 0, 0},
10795         {0x13, 0, 0, 0, 0},
10796         {0x14, 0, 0, 0, 0},
10797         {0x15, 0, 0, 0, 0},
10798         {0x16, 0, 0, 0, 0},
10799         {0x17, 0, 0, 0, 0},
10800         {0x18, 0, 0, 0, 0},
10801         {0x19, 0, 0, 0, 0},
10802         {0x1A, 0, 0, 0, 0},
10803         {0x1B, 0, 0, 0, 0},
10804         {0x1C, 0, 0, 0, 0},
10805         {0x1D, 0, 0, 0, 0},
10806         {0x1E, 0, 0, 0, 0},
10807         {0x1F, 0, 0, 0, 0},
10808         {0x20, 0x3, 0x3, 0, 0},
10809         {0x21, 0, 0, 0, 0},
10810         {0x22, 0, 0, 0, 0},
10811         {0x23, 0x90, 0x90, 0, 0},
10812         {0x24, 0x55, 0x55, 0, 0},
10813         {0x25, 0x15, 0x15, 0, 0},
10814         {0x26, 0x5, 0x5, 0, 0},
10815         {0x27, 0x15, 0x15, 0, 0},
10816         {0x28, 0x5, 0x5, 0, 0},
10817         {0x29, 0x20, 0x20, 0, 0},
10818         {0x2A, 0x11, 0x11, 0, 0},
10819         {0x2B, 0x90, 0x90, 0, 0},
10820         {0x2C, 0, 0, 0, 0},
10821         {0x2D, 0x88, 0x88, 0, 0},
10822         {0x2E, 0x32, 0x32, 0, 0},
10823         {0x2F, 0x77, 0x77, 0, 0},
10824         {0x30, 0x17, 0x17, 1, 1},
10825         {0x31, 0xff, 0xff, 1, 1},
10826         {0x32, 0x20, 0x20, 0, 0},
10827         {0x33, 0, 0, 0, 0},
10828         {0x34, 0x88, 0x88, 0, 0},
10829         {0x35, 0x32, 0x32, 0, 0},
10830         {0x36, 0x77, 0x77, 0, 0},
10831         {0x37, 0x17, 0x17, 1, 1},
10832         {0x38, 0xf0, 0xf0, 1, 1},
10833         {0x39, 0x20, 0x20, 0, 0},
10834         {0x3A, 0x8, 0x8, 0, 0},
10835         {0x3B, 0x55, 0x55, 1, 1},
10836         {0x3C, 0, 0, 0, 0},
10837         {0x3D, 0x88, 0x88, 1, 1},
10838         {0x3E, 0, 0, 0, 0},
10839         {0x3F, 0x44, 0x44, 0, 0},
10840         {0x40, 0x7, 0x7, 1, 1},
10841         {0x41, 0x6, 0x6, 0, 0},
10842         {0x42, 0x4, 0x4, 0, 0},
10843         {0x43, 0, 0, 0, 0},
10844         {0x44, 0x8, 0x8, 0, 0},
10845         {0x45, 0x55, 0x55, 1, 1},
10846         {0x46, 0, 0, 0, 0},
10847         {0x47, 0x11, 0x11, 0, 0},
10848         {0x48, 0, 0, 0, 0},
10849         {0x49, 0x44, 0x44, 0, 0},
10850         {0x4A, 0x7, 0x7, 0, 0},
10851         {0x4B, 0x6, 0x6, 0, 0},
10852         {0x4C, 0x4, 0x4, 0, 0},
10853         {0x4D, 0, 0, 0, 0},
10854         {0x4E, 0, 0, 0, 0},
10855         {0x4F, 0x26, 0x26, 1, 1},
10856         {0x50, 0x26, 0x26, 1, 1},
10857         {0x51, 0xf, 0xf, 1, 1},
10858         {0x52, 0xf, 0xf, 1, 1},
10859         {0x53, 0x44, 0x44, 0, 0},
10860         {0x54, 0, 0, 0, 0},
10861         {0x55, 0, 0, 0, 0},
10862         {0x56, 0x8, 0x8, 0, 0},
10863         {0x57, 0x8, 0x8, 0, 0},
10864         {0x58, 0x7, 0x7, 0, 0},
10865         {0x59, 0x22, 0x22, 0, 0},
10866         {0x5A, 0x22, 0x22, 0, 0},
10867         {0x5B, 0x2, 0x2, 0, 0},
10868         {0x5C, 0x4, 0x4, 1, 1},
10869         {0x5D, 0x7, 0x7, 0, 0},
10870         {0x5E, 0x55, 0x55, 0, 0},
10871         {0x5F, 0x23, 0x23, 0, 0},
10872         {0x60, 0x41, 0x41, 0, 0},
10873         {0x61, 0x1, 0x1, 0, 0},
10874         {0x62, 0xa, 0xa, 0, 0},
10875         {0x63, 0, 0, 0, 0},
10876         {0x64, 0, 0, 0, 0},
10877         {0x65, 0, 0, 0, 0},
10878         {0x66, 0, 0, 0, 0},
10879         {0x67, 0, 0, 0, 0},
10880         {0x68, 0, 0, 0, 0},
10881         {0x69, 0, 0, 0, 0},
10882         {0x6A, 0, 0, 0, 0},
10883         {0x6B, 0xc, 0xc, 0, 0},
10884         {0x6C, 0, 0, 0, 0},
10885         {0x6D, 0, 0, 0, 0},
10886         {0x6E, 0, 0, 0, 0},
10887         {0x6F, 0, 0, 0, 0},
10888         {0x70, 0, 0, 0, 0},
10889         {0x71, 0, 0, 0, 0},
10890         {0x72, 0x22, 0x22, 0, 0},
10891         {0x73, 0x22, 0x22, 0, 0},
10892         {0x74, 0, 0, 1, 1},
10893         {0x75, 0xa, 0xa, 0, 0},
10894         {0x76, 0x1, 0x1, 0, 0},
10895         {0x77, 0x22, 0x22, 0, 0},
10896         {0x78, 0x30, 0x30, 0, 0},
10897         {0x79, 0, 0, 0, 0},
10898         {0x7A, 0, 0, 0, 0},
10899         {0x7B, 0, 0, 0, 0},
10900         {0x7C, 0, 0, 0, 0},
10901         {0x7D, 0x5, 0x5, 1, 1},
10902         {0x7E, 0, 0, 0, 0},
10903         {0x7F, 0, 0, 0, 0},
10904         {0x80, 0, 0, 0, 0},
10905         {0x81, 0, 0, 0, 0},
10906         {0x82, 0, 0, 0, 0},
10907         {0x83, 0, 0, 0, 0},
10908         {0x84, 0, 0, 0, 0},
10909         {0x85, 0, 0, 0, 0},
10910         {0x86, 0, 0, 0, 0},
10911         {0x87, 0, 0, 0, 0},
10912         {0x88, 0, 0, 0, 0},
10913         {0x89, 0, 0, 0, 0},
10914         {0x8A, 0, 0, 0, 0},
10915         {0x8B, 0, 0, 0, 0},
10916         {0x8C, 0, 0, 0, 0},
10917         {0x8D, 0, 0, 0, 0},
10918         {0x8E, 0, 0, 0, 0},
10919         {0x8F, 0, 0, 0, 0},
10920         {0x90, 0, 0, 0, 0},
10921         {0x91, 0, 0, 0, 0},
10922         {0x92, 0, 0, 0, 0},
10923         {0x93, 0, 0, 0, 0},
10924         {0x94, 0, 0, 0, 0},
10925         {0xFFFF, 0, 0, 0, 0},
10926 };
10927 
10928 static const struct radio_regs regs_SYN_2056_rev11[] = {
10929         {0x02, 0, 0, 0, 0},
10930         {0x03, 0, 0, 0, 0},
10931         {0x04, 0, 0, 0, 0},
10932         {0x05, 0, 0, 0, 0},
10933         {0x06, 0, 0, 0, 0},
10934         {0x07, 0, 0, 0, 0},
10935         {0x08, 0, 0, 0, 0},
10936         {0x09, 0x1, 0x1, 0, 0},
10937         {0x0A, 0, 0, 0, 0},
10938         {0x0B, 0, 0, 0, 0},
10939         {0x0C, 0, 0, 0, 0},
10940         {0x0D, 0, 0, 0, 0},
10941         {0x0E, 0, 0, 0, 0},
10942         {0x0F, 0, 0, 0, 0},
10943         {0x10, 0, 0, 0, 0},
10944         {0x11, 0, 0, 0, 0},
10945         {0x12, 0, 0, 0, 0},
10946         {0x13, 0, 0, 0, 0},
10947         {0x14, 0, 0, 0, 0},
10948         {0x15, 0, 0, 0, 0},
10949         {0x16, 0, 0, 0, 0},
10950         {0x17, 0, 0, 0, 0},
10951         {0x18, 0, 0, 0, 0},
10952         {0x19, 0, 0, 0, 0},
10953         {0x1A, 0, 0, 0, 0},
10954         {0x1B, 0, 0, 0, 0},
10955         {0x1C, 0, 0, 0, 0},
10956         {0x1D, 0, 0, 0, 0},
10957         {0x1E, 0, 0, 0, 0},
10958         {0x1F, 0, 0, 0, 0},
10959         {0x20, 0, 0, 0, 0},
10960         {0x21, 0, 0, 0, 0},
10961         {0x22, 0x60, 0x60, 0, 0},
10962         {0x23, 0x6, 0x6, 0, 0},
10963         {0x24, 0xc, 0xc, 0, 0},
10964         {0x25, 0, 0, 0, 0},
10965         {0x26, 0, 0, 0, 0},
10966         {0x27, 0, 0, 0, 0},
10967         {0x28, 0x1, 0x1, 0, 0},
10968         {0x29, 0, 0, 0, 0},
10969         {0x2A, 0, 0, 0, 0},
10970         {0x2B, 0, 0, 0, 0},
10971         {0x2C, 0, 0, 0, 0},
10972         {0x2D, 0, 0, 0, 0},
10973         {0x2E, 0, 0, 0, 0},
10974         {0x2F, 0x1f, 0x1f, 0, 0},
10975         {0x30, 0x15, 0x15, 0, 0},
10976         {0x31, 0xf, 0xf, 0, 0},
10977         {0x32, 0, 0, 0, 0},
10978         {0x33, 0, 0, 0, 0},
10979         {0x34, 0, 0, 0, 0},
10980         {0x35, 0, 0, 0, 0},
10981         {0x36, 0, 0, 0, 0},
10982         {0x37, 0, 0, 0, 0},
10983         {0x38, 0, 0, 0, 0},
10984         {0x39, 0, 0, 0, 0},
10985         {0x3A, 0, 0, 0, 0},
10986         {0x3B, 0, 0, 0, 0},
10987         {0x3C, 0x13, 0x13, 0, 0},
10988         {0x3D, 0xf, 0xf, 0, 0},
10989         {0x3E, 0x18, 0x18, 0, 0},
10990         {0x3F, 0, 0, 0, 0},
10991         {0x40, 0, 0, 0, 0},
10992         {0x41, 0x20, 0x20, 0, 0},
10993         {0x42, 0x20, 0x20, 0, 0},
10994         {0x43, 0, 0, 0, 0},
10995         {0x44, 0x77, 0x77, 0, 0},
10996         {0x45, 0x7, 0x7, 0, 0},
10997         {0x46, 0x1, 0x1, 0, 0},
10998         {0x47, 0x6, 0x6, 1, 1},
10999         {0x48, 0xf, 0xf, 0, 0},
11000         {0x49, 0x3f, 0x3f, 1, 1},
11001         {0x4A, 0x32, 0x32, 0, 0},
11002         {0x4B, 0x6, 0x6, 1, 1},
11003         {0x4C, 0x6, 0x6, 1, 1},
11004         {0x4D, 0x4, 0x4, 0, 0},
11005         {0x4E, 0x2b, 0x2b, 1, 1},
11006         {0x4F, 0x1, 0x1, 0, 0},
11007         {0x50, 0x1c, 0x1c, 0, 0},
11008         {0x51, 0x2, 0x2, 0, 0},
11009         {0x52, 0x2, 0x2, 0, 0},
11010         {0x53, 0xf7, 0xf7, 1, 1},
11011         {0x54, 0xb4, 0xb4, 0, 0},
11012         {0x55, 0xd2, 0xd2, 0, 0},
11013         {0x56, 0, 0, 0, 0},
11014         {0x57, 0, 0, 0, 0},
11015         {0x58, 0x4, 0x4, 0, 0},
11016         {0x59, 0x96, 0x96, 0, 0},
11017         {0x5A, 0x3e, 0x3e, 0, 0},
11018         {0x5B, 0x3e, 0x3e, 0, 0},
11019         {0x5C, 0x13, 0x13, 0, 0},
11020         {0x5D, 0x2, 0x2, 0, 0},
11021         {0x5E, 0, 0, 0, 0},
11022         {0x5F, 0x7, 0x7, 0, 0},
11023         {0x60, 0x7, 0x7, 1, 1},
11024         {0x61, 0x8, 0x8, 0, 0},
11025         {0x62, 0x3, 0x3, 0, 0},
11026         {0x63, 0, 0, 0, 0},
11027         {0x64, 0, 0, 0, 0},
11028         {0x65, 0, 0, 0, 0},
11029         {0x66, 0, 0, 0, 0},
11030         {0x67, 0, 0, 0, 0},
11031         {0x68, 0x40, 0x40, 0, 0},
11032         {0x69, 0, 0, 0, 0},
11033         {0x6A, 0, 0, 0, 0},
11034         {0x6B, 0, 0, 0, 0},
11035         {0x6C, 0, 0, 0, 0},
11036         {0x6D, 0x1, 0x1, 0, 0},
11037         {0x6E, 0, 0, 0, 0},
11038         {0x6F, 0, 0, 0, 0},
11039         {0x70, 0x60, 0x60, 0, 0},
11040         {0x71, 0x66, 0x66, 0, 0},
11041         {0x72, 0xc, 0xc, 0, 0},
11042         {0x73, 0x66, 0x66, 0, 0},
11043         {0x74, 0x8f, 0x8f, 1, 1},
11044         {0x75, 0, 0, 0, 0},
11045         {0x76, 0xcc, 0xcc, 0, 0},
11046         {0x77, 0x1, 0x1, 0, 0},
11047         {0x78, 0x66, 0x66, 0, 0},
11048         {0x79, 0x66, 0x66, 0, 0},
11049         {0x7A, 0, 0, 0, 0},
11050         {0x7B, 0, 0, 0, 0},
11051         {0x7C, 0, 0, 0, 0},
11052         {0x7D, 0, 0, 0, 0},
11053         {0x7E, 0, 0, 0, 0},
11054         {0x7F, 0, 0, 0, 0},
11055         {0x80, 0, 0, 0, 0},
11056         {0x81, 0, 0, 0, 0},
11057         {0x82, 0, 0, 0, 0},
11058         {0x83, 0, 0, 0, 0},
11059         {0x84, 0, 0, 0, 0},
11060         {0x85, 0xff, 0xff, 0, 0},
11061         {0x86, 0, 0, 0, 0},
11062         {0x87, 0, 0, 0, 0},
11063         {0x88, 0, 0, 0, 0},
11064         {0x89, 0, 0, 0, 0},
11065         {0x8A, 0, 0, 0, 0},
11066         {0x8B, 0, 0, 0, 0},
11067         {0x8C, 0, 0, 0, 0},
11068         {0x8D, 0, 0, 0, 0},
11069         {0x8E, 0, 0, 0, 0},
11070         {0x8F, 0, 0, 0, 0},
11071         {0x90, 0, 0, 0, 0},
11072         {0x91, 0, 0, 0, 0},
11073         {0x92, 0, 0, 0, 0},
11074         {0x93, 0, 0, 0, 0},
11075         {0x94, 0, 0, 0, 0},
11076         {0x95, 0, 0, 0, 0},
11077         {0x96, 0, 0, 0, 0},
11078         {0x97, 0, 0, 0, 0},
11079         {0x98, 0, 0, 0, 0},
11080         {0x99, 0, 0, 0, 0},
11081         {0x9A, 0, 0, 0, 0},
11082         {0x9B, 0, 0, 0, 0},
11083         {0x9C, 0, 0, 0, 0},
11084         {0x9D, 0, 0, 0, 0},
11085         {0x9E, 0, 0, 0, 0},
11086         {0x9F, 0x6, 0x6, 0, 0},
11087         {0xA0, 0x66, 0x66, 0, 0},
11088         {0xA1, 0x66, 0x66, 0, 0},
11089         {0xA2, 0x66, 0x66, 0, 0},
11090         {0xA3, 0x66, 0x66, 0, 0},
11091         {0xA4, 0x66, 0x66, 0, 0},
11092         {0xA5, 0x66, 0x66, 0, 0},
11093         {0xA6, 0x66, 0x66, 0, 0},
11094         {0xA7, 0x66, 0x66, 0, 0},
11095         {0xA8, 0x66, 0x66, 0, 0},
11096         {0xA9, 0x66, 0x66, 0, 0},
11097         {0xAA, 0x66, 0x66, 0, 0},
11098         {0xAB, 0x66, 0x66, 0, 0},
11099         {0xAC, 0x66, 0x66, 0, 0},
11100         {0xAD, 0x66, 0x66, 0, 0},
11101         {0xAE, 0x66, 0x66, 0, 0},
11102         {0xAF, 0x66, 0x66, 0, 0},
11103         {0xB0, 0x66, 0x66, 0, 0},
11104         {0xB1, 0x66, 0x66, 0, 0},
11105         {0xB2, 0x66, 0x66, 0, 0},
11106         {0xB3, 0xa, 0xa, 0, 0},
11107         {0xB4, 0, 0, 0, 0},
11108         {0xB5, 0, 0, 0, 0},
11109         {0xB6, 0, 0, 0, 0},
11110         {0xFFFF, 0, 0, 0, 0},
11111 };
11112 
11113 static const struct radio_regs regs_TX_2056_rev11[] = {
11114         {0x02, 0, 0, 0, 0},
11115         {0x03, 0, 0, 0, 0},
11116         {0x04, 0, 0, 0, 0},
11117         {0x05, 0, 0, 0, 0},
11118         {0x06, 0, 0, 0, 0},
11119         {0x07, 0, 0, 0, 0},
11120         {0x08, 0, 0, 0, 0},
11121         {0x09, 0, 0, 0, 0},
11122         {0x0A, 0, 0, 0, 0},
11123         {0x0B, 0, 0, 0, 0},
11124         {0x0C, 0, 0, 0, 0},
11125         {0x0D, 0, 0, 0, 0},
11126         {0x0E, 0, 0, 0, 0},
11127         {0x0F, 0, 0, 0, 0},
11128         {0x10, 0, 0, 0, 0},
11129         {0x11, 0, 0, 0, 0},
11130         {0x12, 0, 0, 0, 0},
11131         {0x13, 0, 0, 0, 0},
11132         {0x14, 0, 0, 0, 0},
11133         {0x15, 0, 0, 0, 0},
11134         {0x16, 0, 0, 0, 0},
11135         {0x17, 0, 0, 0, 0},
11136         {0x18, 0, 0, 0, 0},
11137         {0x19, 0, 0, 0, 0},
11138         {0x1A, 0, 0, 0, 0},
11139         {0x1B, 0, 0, 0, 0},
11140         {0x1C, 0, 0, 0, 0},
11141         {0x1D, 0, 0, 0, 0},
11142         {0x1E, 0, 0, 0, 0},
11143         {0x1F, 0, 0, 0, 0},
11144         {0x20, 0, 0, 0, 0},
11145         {0x21, 0x88, 0x88, 0, 0},
11146         {0x22, 0x88, 0x88, 0, 0},
11147         {0x23, 0x88, 0x88, 0, 0},
11148         {0x24, 0x88, 0x88, 0, 0},
11149         {0x25, 0xc, 0xc, 0, 0},
11150         {0x26, 0, 0, 0, 0},
11151         {0x27, 0x3, 0x3, 0, 0},
11152         {0x28, 0, 0, 0, 0},
11153         {0x29, 0x3, 0x3, 0, 0},
11154         {0x2A, 0x37, 0x37, 0, 0},
11155         {0x2B, 0x3, 0x3, 0, 0},
11156         {0x2C, 0, 0, 0, 0},
11157         {0x2D, 0, 0, 0, 0},
11158         {0x2E, 0x1, 0x1, 0, 0},
11159         {0x2F, 0x1, 0x1, 0, 0},
11160         {0x30, 0, 0, 0, 0},
11161         {0x31, 0, 0, 0, 0},
11162         {0x32, 0, 0, 0, 0},
11163         {0x33, 0x11, 0x11, 0, 0},
11164         {0x34, 0xee, 0xee, 1, 1},
11165         {0x35, 0, 0, 0, 0},
11166         {0x36, 0, 0, 0, 0},
11167         {0x37, 0x3, 0x3, 0, 0},
11168         {0x38, 0x50, 0x50, 1, 1},
11169         {0x39, 0, 0, 0, 0},
11170         {0x3A, 0x50, 0x50, 1, 1},
11171         {0x3B, 0, 0, 0, 0},
11172         {0x3C, 0x6e, 0x6e, 0, 0},
11173         {0x3D, 0xf0, 0xf0, 1, 1},
11174         {0x3E, 0, 0, 0, 0},
11175         {0x3F, 0, 0, 0, 0},
11176         {0x40, 0, 0, 0, 0},
11177         {0x41, 0x3, 0x3, 0, 0},
11178         {0x42, 0x3, 0x3, 0, 0},
11179         {0x43, 0, 0, 0, 0},
11180         {0x44, 0x1e, 0x1e, 0, 0},
11181         {0x45, 0, 0, 0, 0},
11182         {0x46, 0x6e, 0x6e, 0, 0},
11183         {0x47, 0xf0, 0xf0, 1, 1},
11184         {0x48, 0, 0, 0, 0},
11185         {0x49, 0x2, 0x2, 0, 0},
11186         {0x4A, 0xff, 0xff, 1, 1},
11187         {0x4B, 0xc, 0xc, 0, 0},
11188         {0x4C, 0, 0, 0, 0},
11189         {0x4D, 0x38, 0x38, 0, 0},
11190         {0x4E, 0x70, 0x70, 1, 1},
11191         {0x4F, 0x2, 0x2, 0, 0},
11192         {0x50, 0x88, 0x88, 0, 0},
11193         {0x51, 0xc, 0xc, 0, 0},
11194         {0x52, 0, 0, 0, 0},
11195         {0x53, 0x8, 0x8, 0, 0},
11196         {0x54, 0x70, 0x70, 1, 1},
11197         {0x55, 0x2, 0x2, 0, 0},
11198         {0x56, 0xff, 0xff, 1, 1},
11199         {0x57, 0, 0, 0, 0},
11200         {0x58, 0x83, 0x83, 0, 0},
11201         {0x59, 0x77, 0x77, 1, 1},
11202         {0x5A, 0, 0, 0, 0},
11203         {0x5B, 0x2, 0x2, 0, 0},
11204         {0x5C, 0x88, 0x88, 0, 0},
11205         {0x5D, 0, 0, 0, 0},
11206         {0x5E, 0x8, 0x8, 0, 0},
11207         {0x5F, 0x77, 0x77, 1, 1},
11208         {0x60, 0x1, 0x1, 0, 0},
11209         {0x61, 0, 0, 0, 0},
11210         {0x62, 0x7, 0x7, 0, 0},
11211         {0x63, 0, 0, 0, 0},
11212         {0x64, 0x7, 0x7, 0, 0},
11213         {0x65, 0, 0, 0, 0},
11214         {0x66, 0, 0, 0, 0},
11215         {0x67, 0, 0, 1, 1},
11216         {0x68, 0, 0, 0, 0},
11217         {0x69, 0xa, 0xa, 0, 0},
11218         {0x6A, 0, 0, 0, 0},
11219         {0x6B, 0, 0, 0, 0},
11220         {0x6C, 0, 0, 0, 0},
11221         {0x6D, 0, 0, 0, 0},
11222         {0x6E, 0, 0, 0, 0},
11223         {0x6F, 0, 0, 0, 0},
11224         {0x70, 0, 0, 0, 0},
11225         {0x71, 0x2, 0x2, 0, 0},
11226         {0x72, 0, 0, 0, 0},
11227         {0x73, 0, 0, 0, 0},
11228         {0x74, 0xe, 0xe, 0, 0},
11229         {0x75, 0xe, 0xe, 0, 0},
11230         {0x76, 0xe, 0xe, 0, 0},
11231         {0x77, 0x13, 0x13, 0, 0},
11232         {0x78, 0x13, 0x13, 0, 0},
11233         {0x79, 0x1b, 0x1b, 0, 0},
11234         {0x7A, 0x1b, 0x1b, 0, 0},
11235         {0x7B, 0x55, 0x55, 0, 0},
11236         {0x7C, 0x5b, 0x5b, 0, 0},
11237         {0x7D, 0x30, 0x30, 1, 1},
11238         {0x7E, 0, 0, 0, 0},
11239         {0x7F, 0, 0, 0, 0},
11240         {0x80, 0, 0, 0, 0},
11241         {0x81, 0, 0, 0, 0},
11242         {0x82, 0, 0, 0, 0},
11243         {0x83, 0, 0, 0, 0},
11244         {0x84, 0, 0, 0, 0},
11245         {0x85, 0, 0, 0, 0},
11246         {0x86, 0, 0, 0, 0},
11247         {0x87, 0, 0, 0, 0},
11248         {0x88, 0, 0, 0, 0},
11249         {0x89, 0, 0, 0, 0},
11250         {0x8A, 0, 0, 0, 0},
11251         {0x8B, 0, 0, 0, 0},
11252         {0x8C, 0, 0, 0, 0},
11253         {0x8D, 0, 0, 0, 0},
11254         {0x8E, 0, 0, 0, 0},
11255         {0x8F, 0, 0, 0, 0},
11256         {0x90, 0, 0, 0, 0},
11257         {0x91, 0, 0, 0, 0},
11258         {0x92, 0, 0, 0, 0},
11259         {0x93, 0x70, 0x70, 0, 0},
11260         {0x94, 0x70, 0x70, 0, 0},
11261         {0x95, 0x70, 0x70, 0, 0},
11262         {0x96, 0x70, 0x70, 0, 0},
11263         {0x97, 0x70, 0x70, 0, 0},
11264         {0x98, 0x70, 0x70, 0, 0},
11265         {0x99, 0x70, 0x70, 0, 0},
11266         {0x9A, 0x70, 0x70, 0, 0},
11267         {0xFFFF, 0, 0, 0, 0},
11268 };
11269 
11270 static const struct radio_regs regs_RX_2056_rev11[] = {
11271         {0x02, 0, 0, 0, 0},
11272         {0x03, 0, 0, 0, 0},
11273         {0x04, 0, 0, 0, 0},
11274         {0x05, 0, 0, 0, 0},
11275         {0x06, 0, 0, 0, 0},
11276         {0x07, 0, 0, 0, 0},
11277         {0x08, 0, 0, 0, 0},
11278         {0x09, 0, 0, 0, 0},
11279         {0x0A, 0, 0, 0, 0},
11280         {0x0B, 0, 0, 0, 0},
11281         {0x0C, 0, 0, 0, 0},
11282         {0x0D, 0, 0, 0, 0},
11283         {0x0E, 0, 0, 0, 0},
11284         {0x0F, 0, 0, 0, 0},
11285         {0x10, 0, 0, 0, 0},
11286         {0x11, 0, 0, 0, 0},
11287         {0x12, 0, 0, 0, 0},
11288         {0x13, 0, 0, 0, 0},
11289         {0x14, 0, 0, 0, 0},
11290         {0x15, 0, 0, 0, 0},
11291         {0x16, 0, 0, 0, 0},
11292         {0x17, 0, 0, 0, 0},
11293         {0x18, 0, 0, 0, 0},
11294         {0x19, 0, 0, 0, 0},
11295         {0x1A, 0, 0, 0, 0},
11296         {0x1B, 0, 0, 0, 0},
11297         {0x1C, 0, 0, 0, 0},
11298         {0x1D, 0, 0, 0, 0},
11299         {0x1E, 0, 0, 0, 0},
11300         {0x1F, 0, 0, 0, 0},
11301         {0x20, 0x3, 0x3, 0, 0},
11302         {0x21, 0, 0, 0, 0},
11303         {0x22, 0, 0, 0, 0},
11304         {0x23, 0x90, 0x90, 0, 0},
11305         {0x24, 0x55, 0x55, 0, 0},
11306         {0x25, 0x15, 0x15, 0, 0},
11307         {0x26, 0x5, 0x5, 0, 0},
11308         {0x27, 0x15, 0x15, 0, 0},
11309         {0x28, 0x5, 0x5, 0, 0},
11310         {0x29, 0x20, 0x20, 0, 0},
11311         {0x2A, 0x11, 0x11, 0, 0},
11312         {0x2B, 0x90, 0x90, 0, 0},
11313         {0x2C, 0, 0, 0, 0},
11314         {0x2D, 0x88, 0x88, 0, 0},
11315         {0x2E, 0x32, 0x32, 0, 0},
11316         {0x2F, 0x77, 0x77, 0, 0},
11317         {0x30, 0x17, 0x17, 1, 1},
11318         {0x31, 0xff, 0xff, 1, 1},
11319         {0x32, 0x20, 0x20, 0, 0},
11320         {0x33, 0, 0, 0, 0},
11321         {0x34, 0x88, 0x88, 0, 0},
11322         {0x35, 0x32, 0x32, 0, 0},
11323         {0x36, 0x77, 0x77, 0, 0},
11324         {0x37, 0x17, 0x17, 1, 1},
11325         {0x38, 0xf0, 0xf0, 1, 1},
11326         {0x39, 0x20, 0x20, 0, 0},
11327         {0x3A, 0x8, 0x8, 0, 0},
11328         {0x3B, 0x55, 0x55, 1, 1},
11329         {0x3C, 0, 0, 0, 0},
11330         {0x3D, 0x88, 0x88, 1, 1},
11331         {0x3E, 0, 0, 0, 0},
11332         {0x3F, 0x44, 0x44, 0, 0},
11333         {0x40, 0x7, 0x7, 1, 1},
11334         {0x41, 0x6, 0x6, 0, 0},
11335         {0x42, 0x4, 0x4, 0, 0},
11336         {0x43, 0, 0, 0, 0},
11337         {0x44, 0x8, 0x8, 0, 0},
11338         {0x45, 0x55, 0x55, 1, 1},
11339         {0x46, 0, 0, 0, 0},
11340         {0x47, 0x11, 0x11, 0, 0},
11341         {0x48, 0, 0, 0, 0},
11342         {0x49, 0x44, 0x44, 0, 0},
11343         {0x4A, 0x7, 0x7, 0, 0},
11344         {0x4B, 0x6, 0x6, 0, 0},
11345         {0x4C, 0x4, 0x4, 0, 0},
11346         {0x4D, 0, 0, 0, 0},
11347         {0x4E, 0, 0, 0, 0},
11348         {0x4F, 0x26, 0x26, 1, 1},
11349         {0x50, 0x26, 0x26, 1, 1},
11350         {0x51, 0xf, 0xf, 1, 1},
11351         {0x52, 0xf, 0xf, 1, 1},
11352         {0x53, 0x44, 0x44, 0, 0},
11353         {0x54, 0, 0, 0, 0},
11354         {0x55, 0, 0, 0, 0},
11355         {0x56, 0x8, 0x8, 0, 0},
11356         {0x57, 0x8, 0x8, 0, 0},
11357         {0x58, 0x7, 0x7, 0, 0},
11358         {0x59, 0x22, 0x22, 0, 0},
11359         {0x5A, 0x22, 0x22, 0, 0},
11360         {0x5B, 0x2, 0x2, 0, 0},
11361         {0x5C, 0x4, 0x4, 1, 1},
11362         {0x5D, 0x7, 0x7, 0, 0},
11363         {0x5E, 0x55, 0x55, 0, 0},
11364         {0x5F, 0x23, 0x23, 0, 0},
11365         {0x60, 0x41, 0x41, 0, 0},
11366         {0x61, 0x1, 0x1, 0, 0},
11367         {0x62, 0xa, 0xa, 0, 0},
11368         {0x63, 0, 0, 0, 0},
11369         {0x64, 0, 0, 0, 0},
11370         {0x65, 0, 0, 0, 0},
11371         {0x66, 0, 0, 0, 0},
11372         {0x67, 0, 0, 0, 0},
11373         {0x68, 0, 0, 0, 0},
11374         {0x69, 0, 0, 0, 0},
11375         {0x6A, 0, 0, 0, 0},
11376         {0x6B, 0xc, 0xc, 0, 0},
11377         {0x6C, 0, 0, 0, 0},
11378         {0x6D, 0, 0, 0, 0},
11379         {0x6E, 0, 0, 0, 0},
11380         {0x6F, 0, 0, 0, 0},
11381         {0x70, 0, 0, 0, 0},
11382         {0x71, 0, 0, 0, 0},
11383         {0x72, 0x22, 0x22, 0, 0},
11384         {0x73, 0x22, 0x22, 0, 0},
11385         {0x74, 0, 0, 1, 1},
11386         {0x75, 0xa, 0xa, 0, 0},
11387         {0x76, 0x1, 0x1, 0, 0},
11388         {0x77, 0x22, 0x22, 0, 0},
11389         {0x78, 0x30, 0x30, 0, 0},
11390         {0x79, 0, 0, 0, 0},
11391         {0x7A, 0, 0, 0, 0},
11392         {0x7B, 0, 0, 0, 0},
11393         {0x7C, 0, 0, 0, 0},
11394         {0x7D, 0x5, 0x5, 1, 1},
11395         {0x7E, 0, 0, 0, 0},
11396         {0x7F, 0, 0, 0, 0},
11397         {0x80, 0, 0, 0, 0},
11398         {0x81, 0, 0, 0, 0},
11399         {0x82, 0, 0, 0, 0},
11400         {0x83, 0, 0, 0, 0},
11401         {0x84, 0, 0, 0, 0},
11402         {0x85, 0, 0, 0, 0},
11403         {0x86, 0, 0, 0, 0},
11404         {0x87, 0, 0, 0, 0},
11405         {0x88, 0, 0, 0, 0},
11406         {0x89, 0, 0, 0, 0},
11407         {0x8A, 0, 0, 0, 0},
11408         {0x8B, 0, 0, 0, 0},
11409         {0x8C, 0, 0, 0, 0},
11410         {0x8D, 0, 0, 0, 0},
11411         {0x8E, 0, 0, 0, 0},
11412         {0x8F, 0, 0, 0, 0},
11413         {0x90, 0, 0, 0, 0},
11414         {0x91, 0, 0, 0, 0},
11415         {0x92, 0, 0, 0, 0},
11416         {0x93, 0, 0, 0, 0},
11417         {0x94, 0, 0, 0, 0},
11418         {0xFFFF, 0, 0, 0, 0},
11419 };
11420 
11421 static struct radio_20xx_regs regs_2057_rev4[] = {
11422         {0x00, 0x84, 0},
11423         {0x01, 0, 0},
11424         {0x02, 0x60, 0},
11425         {0x03, 0x1f, 0},
11426         {0x04, 0x4, 0},
11427         {0x05, 0x2, 0},
11428         {0x06, 0x1, 0},
11429         {0x07, 0x1, 0},
11430         {0x08, 0x1, 0},
11431         {0x09, 0x69, 0},
11432         {0x0A, 0x66, 0},
11433         {0x0B, 0x6, 0},
11434         {0x0C, 0x18, 0},
11435         {0x0D, 0x3, 0},
11436         {0x0E, 0x20, 1},
11437         {0x0F, 0x20, 0},
11438         {0x10, 0, 0},
11439         {0x11, 0x7c, 0},
11440         {0x12, 0x42, 0},
11441         {0x13, 0xbd, 0},
11442         {0x14, 0x7, 0},
11443         {0x15, 0xf7, 0},
11444         {0x16, 0x8, 0},
11445         {0x17, 0x17, 0},
11446         {0x18, 0x7, 0},
11447         {0x19, 0, 0},
11448         {0x1A, 0x2, 0},
11449         {0x1B, 0x13, 0},
11450         {0x1C, 0x3e, 0},
11451         {0x1D, 0x3e, 0},
11452         {0x1E, 0x96, 0},
11453         {0x1F, 0x4, 0},
11454         {0x20, 0, 0},
11455         {0x21, 0, 0},
11456         {0x22, 0x17, 0},
11457         {0x23, 0x4, 0},
11458         {0x24, 0x1, 0},
11459         {0x25, 0x6, 0},
11460         {0x26, 0x4, 0},
11461         {0x27, 0xd, 0},
11462         {0x28, 0xd, 0},
11463         {0x29, 0x30, 0},
11464         {0x2A, 0x32, 0},
11465         {0x2B, 0x8, 0},
11466         {0x2C, 0x1c, 0},
11467         {0x2D, 0x2, 0},
11468         {0x2E, 0x4, 0},
11469         {0x2F, 0x7f, 0},
11470         {0x30, 0x27, 0},
11471         {0x31, 0, 1},
11472         {0x32, 0, 1},
11473         {0x33, 0, 1},
11474         {0x34, 0, 0},
11475         {0x35, 0x26, 1},
11476         {0x36, 0x18, 0},
11477         {0x37, 0x7, 0},
11478         {0x38, 0x66, 0},
11479         {0x39, 0x66, 0},
11480         {0x3A, 0x66, 0},
11481         {0x3B, 0x66, 0},
11482         {0x3C, 0xff, 1},
11483         {0x3D, 0xff, 1},
11484         {0x3E, 0xff, 1},
11485         {0x3F, 0xff, 1},
11486         {0x40, 0x16, 0},
11487         {0x41, 0x7, 0},
11488         {0x42, 0x19, 0},
11489         {0x43, 0x7, 0},
11490         {0x44, 0x6, 0},
11491         {0x45, 0x3, 0},
11492         {0x46, 0x1, 0},
11493         {0x47, 0x7, 0},
11494         {0x48, 0x33, 0},
11495         {0x49, 0x5, 0},
11496         {0x4A, 0x77, 0},
11497         {0x4B, 0x66, 0},
11498         {0x4C, 0x66, 0},
11499         {0x4D, 0, 0},
11500         {0x4E, 0x4, 0},
11501         {0x4F, 0xc, 0},
11502         {0x50, 0, 0},
11503         {0x51, 0x75, 0},
11504         {0x56, 0x7, 0},
11505         {0x57, 0, 0},
11506         {0x58, 0, 0},
11507         {0x59, 0xa8, 0},
11508         {0x5A, 0, 0},
11509         {0x5B, 0x1f, 0},
11510         {0x5C, 0x30, 0},
11511         {0x5D, 0x1, 0},
11512         {0x5E, 0x30, 0},
11513         {0x5F, 0x70, 0},
11514         {0x60, 0, 0},
11515         {0x61, 0, 0},
11516         {0x62, 0x33, 1},
11517         {0x63, 0x19, 0},
11518         {0x64, 0x62, 0},
11519         {0x65, 0, 0},
11520         {0x66, 0x11, 0},
11521         {0x69, 0, 0},
11522         {0x6A, 0x7e, 0},
11523         {0x6B, 0x3f, 0},
11524         {0x6C, 0x7f, 0},
11525         {0x6D, 0x78, 0},
11526         {0x6E, 0xc8, 0},
11527         {0x6F, 0x88, 0},
11528         {0x70, 0x8, 0},
11529         {0x71, 0xf, 0},
11530         {0x72, 0xbc, 0},
11531         {0x73, 0x8, 0},
11532         {0x74, 0x60, 0},
11533         {0x75, 0x1e, 0},
11534         {0x76, 0x70, 0},
11535         {0x77, 0, 0},
11536         {0x78, 0, 0},
11537         {0x79, 0, 0},
11538         {0x7A, 0x33, 0},
11539         {0x7B, 0x1e, 0},
11540         {0x7C, 0x62, 0},
11541         {0x7D, 0x11, 0},
11542         {0x80, 0x3c, 0},
11543         {0x81, 0x9c, 0},
11544         {0x82, 0xa, 0},
11545         {0x83, 0x9d, 0},
11546         {0x84, 0xa, 0},
11547         {0x85, 0, 0},
11548         {0x86, 0x40, 0},
11549         {0x87, 0x40, 0},
11550         {0x88, 0x88, 0},
11551         {0x89, 0x10, 0},
11552         {0x8A, 0xf0, 1},
11553         {0x8B, 0x10, 1},
11554         {0x8C, 0xf0, 1},
11555         {0x8D, 0, 0},
11556         {0x8E, 0, 0},
11557         {0x8F, 0x10, 0},
11558         {0x90, 0x55, 0},
11559         {0x91, 0x3f, 1},
11560         {0x92, 0x36, 1},
11561         {0x93, 0, 0},
11562         {0x94, 0, 0},
11563         {0x95, 0, 0},
11564         {0x96, 0x87, 0},
11565         {0x97, 0x11, 0},
11566         {0x98, 0, 0},
11567         {0x99, 0x33, 0},
11568         {0x9A, 0x88, 0},
11569         {0x9B, 0, 0},
11570         {0x9C, 0x87, 0},
11571         {0x9D, 0x11, 0},
11572         {0x9E, 0, 0},
11573         {0x9F, 0x33, 0},
11574         {0xA0, 0x88, 0},
11575         {0xA1, 0xe1, 0},
11576         {0xA2, 0x3f, 0},
11577         {0xA3, 0x44, 0},
11578         {0xA4, 0x8c, 1},
11579         {0xA5, 0x6d, 0},
11580         {0xA6, 0x22, 0},
11581         {0xA7, 0xbe, 0},
11582         {0xA8, 0x55, 1},
11583         {0xA9, 0xc, 0},
11584         {0xAA, 0xc, 0},
11585         {0xAB, 0xaa, 0},
11586         {0xAC, 0x2, 0},
11587         {0xAD, 0, 0},
11588         {0xAE, 0x10, 0},
11589         {0xAF, 0x1, 1},
11590         {0xB0, 0, 0},
11591         {0xB1, 0, 0},
11592         {0xB2, 0x80, 0},
11593         {0xB3, 0x60, 0},
11594         {0xB4, 0x44, 0},
11595         {0xB5, 0x55, 0},
11596         {0xB6, 0x1, 0},
11597         {0xB7, 0x55, 0},
11598         {0xB8, 0x1, 0},
11599         {0xB9, 0x5, 0},
11600         {0xBA, 0x55, 0},
11601         {0xBB, 0x55, 0},
11602         {0xC1, 0, 0},
11603         {0xC2, 0, 0},
11604         {0xC3, 0, 0},
11605         {0xC4, 0, 0},
11606         {0xC5, 0, 0},
11607         {0xC6, 0, 0},
11608         {0xC7, 0, 0},
11609         {0xC8, 0, 0},
11610         {0xC9, 0, 0},
11611         {0xCA, 0, 0},
11612         {0xCB, 0, 0},
11613         {0xCC, 0, 0},
11614         {0xCD, 0, 0},
11615         {0xCE, 0x5e, 0},
11616         {0xCF, 0xc, 0},
11617         {0xD0, 0xc, 0},
11618         {0xD1, 0xc, 0},
11619         {0xD2, 0, 0},
11620         {0xD3, 0x2b, 0},
11621         {0xD4, 0xc, 0},
11622         {0xD5, 0, 0},
11623         {0xD6, 0x75, 0},
11624         {0xDB, 0x7, 0},
11625         {0xDC, 0, 0},
11626         {0xDD, 0, 0},
11627         {0xDE, 0xa8, 0},
11628         {0xDF, 0, 0},
11629         {0xE0, 0x1f, 0},
11630         {0xE1, 0x30, 0},
11631         {0xE2, 0x1, 0},
11632         {0xE3, 0x30, 0},
11633         {0xE4, 0x70, 0},
11634         {0xE5, 0, 0},
11635         {0xE6, 0, 0},
11636         {0xE7, 0x33, 0},
11637         {0xE8, 0x19, 0},
11638         {0xE9, 0x62, 0},
11639         {0xEA, 0, 0},
11640         {0xEB, 0x11, 0},
11641         {0xEE, 0, 0},
11642         {0xEF, 0x7e, 0},
11643         {0xF0, 0x3f, 0},
11644         {0xF1, 0x7f, 0},
11645         {0xF2, 0x78, 0},
11646         {0xF3, 0xc8, 0},
11647         {0xF4, 0x88, 0},
11648         {0xF5, 0x8, 0},
11649         {0xF6, 0xf, 0},
11650         {0xF7, 0xbc, 0},
11651         {0xF8, 0x8, 0},
11652         {0xF9, 0x60, 0},
11653         {0xFA, 0x1e, 0},
11654         {0xFB, 0x70, 0},
11655         {0xFC, 0, 0},
11656         {0xFD, 0, 0},
11657         {0xFE, 0, 0},
11658         {0xFF, 0x33, 0},
11659         {0x100, 0x1e, 0},
11660         {0x101, 0x62, 0},
11661         {0x102, 0x11, 0},
11662         {0x105, 0x3c, 0},
11663         {0x106, 0x9c, 0},
11664         {0x107, 0xa, 0},
11665         {0x108, 0x9d, 0},
11666         {0x109, 0xa, 0},
11667         {0x10A, 0, 0},
11668         {0x10B, 0x40, 0},
11669         {0x10C, 0x40, 0},
11670         {0x10D, 0x88, 0},
11671         {0x10E, 0x10, 0},
11672         {0x10F, 0xf0, 1},
11673         {0x110, 0x10, 1},
11674         {0x111, 0xf0, 1},
11675         {0x112, 0, 0},
11676         {0x113, 0, 0},
11677         {0x114, 0x10, 0},
11678         {0x115, 0x55, 0},
11679         {0x116, 0x3f, 1},
11680         {0x117, 0x36, 1},
11681         {0x118, 0, 0},
11682         {0x119, 0, 0},
11683         {0x11A, 0, 0},
11684         {0x11B, 0x87, 0},
11685         {0x11C, 0x11, 0},
11686         {0x11D, 0, 0},
11687         {0x11E, 0x33, 0},
11688         {0x11F, 0x88, 0},
11689         {0x120, 0, 0},
11690         {0x121, 0x87, 0},
11691         {0x122, 0x11, 0},
11692         {0x123, 0, 0},
11693         {0x124, 0x33, 0},
11694         {0x125, 0x88, 0},
11695         {0x126, 0xe1, 0},
11696         {0x127, 0x3f, 0},
11697         {0x128, 0x44, 0},
11698         {0x129, 0x8c, 1},
11699         {0x12A, 0x6d, 0},
11700         {0x12B, 0x22, 0},
11701         {0x12C, 0xbe, 0},
11702         {0x12D, 0x55, 1},
11703         {0x12E, 0xc, 0},
11704         {0x12F, 0xc, 0},
11705         {0x130, 0xaa, 0},
11706         {0x131, 0x2, 0},
11707         {0x132, 0, 0},
11708         {0x133, 0x10, 0},
11709         {0x134, 0x1, 1},
11710         {0x135, 0, 0},
11711         {0x136, 0, 0},
11712         {0x137, 0x80, 0},
11713         {0x138, 0x60, 0},
11714         {0x139, 0x44, 0},
11715         {0x13A, 0x55, 0},
11716         {0x13B, 0x1, 0},
11717         {0x13C, 0x55, 0},
11718         {0x13D, 0x1, 0},
11719         {0x13E, 0x5, 0},
11720         {0x13F, 0x55, 0},
11721         {0x140, 0x55, 0},
11722         {0x146, 0, 0},
11723         {0x147, 0, 0},
11724         {0x148, 0, 0},
11725         {0x149, 0, 0},
11726         {0x14A, 0, 0},
11727         {0x14B, 0, 0},
11728         {0x14C, 0, 0},
11729         {0x14D, 0, 0},
11730         {0x14E, 0, 0},
11731         {0x14F, 0, 0},
11732         {0x150, 0, 0},
11733         {0x151, 0, 0},
11734         {0x152, 0, 0},
11735         {0x153, 0, 0},
11736         {0x154, 0xc, 0},
11737         {0x155, 0xc, 0},
11738         {0x156, 0xc, 0},
11739         {0x157, 0, 0},
11740         {0x158, 0x2b, 0},
11741         {0x159, 0x84, 0},
11742         {0x15A, 0x15, 0},
11743         {0x15B, 0xf, 0},
11744         {0x15C, 0, 0},
11745         {0x15D, 0, 0},
11746         {0x15E, 0, 1},
11747         {0x15F, 0, 1},
11748         {0x160, 0, 1},
11749         {0x161, 0, 1},
11750         {0x162, 0, 1},
11751         {0x163, 0, 1},
11752         {0x164, 0, 0},
11753         {0x165, 0, 0},
11754         {0x166, 0, 0},
11755         {0x167, 0, 0},
11756         {0x168, 0, 0},
11757         {0x169, 0x2, 1},
11758         {0x16A, 0, 1},
11759         {0x16B, 0, 1},
11760         {0x16C, 0, 1},
11761         {0x16D, 0, 0},
11762         {0x170, 0, 0},
11763         {0x171, 0x77, 0},
11764         {0x172, 0x77, 0},
11765         {0x173, 0x77, 0},
11766         {0x174, 0x77, 0},
11767         {0x175, 0, 0},
11768         {0x176, 0x3, 0},
11769         {0x177, 0x37, 0},
11770         {0x178, 0x3, 0},
11771         {0x179, 0, 0},
11772         {0x17A, 0x21, 0},
11773         {0x17B, 0x21, 0},
11774         {0x17C, 0, 0},
11775         {0x17D, 0xaa, 0},
11776         {0x17E, 0, 0},
11777         {0x17F, 0xaa, 0},
11778         {0x180, 0, 0},
11779         {0x190, 0, 0},
11780         {0x191, 0x77, 0},
11781         {0x192, 0x77, 0},
11782         {0x193, 0x77, 0},
11783         {0x194, 0x77, 0},
11784         {0x195, 0, 0},
11785         {0x196, 0x3, 0},
11786         {0x197, 0x37, 0},
11787         {0x198, 0x3, 0},
11788         {0x199, 0, 0},
11789         {0x19A, 0x21, 0},
11790         {0x19B, 0x21, 0},
11791         {0x19C, 0, 0},
11792         {0x19D, 0xaa, 0},
11793         {0x19E, 0, 0},
11794         {0x19F, 0xaa, 0},
11795         {0x1A0, 0, 0},
11796         {0x1A1, 0x2, 0},
11797         {0x1A2, 0xf, 0},
11798         {0x1A3, 0xf, 0},
11799         {0x1A4, 0, 1},
11800         {0x1A5, 0, 1},
11801         {0x1A6, 0, 1},
11802         {0x1A7, 0x2, 0},
11803         {0x1A8, 0xf, 0},
11804         {0x1A9, 0xf, 0},
11805         {0x1AA, 0, 1},
11806         {0x1AB, 0, 1},
11807         {0x1AC, 0, 1},
11808         {0xFFFF, 0, 0},
11809 };
11810 
11811 static struct radio_20xx_regs regs_2057_rev5[] = {
11812         {0x00, 0, 1},
11813         {0x01, 0x57, 1},
11814         {0x02, 0x20, 1},
11815         {0x03, 0x1f, 0},
11816         {0x04, 0x4, 0},
11817         {0x05, 0x2, 0},
11818         {0x06, 0x1, 0},
11819         {0x07, 0x1, 0},
11820         {0x08, 0x1, 0},
11821         {0x09, 0x69, 0},
11822         {0x0A, 0x66, 0},
11823         {0x0B, 0x6, 0},
11824         {0x0C, 0x18, 0},
11825         {0x0D, 0x3, 0},
11826         {0x0E, 0x20, 0},
11827         {0x0F, 0x20, 0},
11828         {0x10, 0, 0},
11829         {0x11, 0x7c, 0},
11830         {0x12, 0x42, 0},
11831         {0x13, 0xbd, 0},
11832         {0x14, 0x7, 0},
11833         {0x15, 0x87, 0},
11834         {0x16, 0x8, 0},
11835         {0x17, 0x17, 0},
11836         {0x18, 0x7, 0},
11837         {0x19, 0, 0},
11838         {0x1A, 0x2, 0},
11839         {0x1B, 0x13, 0},
11840         {0x1C, 0x3e, 0},
11841         {0x1D, 0x3e, 0},
11842         {0x1E, 0x96, 0},
11843         {0x1F, 0x4, 0},
11844         {0x20, 0, 0},
11845         {0x21, 0, 0},
11846         {0x22, 0x17, 0},
11847         {0x23, 0x6, 1},
11848         {0x24, 0x1, 0},
11849         {0x25, 0x6, 0},
11850         {0x26, 0x4, 0},
11851         {0x27, 0xd, 0},
11852         {0x28, 0xd, 0},
11853         {0x29, 0x30, 0},
11854         {0x2A, 0x32, 0},
11855         {0x2B, 0x8, 0},
11856         {0x2C, 0x1c, 0},
11857         {0x2D, 0x2, 0},
11858         {0x2E, 0x4, 0},
11859         {0x2F, 0x7f, 0},
11860         {0x30, 0x27, 0},
11861         {0x31, 0, 1},
11862         {0x32, 0, 1},
11863         {0x33, 0, 1},
11864         {0x34, 0, 0},
11865         {0x35, 0x20, 0},
11866         {0x36, 0x18, 0},
11867         {0x37, 0x7, 0},
11868         {0x38, 0x66, 0},
11869         {0x39, 0x66, 0},
11870         {0x3C, 0xff, 0},
11871         {0x3D, 0xff, 0},
11872         {0x40, 0x16, 0},
11873         {0x41, 0x7, 0},
11874         {0x45, 0x3, 0},
11875         {0x46, 0x1, 0},
11876         {0x47, 0x7, 0},
11877         {0x4B, 0x66, 0},
11878         {0x4C, 0x66, 0},
11879         {0x4D, 0, 0},
11880         {0x4E, 0x4, 0},
11881         {0x4F, 0xc, 0},
11882         {0x50, 0, 0},
11883         {0x51, 0x70, 1},
11884         {0x56, 0x7, 0},
11885         {0x57, 0, 0},
11886         {0x58, 0, 0},
11887         {0x59, 0x88, 1},
11888         {0x5A, 0, 0},
11889         {0x5B, 0x1f, 0},
11890         {0x5C, 0x20, 1},
11891         {0x5D, 0x1, 0},
11892         {0x5E, 0x30, 0},
11893         {0x5F, 0x70, 0},
11894         {0x60, 0, 0},
11895         {0x61, 0, 0},
11896         {0x62, 0x33, 1},
11897         {0x63, 0xf, 1},
11898         {0x64, 0xf, 1},
11899         {0x65, 0, 0},
11900         {0x66, 0x11, 0},
11901         {0x80, 0x3c, 0},
11902         {0x81, 0x1, 1},
11903         {0x82, 0xa, 0},
11904         {0x85, 0, 0},
11905         {0x86, 0x40, 0},
11906         {0x87, 0x40, 0},
11907         {0x88, 0x88, 0},
11908         {0x89, 0x10, 0},
11909         {0x8A, 0xf0, 0},
11910         {0x8B, 0x10, 0},
11911         {0x8C, 0xf0, 0},
11912         {0x8F, 0x10, 0},
11913         {0x90, 0x55, 0},
11914         {0x91, 0x3f, 1},
11915         {0x92, 0x36, 1},
11916         {0x93, 0, 0},
11917         {0x94, 0, 0},
11918         {0x95, 0, 0},
11919         {0x96, 0x87, 0},
11920         {0x97, 0x11, 0},
11921         {0x98, 0, 0},
11922         {0x99, 0x33, 0},
11923         {0x9A, 0x88, 0},
11924         {0xA1, 0x20, 1},
11925         {0xA2, 0x3f, 0},
11926         {0xA3, 0x44, 0},
11927         {0xA4, 0x8c, 0},
11928         {0xA5, 0x6c, 0},
11929         {0xA6, 0x22, 0},
11930         {0xA7, 0xbe, 0},
11931         {0xA8, 0x55, 0},
11932         {0xAA, 0xc, 0},
11933         {0xAB, 0xaa, 0},
11934         {0xAC, 0x2, 0},
11935         {0xAD, 0, 0},
11936         {0xAE, 0x10, 0},
11937         {0xAF, 0x1, 0},
11938         {0xB0, 0, 0},
11939         {0xB1, 0, 0},
11940         {0xB2, 0x80, 0},
11941         {0xB3, 0x60, 0},
11942         {0xB4, 0x44, 0},
11943         {0xB5, 0x55, 0},
11944         {0xB6, 0x1, 0},
11945         {0xB7, 0x55, 0},
11946         {0xB8, 0x1, 0},
11947         {0xB9, 0x5, 0},
11948         {0xBA, 0x55, 0},
11949         {0xBB, 0x55, 0},
11950         {0xC3, 0, 0},
11951         {0xC4, 0, 0},
11952         {0xC5, 0, 0},
11953         {0xC6, 0, 0},
11954         {0xC7, 0, 0},
11955         {0xC8, 0, 0},
11956         {0xC9, 0, 0},
11957         {0xCA, 0, 0},
11958         {0xCB, 0, 0},
11959         {0xCD, 0, 0},
11960         {0xCE, 0x5e, 0},
11961         {0xCF, 0xc, 0},
11962         {0xD0, 0xc, 0},
11963         {0xD1, 0xc, 0},
11964         {0xD2, 0, 0},
11965         {0xD3, 0x2b, 0},
11966         {0xD4, 0xc, 0},
11967         {0xD5, 0, 0},
11968         {0xD6, 0x70, 1},
11969         {0xDB, 0x7, 0},
11970         {0xDC, 0, 0},
11971         {0xDD, 0, 0},
11972         {0xDE, 0x88, 1},
11973         {0xDF, 0, 0},
11974         {0xE0, 0x1f, 0},
11975         {0xE1, 0x20, 1},
11976         {0xE2, 0x1, 0},
11977         {0xE3, 0x30, 0},
11978         {0xE4, 0x70, 0},
11979         {0xE5, 0, 0},
11980         {0xE6, 0, 0},
11981         {0xE7, 0x33, 0},
11982         {0xE8, 0xf, 1},
11983         {0xE9, 0xf, 1},
11984         {0xEA, 0, 0},
11985         {0xEB, 0x11, 0},
11986         {0x105, 0x3c, 0},
11987         {0x106, 0x1, 1},
11988         {0x107, 0xa, 0},
11989         {0x10A, 0, 0},
11990         {0x10B, 0x40, 0},
11991         {0x10C, 0x40, 0},
11992         {0x10D, 0x88, 0},
11993         {0x10E, 0x10, 0},
11994         {0x10F, 0xf0, 0},
11995         {0x110, 0x10, 0},
11996         {0x111, 0xf0, 0},
11997         {0x114, 0x10, 0},
11998         {0x115, 0x55, 0},
11999         {0x116, 0x3f, 1},
12000         {0x117, 0x36, 1},
12001         {0x118, 0, 0},
12002         {0x119, 0, 0},
12003         {0x11A, 0, 0},
12004         {0x11B, 0x87, 0},
12005         {0x11C, 0x11, 0},
12006         {0x11D, 0, 0},
12007         {0x11E, 0x33, 0},
12008         {0x11F, 0x88, 0},
12009         {0x126, 0x20, 1},
12010         {0x127, 0x3f, 0},
12011         {0x128, 0x44, 0},
12012         {0x129, 0x8c, 0},
12013         {0x12A, 0x6c, 0},
12014         {0x12B, 0x22, 0},
12015         {0x12C, 0xbe, 0},
12016         {0x12D, 0x55, 0},
12017         {0x12F, 0xc, 0},
12018         {0x130, 0xaa, 0},
12019         {0x131, 0x2, 0},
12020         {0x132, 0, 0},
12021         {0x133, 0x10, 0},
12022         {0x134, 0x1, 0},
12023         {0x135, 0, 0},
12024         {0x136, 0, 0},
12025         {0x137, 0x80, 0},
12026         {0x138, 0x60, 0},
12027         {0x139, 0x44, 0},
12028         {0x13A, 0x55, 0},
12029         {0x13B, 0x1, 0},
12030         {0x13C, 0x55, 0},
12031         {0x13D, 0x1, 0},
12032         {0x13E, 0x5, 0},
12033         {0x13F, 0x55, 0},
12034         {0x140, 0x55, 0},
12035         {0x148, 0, 0},
12036         {0x149, 0, 0},
12037         {0x14A, 0, 0},
12038         {0x14B, 0, 0},
12039         {0x14C, 0, 0},
12040         {0x14D, 0, 0},
12041         {0x14E, 0, 0},
12042         {0x14F, 0, 0},
12043         {0x150, 0, 0},
12044         {0x154, 0xc, 0},
12045         {0x155, 0xc, 0},
12046         {0x156, 0xc, 0},
12047         {0x157, 0, 0},
12048         {0x158, 0x2b, 0},
12049         {0x159, 0x84, 0},
12050         {0x15A, 0x15, 0},
12051         {0x15B, 0xf, 0},
12052         {0x15C, 0, 0},
12053         {0x15D, 0, 0},
12054         {0x15E, 0, 1},
12055         {0x15F, 0, 1},
12056         {0x160, 0, 1},
12057         {0x161, 0, 1},
12058         {0x162, 0, 1},
12059         {0x163, 0, 1},
12060         {0x164, 0, 0},
12061         {0x165, 0, 0},
12062         {0x166, 0, 0},
12063         {0x167, 0, 0},
12064         {0x168, 0, 0},
12065         {0x169, 0, 0},
12066         {0x16A, 0, 1},
12067         {0x16B, 0, 1},
12068         {0x16C, 0, 1},
12069         {0x16D, 0, 0},
12070         {0x170, 0, 0},
12071         {0x171, 0x77, 0},
12072         {0x172, 0x77, 0},
12073         {0x173, 0x77, 0},
12074         {0x174, 0x77, 0},
12075         {0x175, 0, 0},
12076         {0x176, 0x3, 0},
12077         {0x177, 0x37, 0},
12078         {0x178, 0x3, 0},
12079         {0x179, 0, 0},
12080         {0x17B, 0x21, 0},
12081         {0x17C, 0, 0},
12082         {0x17D, 0xaa, 0},
12083         {0x17E, 0, 0},
12084         {0x190, 0, 0},
12085         {0x191, 0x77, 0},
12086         {0x192, 0x77, 0},
12087         {0x193, 0x77, 0},
12088         {0x194, 0x77, 0},
12089         {0x195, 0, 0},
12090         {0x196, 0x3, 0},
12091         {0x197, 0x37, 0},
12092         {0x198, 0x3, 0},
12093         {0x199, 0, 0},
12094         {0x19B, 0x21, 0},
12095         {0x19C, 0, 0},
12096         {0x19D, 0xaa, 0},
12097         {0x19E, 0, 0},
12098         {0x1A1, 0x2, 0},
12099         {0x1A2, 0xf, 0},
12100         {0x1A3, 0xf, 0},
12101         {0x1A4, 0, 1},
12102         {0x1A5, 0, 1},
12103         {0x1A6, 0, 1},
12104         {0x1A7, 0x2, 0},
12105         {0x1A8, 0xf, 0},
12106         {0x1A9, 0xf, 0},
12107         {0x1AA, 0, 1},
12108         {0x1AB, 0, 1},
12109         {0x1AC, 0, 1},
12110         {0x1AD, 0x84, 0},
12111         {0x1AE, 0x60, 0},
12112         {0x1AF, 0x47, 0},
12113         {0x1B0, 0x47, 0},
12114         {0x1B1, 0, 0},
12115         {0x1B2, 0, 0},
12116         {0x1B3, 0, 0},
12117         {0x1B4, 0, 0},
12118         {0x1B5, 0, 0},
12119         {0x1B6, 0, 0},
12120         {0x1B7, 0xc, 1},
12121         {0x1B8, 0, 0},
12122         {0x1B9, 0, 0},
12123         {0x1BA, 0, 0},
12124         {0x1BB, 0, 0},
12125         {0x1BC, 0, 0},
12126         {0x1BD, 0, 0},
12127         {0x1BE, 0, 0},
12128         {0x1BF, 0, 0},
12129         {0x1C0, 0, 0},
12130         {0x1C1, 0x1, 1},
12131         {0x1C2, 0x80, 1},
12132         {0x1C3, 0, 0},
12133         {0x1C4, 0, 0},
12134         {0x1C5, 0, 0},
12135         {0x1C6, 0, 0},
12136         {0x1C7, 0, 0},
12137         {0x1C8, 0, 0},
12138         {0x1C9, 0, 0},
12139         {0x1CA, 0, 0},
12140         {0xFFFF, 0, 0}
12141 };
12142 
12143 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12144         {0x00, 0x15, 1},
12145         {0x01, 0x57, 1},
12146         {0x02, 0x20, 1},
12147         {0x03, 0x1f, 0},
12148         {0x04, 0x4, 0},
12149         {0x05, 0x2, 0},
12150         {0x06, 0x1, 0},
12151         {0x07, 0x1, 0},
12152         {0x08, 0x1, 0},
12153         {0x09, 0x69, 0},
12154         {0x0A, 0x66, 0},
12155         {0x0B, 0x6, 0},
12156         {0x0C, 0x18, 0},
12157         {0x0D, 0x3, 0},
12158         {0x0E, 0x20, 0},
12159         {0x0F, 0x20, 0},
12160         {0x10, 0, 0},
12161         {0x11, 0x7c, 0},
12162         {0x12, 0x42, 0},
12163         {0x13, 0xbd, 0},
12164         {0x14, 0x7, 0},
12165         {0x15, 0x87, 0},
12166         {0x16, 0x8, 0},
12167         {0x17, 0x17, 0},
12168         {0x18, 0x7, 0},
12169         {0x19, 0, 0},
12170         {0x1A, 0x2, 0},
12171         {0x1B, 0x13, 0},
12172         {0x1C, 0x3e, 0},
12173         {0x1D, 0x3e, 0},
12174         {0x1E, 0x96, 0},
12175         {0x1F, 0x4, 0},
12176         {0x20, 0, 0},
12177         {0x21, 0, 0},
12178         {0x22, 0x17, 0},
12179         {0x23, 0x6, 1},
12180         {0x24, 0x1, 0},
12181         {0x25, 0x6, 0},
12182         {0x26, 0x4, 0},
12183         {0x27, 0xd, 0},
12184         {0x28, 0xd, 0},
12185         {0x29, 0x30, 0},
12186         {0x2A, 0x32, 0},
12187         {0x2B, 0x8, 0},
12188         {0x2C, 0x1c, 0},
12189         {0x2D, 0x2, 0},
12190         {0x2E, 0x4, 0},
12191         {0x2F, 0x7f, 0},
12192         {0x30, 0x27, 0},
12193         {0x31, 0, 1},
12194         {0x32, 0, 1},
12195         {0x33, 0, 1},
12196         {0x34, 0, 0},
12197         {0x35, 0x20, 0},
12198         {0x36, 0x18, 0},
12199         {0x37, 0x7, 0},
12200         {0x38, 0x66, 0},
12201         {0x39, 0x66, 0},
12202         {0x3C, 0xff, 0},
12203         {0x3D, 0xff, 0},
12204         {0x40, 0x16, 0},
12205         {0x41, 0x7, 0},
12206         {0x45, 0x3, 0},
12207         {0x46, 0x1, 0},
12208         {0x47, 0x7, 0},
12209         {0x4B, 0x66, 0},
12210         {0x4C, 0x66, 0},
12211         {0x4D, 0, 0},
12212         {0x4E, 0x4, 0},
12213         {0x4F, 0xc, 0},
12214         {0x50, 0, 0},
12215         {0x51, 0x70, 1},
12216         {0x56, 0x7, 0},
12217         {0x57, 0, 0},
12218         {0x58, 0, 0},
12219         {0x59, 0x88, 1},
12220         {0x5A, 0, 0},
12221         {0x5B, 0x1f, 0},
12222         {0x5C, 0x20, 1},
12223         {0x5D, 0x1, 0},
12224         {0x5E, 0x30, 0},
12225         {0x5F, 0x70, 0},
12226         {0x60, 0, 0},
12227         {0x61, 0, 0},
12228         {0x62, 0x33, 1},
12229         {0x63, 0xf, 1},
12230         {0x64, 0xf, 1},
12231         {0x65, 0, 0},
12232         {0x66, 0x11, 0},
12233         {0x80, 0x3c, 0},
12234         {0x81, 0x1, 1},
12235         {0x82, 0xa, 0},
12236         {0x85, 0, 0},
12237         {0x86, 0x40, 0},
12238         {0x87, 0x40, 0},
12239         {0x88, 0x88, 0},
12240         {0x89, 0x10, 0},
12241         {0x8A, 0xf0, 0},
12242         {0x8B, 0x10, 0},
12243         {0x8C, 0xf0, 0},
12244         {0x8F, 0x10, 0},
12245         {0x90, 0x55, 0},
12246         {0x91, 0x3f, 1},
12247         {0x92, 0x36, 1},
12248         {0x93, 0, 0},
12249         {0x94, 0, 0},
12250         {0x95, 0, 0},
12251         {0x96, 0x87, 0},
12252         {0x97, 0x11, 0},
12253         {0x98, 0, 0},
12254         {0x99, 0x33, 0},
12255         {0x9A, 0x88, 0},
12256         {0xA1, 0x20, 1},
12257         {0xA2, 0x3f, 0},
12258         {0xA3, 0x44, 0},
12259         {0xA4, 0x8c, 0},
12260         {0xA5, 0x6c, 0},
12261         {0xA6, 0x22, 0},
12262         {0xA7, 0xbe, 0},
12263         {0xA8, 0x55, 0},
12264         {0xAA, 0xc, 0},
12265         {0xAB, 0xaa, 0},
12266         {0xAC, 0x2, 0},
12267         {0xAD, 0, 0},
12268         {0xAE, 0x10, 0},
12269         {0xAF, 0x1, 0},
12270         {0xB0, 0, 0},
12271         {0xB1, 0, 0},
12272         {0xB2, 0x80, 0},
12273         {0xB3, 0x60, 0},
12274         {0xB4, 0x44, 0},
12275         {0xB5, 0x55, 0},
12276         {0xB6, 0x1, 0},
12277         {0xB7, 0x55, 0},
12278         {0xB8, 0x1, 0},
12279         {0xB9, 0x5, 0},
12280         {0xBA, 0x55, 0},
12281         {0xBB, 0x55, 0},
12282         {0xC3, 0, 0},
12283         {0xC4, 0, 0},
12284         {0xC5, 0, 0},
12285         {0xC6, 0, 0},
12286         {0xC7, 0, 0},
12287         {0xC8, 0, 0},
12288         {0xC9, 0x1, 1},
12289         {0xCA, 0, 0},
12290         {0xCB, 0, 0},
12291         {0xCD, 0, 0},
12292         {0xCE, 0x5e, 0},
12293         {0xCF, 0xc, 0},
12294         {0xD0, 0xc, 0},
12295         {0xD1, 0xc, 0},
12296         {0xD2, 0, 0},
12297         {0xD3, 0x2b, 0},
12298         {0xD4, 0xc, 0},
12299         {0xD5, 0, 0},
12300         {0xD6, 0x70, 1},
12301         {0xDB, 0x7, 0},
12302         {0xDC, 0, 0},
12303         {0xDD, 0, 0},
12304         {0xDE, 0x88, 1},
12305         {0xDF, 0, 0},
12306         {0xE0, 0x1f, 0},
12307         {0xE1, 0x20, 1},
12308         {0xE2, 0x1, 0},
12309         {0xE3, 0x30, 0},
12310         {0xE4, 0x70, 0},
12311         {0xE5, 0, 0},
12312         {0xE6, 0, 0},
12313         {0xE7, 0x33, 0},
12314         {0xE8, 0xf, 1},
12315         {0xE9, 0xf, 1},
12316         {0xEA, 0, 0},
12317         {0xEB, 0x11, 0},
12318         {0x105, 0x3c, 0},
12319         {0x106, 0x1, 1},
12320         {0x107, 0xa, 0},
12321         {0x10A, 0, 0},
12322         {0x10B, 0x40, 0},
12323         {0x10C, 0x40, 0},
12324         {0x10D, 0x88, 0},
12325         {0x10E, 0x10, 0},
12326         {0x10F, 0xf0, 0},
12327         {0x110, 0x10, 0},
12328         {0x111, 0xf0, 0},
12329         {0x114, 0x10, 0},
12330         {0x115, 0x55, 0},
12331         {0x116, 0x3f, 1},
12332         {0x117, 0x36, 1},
12333         {0x118, 0, 0},
12334         {0x119, 0, 0},
12335         {0x11A, 0, 0},
12336         {0x11B, 0x87, 0},
12337         {0x11C, 0x11, 0},
12338         {0x11D, 0, 0},
12339         {0x11E, 0x33, 0},
12340         {0x11F, 0x88, 0},
12341         {0x126, 0x20, 1},
12342         {0x127, 0x3f, 0},
12343         {0x128, 0x44, 0},
12344         {0x129, 0x8c, 0},
12345         {0x12A, 0x6c, 0},
12346         {0x12B, 0x22, 0},
12347         {0x12C, 0xbe, 0},
12348         {0x12D, 0x55, 0},
12349         {0x12F, 0xc, 0},
12350         {0x130, 0xaa, 0},
12351         {0x131, 0x2, 0},
12352         {0x132, 0, 0},
12353         {0x133, 0x10, 0},
12354         {0x134, 0x1, 0},
12355         {0x135, 0, 0},
12356         {0x136, 0, 0},
12357         {0x137, 0x80, 0},
12358         {0x138, 0x60, 0},
12359         {0x139, 0x44, 0},
12360         {0x13A, 0x55, 0},
12361         {0x13B, 0x1, 0},
12362         {0x13C, 0x55, 0},
12363         {0x13D, 0x1, 0},
12364         {0x13E, 0x5, 0},
12365         {0x13F, 0x55, 0},
12366         {0x140, 0x55, 0},
12367         {0x148, 0, 0},
12368         {0x149, 0, 0},
12369         {0x14A, 0, 0},
12370         {0x14B, 0, 0},
12371         {0x14C, 0, 0},
12372         {0x14D, 0, 0},
12373         {0x14E, 0x1, 1},
12374         {0x14F, 0, 0},
12375         {0x150, 0, 0},
12376         {0x154, 0xc, 0},
12377         {0x155, 0xc, 0},
12378         {0x156, 0xc, 0},
12379         {0x157, 0, 0},
12380         {0x158, 0x2b, 0},
12381         {0x159, 0x84, 0},
12382         {0x15A, 0x15, 0},
12383         {0x15B, 0xf, 0},
12384         {0x15C, 0, 0},
12385         {0x15D, 0, 0},
12386         {0x15E, 0, 1},
12387         {0x15F, 0, 1},
12388         {0x160, 0, 1},
12389         {0x161, 0, 1},
12390         {0x162, 0, 1},
12391         {0x163, 0, 1},
12392         {0x164, 0, 0},
12393         {0x165, 0, 0},
12394         {0x166, 0, 0},
12395         {0x167, 0, 0},
12396         {0x168, 0, 0},
12397         {0x169, 0, 0},
12398         {0x16A, 0, 1},
12399         {0x16B, 0, 1},
12400         {0x16C, 0, 1},
12401         {0x16D, 0, 0},
12402         {0x170, 0, 0},
12403         {0x171, 0x77, 0},
12404         {0x172, 0x77, 0},
12405         {0x173, 0x77, 0},
12406         {0x174, 0x77, 0},
12407         {0x175, 0, 0},
12408         {0x176, 0x3, 0},
12409         {0x177, 0x37, 0},
12410         {0x178, 0x3, 0},
12411         {0x179, 0, 0},
12412         {0x17B, 0x21, 0},
12413         {0x17C, 0, 0},
12414         {0x17D, 0xaa, 0},
12415         {0x17E, 0, 0},
12416         {0x190, 0, 0},
12417         {0x191, 0x77, 0},
12418         {0x192, 0x77, 0},
12419         {0x193, 0x77, 0},
12420         {0x194, 0x77, 0},
12421         {0x195, 0, 0},
12422         {0x196, 0x3, 0},
12423         {0x197, 0x37, 0},
12424         {0x198, 0x3, 0},
12425         {0x199, 0, 0},
12426         {0x19B, 0x21, 0},
12427         {0x19C, 0, 0},
12428         {0x19D, 0xaa, 0},
12429         {0x19E, 0, 0},
12430         {0x1A1, 0x2, 0},
12431         {0x1A2, 0xf, 0},
12432         {0x1A3, 0xf, 0},
12433         {0x1A4, 0, 1},
12434         {0x1A5, 0, 1},
12435         {0x1A6, 0, 1},
12436         {0x1A7, 0x2, 0},
12437         {0x1A8, 0xf, 0},
12438         {0x1A9, 0xf, 0},
12439         {0x1AA, 0, 1},
12440         {0x1AB, 0, 1},
12441         {0x1AC, 0, 1},
12442         {0x1AD, 0x84, 0},
12443         {0x1AE, 0x60, 0},
12444         {0x1AF, 0x47, 0},
12445         {0x1B0, 0x47, 0},
12446         {0x1B1, 0, 0},
12447         {0x1B2, 0, 0},
12448         {0x1B3, 0, 0},
12449         {0x1B4, 0, 0},
12450         {0x1B5, 0, 0},
12451         {0x1B6, 0, 0},
12452         {0x1B7, 0xc, 1},
12453         {0x1B8, 0, 0},
12454         {0x1B9, 0, 0},
12455         {0x1BA, 0, 0},
12456         {0x1BB, 0, 0},
12457         {0x1BC, 0, 0},
12458         {0x1BD, 0, 0},
12459         {0x1BE, 0, 0},
12460         {0x1BF, 0, 0},
12461         {0x1C0, 0, 0},
12462         {0x1C1, 0x1, 1},
12463         {0x1C2, 0x80, 1},
12464         {0x1C3, 0, 0},
12465         {0x1C4, 0, 0},
12466         {0x1C5, 0, 0},
12467         {0x1C6, 0, 0},
12468         {0x1C7, 0, 0},
12469         {0x1C8, 0, 0},
12470         {0x1C9, 0, 0},
12471         {0x1CA, 0, 0},
12472         {0xFFFF, 0, 0}
12473 };
12474 
12475 static struct radio_20xx_regs regs_2057_rev7[] = {
12476         {0x00, 0, 1},
12477         {0x01, 0x57, 1},
12478         {0x02, 0x20, 1},
12479         {0x03, 0x1f, 0},
12480         {0x04, 0x4, 0},
12481         {0x05, 0x2, 0},
12482         {0x06, 0x1, 0},
12483         {0x07, 0x1, 0},
12484         {0x08, 0x1, 0},
12485         {0x09, 0x69, 0},
12486         {0x0A, 0x66, 0},
12487         {0x0B, 0x6, 0},
12488         {0x0C, 0x18, 0},
12489         {0x0D, 0x3, 0},
12490         {0x0E, 0x20, 0},
12491         {0x0F, 0x20, 0},
12492         {0x10, 0, 0},
12493         {0x11, 0x7c, 0},
12494         {0x12, 0x42, 0},
12495         {0x13, 0xbd, 0},
12496         {0x14, 0x7, 0},
12497         {0x15, 0x87, 0},
12498         {0x16, 0x8, 0},
12499         {0x17, 0x17, 0},
12500         {0x18, 0x7, 0},
12501         {0x19, 0, 0},
12502         {0x1A, 0x2, 0},
12503         {0x1B, 0x13, 0},
12504         {0x1C, 0x3e, 0},
12505         {0x1D, 0x3e, 0},
12506         {0x1E, 0x96, 0},
12507         {0x1F, 0x4, 0},
12508         {0x20, 0, 0},
12509         {0x21, 0, 0},
12510         {0x22, 0x17, 0},
12511         {0x23, 0x6, 0},
12512         {0x24, 0x1, 0},
12513         {0x25, 0x6, 0},
12514         {0x26, 0x4, 0},
12515         {0x27, 0xd, 0},
12516         {0x28, 0xd, 0},
12517         {0x29, 0x30, 0},
12518         {0x2A, 0x32, 0},
12519         {0x2B, 0x8, 0},
12520         {0x2C, 0x1c, 0},
12521         {0x2D, 0x2, 0},
12522         {0x2E, 0x4, 0},
12523         {0x2F, 0x7f, 0},
12524         {0x30, 0x27, 0},
12525         {0x31, 0, 1},
12526         {0x32, 0, 1},
12527         {0x33, 0, 1},
12528         {0x34, 0, 0},
12529         {0x35, 0x20, 0},
12530         {0x36, 0x18, 0},
12531         {0x37, 0x7, 0},
12532         {0x38, 0x66, 0},
12533         {0x39, 0x66, 0},
12534         {0x3A, 0x66, 0},
12535         {0x3B, 0x66, 0},
12536         {0x3C, 0xff, 0},
12537         {0x3D, 0xff, 0},
12538         {0x3E, 0xff, 0},
12539         {0x3F, 0xff, 0},
12540         {0x40, 0x16, 0},
12541         {0x41, 0x7, 0},
12542         {0x42, 0x19, 0},
12543         {0x43, 0x7, 0},
12544         {0x44, 0x6, 0},
12545         {0x45, 0x3, 0},
12546         {0x46, 0x1, 0},
12547         {0x47, 0x7, 0},
12548         {0x48, 0x33, 0},
12549         {0x49, 0x5, 0},
12550         {0x4A, 0x77, 0},
12551         {0x4B, 0x66, 0},
12552         {0x4C, 0x66, 0},
12553         {0x4D, 0, 0},
12554         {0x4E, 0x4, 0},
12555         {0x4F, 0xc, 0},
12556         {0x50, 0, 0},
12557         {0x51, 0x70, 1},
12558         {0x56, 0x7, 0},
12559         {0x57, 0, 0},
12560         {0x58, 0, 0},
12561         {0x59, 0x88, 1},
12562         {0x5A, 0, 0},
12563         {0x5B, 0x1f, 0},
12564         {0x5C, 0x20, 1},
12565         {0x5D, 0x1, 0},
12566         {0x5E, 0x30, 0},
12567         {0x5F, 0x70, 0},
12568         {0x60, 0, 0},
12569         {0x61, 0, 0},
12570         {0x62, 0x33, 1},
12571         {0x63, 0xf, 1},
12572         {0x64, 0x13, 1},
12573         {0x65, 0, 0},
12574         {0x66, 0xee, 1},
12575         {0x69, 0, 0},
12576         {0x6A, 0x7e, 0},
12577         {0x6B, 0x3f, 0},
12578         {0x6C, 0x7f, 0},
12579         {0x6D, 0x78, 0},
12580         {0x6E, 0x58, 1},
12581         {0x6F, 0x88, 0},
12582         {0x70, 0x8, 0},
12583         {0x71, 0xf, 0},
12584         {0x72, 0xbc, 0},
12585         {0x73, 0x8, 0},
12586         {0x74, 0x60, 0},
12587         {0x75, 0x13, 1},
12588         {0x76, 0x70, 0},
12589         {0x77, 0, 0},
12590         {0x78, 0, 0},
12591         {0x79, 0, 0},
12592         {0x7A, 0x33, 0},
12593         {0x7B, 0x13, 1},
12594         {0x7C, 0x14, 1},
12595         {0x7D, 0xee, 1},
12596         {0x80, 0x3c, 0},
12597         {0x81, 0x1, 1},
12598         {0x82, 0xa, 0},
12599         {0x83, 0x9d, 0},
12600         {0x84, 0xa, 0},
12601         {0x85, 0, 0},
12602         {0x86, 0x40, 0},
12603         {0x87, 0x40, 0},
12604         {0x88, 0x88, 0},
12605         {0x89, 0x10, 0},
12606         {0x8A, 0xf0, 0},
12607         {0x8B, 0x10, 0},
12608         {0x8C, 0xf0, 0},
12609         {0x8D, 0, 0},
12610         {0x8E, 0, 0},
12611         {0x8F, 0x10, 0},
12612         {0x90, 0x55, 0},
12613         {0x91, 0x3f, 1},
12614         {0x92, 0x36, 1},
12615         {0x93, 0, 0},
12616         {0x94, 0, 0},
12617         {0x95, 0, 0},
12618         {0x96, 0x87, 0},
12619         {0x97, 0x11, 0},
12620         {0x98, 0, 0},
12621         {0x99, 0x33, 0},
12622         {0x9A, 0x88, 0},
12623         {0x9B, 0, 0},
12624         {0x9C, 0x87, 0},
12625         {0x9D, 0x11, 0},
12626         {0x9E, 0, 0},
12627         {0x9F, 0x33, 0},
12628         {0xA0, 0x88, 0},
12629         {0xA1, 0x20, 1},
12630         {0xA2, 0x3f, 0},
12631         {0xA3, 0x44, 0},
12632         {0xA4, 0x8c, 0},
12633         {0xA5, 0x6c, 0},
12634         {0xA6, 0x22, 0},
12635         {0xA7, 0xbe, 0},
12636         {0xA8, 0x55, 0},
12637         {0xAA, 0xc, 0},
12638         {0xAB, 0xaa, 0},
12639         {0xAC, 0x2, 0},
12640         {0xAD, 0, 0},
12641         {0xAE, 0x10, 0},
12642         {0xAF, 0x1, 0},
12643         {0xB0, 0, 0},
12644         {0xB1, 0, 0},
12645         {0xB2, 0x80, 0},
12646         {0xB3, 0x60, 0},
12647         {0xB4, 0x44, 0},
12648         {0xB5, 0x55, 0},
12649         {0xB6, 0x1, 0},
12650         {0xB7, 0x55, 0},
12651         {0xB8, 0x1, 0},
12652         {0xB9, 0x5, 0},
12653         {0xBA, 0x55, 0},
12654         {0xBB, 0x55, 0},
12655         {0xC1, 0, 0},
12656         {0xC2, 0, 0},
12657         {0xC3, 0, 0},
12658         {0xC4, 0, 0},
12659         {0xC5, 0, 0},
12660         {0xC6, 0, 0},
12661         {0xC7, 0, 0},
12662         {0xC8, 0, 0},
12663         {0xC9, 0, 0},
12664         {0xCA, 0, 0},
12665         {0xCB, 0, 0},
12666         {0xCC, 0, 0},
12667         {0xCD, 0, 0},
12668         {0xCE, 0x5e, 0},
12669         {0xCF, 0xc, 0},
12670         {0xD0, 0xc, 0},
12671         {0xD1, 0xc, 0},
12672         {0xD2, 0, 0},
12673         {0xD3, 0x2b, 0},
12674         {0xD4, 0xc, 0},
12675         {0xD5, 0, 0},
12676         {0xD6, 0x70, 1},
12677         {0xDB, 0x7, 0},
12678         {0xDC, 0, 0},
12679         {0xDD, 0, 0},
12680         {0xDE, 0x88, 1},
12681         {0xDF, 0, 0},
12682         {0xE0, 0x1f, 0},
12683         {0xE1, 0x20, 1},
12684         {0xE2, 0x1, 0},
12685         {0xE3, 0x30, 0},
12686         {0xE4, 0x70, 0},
12687         {0xE5, 0, 0},
12688         {0xE6, 0, 0},
12689         {0xE7, 0x33, 0},
12690         {0xE8, 0xf, 1},
12691         {0xE9, 0x13, 1},
12692         {0xEA, 0, 0},
12693         {0xEB, 0xee, 1},
12694         {0xEE, 0, 0},
12695         {0xEF, 0x7e, 0},
12696         {0xF0, 0x3f, 0},
12697         {0xF1, 0x7f, 0},
12698         {0xF2, 0x78, 0},
12699         {0xF3, 0x58, 1},
12700         {0xF4, 0x88, 0},
12701         {0xF5, 0x8, 0},
12702         {0xF6, 0xf, 0},
12703         {0xF7, 0xbc, 0},
12704         {0xF8, 0x8, 0},
12705         {0xF9, 0x60, 0},
12706         {0xFA, 0x13, 1},
12707         {0xFB, 0x70, 0},
12708         {0xFC, 0, 0},
12709         {0xFD, 0, 0},
12710         {0xFE, 0, 0},
12711         {0xFF, 0x33, 0},
12712         {0x100, 0x13, 1},
12713         {0x101, 0x14, 1},
12714         {0x102, 0xee, 1},
12715         {0x105, 0x3c, 0},
12716         {0x106, 0x1, 1},
12717         {0x107, 0xa, 0},
12718         {0x108, 0x9d, 0},
12719         {0x109, 0xa, 0},
12720         {0x10A, 0, 0},
12721         {0x10B, 0x40, 0},
12722         {0x10C, 0x40, 0},
12723         {0x10D, 0x88, 0},
12724         {0x10E, 0x10, 0},
12725         {0x10F, 0xf0, 0},
12726         {0x110, 0x10, 0},
12727         {0x111, 0xf0, 0},
12728         {0x112, 0, 0},
12729         {0x113, 0, 0},
12730         {0x114, 0x10, 0},
12731         {0x115, 0x55, 0},
12732         {0x116, 0x3f, 1},
12733         {0x117, 0x36, 1},
12734         {0x118, 0, 0},
12735         {0x119, 0, 0},
12736         {0x11A, 0, 0},
12737         {0x11B, 0x87, 0},
12738         {0x11C, 0x11, 0},
12739         {0x11D, 0, 0},
12740         {0x11E, 0x33, 0},
12741         {0x11F, 0x88, 0},
12742         {0x120, 0, 0},
12743         {0x121, 0x87, 0},
12744         {0x122, 0x11, 0},
12745         {0x123, 0, 0},
12746         {0x124, 0x33, 0},
12747         {0x125, 0x88, 0},
12748         {0x126, 0x20, 1},
12749         {0x127, 0x3f, 0},
12750         {0x128, 0x44, 0},
12751         {0x129, 0x8c, 0},
12752         {0x12A, 0x6c, 0},
12753         {0x12B, 0x22, 0},
12754         {0x12C, 0xbe, 0},
12755         {0x12D, 0x55, 0},
12756         {0x12F, 0xc, 0},
12757         {0x130, 0xaa, 0},
12758         {0x131, 0x2, 0},
12759         {0x132, 0, 0},
12760         {0x133, 0x10, 0},
12761         {0x134, 0x1, 0},
12762         {0x135, 0, 0},
12763         {0x136, 0, 0},
12764         {0x137, 0x80, 0},
12765         {0x138, 0x60, 0},
12766         {0x139, 0x44, 0},
12767         {0x13A, 0x55, 0},
12768         {0x13B, 0x1, 0},
12769         {0x13C, 0x55, 0},
12770         {0x13D, 0x1, 0},
12771         {0x13E, 0x5, 0},
12772         {0x13F, 0x55, 0},
12773         {0x140, 0x55, 0},
12774         {0x146, 0, 0},
12775         {0x147, 0, 0},
12776         {0x148, 0, 0},
12777         {0x149, 0, 0},
12778         {0x14A, 0, 0},
12779         {0x14B, 0, 0},
12780         {0x14C, 0, 0},
12781         {0x14D, 0, 0},
12782         {0x14E, 0, 0},
12783         {0x14F, 0, 0},
12784         {0x150, 0, 0},
12785         {0x151, 0, 0},
12786         {0x154, 0xc, 0},
12787         {0x155, 0xc, 0},
12788         {0x156, 0xc, 0},
12789         {0x157, 0, 0},
12790         {0x158, 0x2b, 0},
12791         {0x159, 0x84, 0},
12792         {0x15A, 0x15, 0},
12793         {0x15B, 0xf, 0},
12794         {0x15C, 0, 0},
12795         {0x15D, 0, 0},
12796         {0x15E, 0, 1},
12797         {0x15F, 0, 1},
12798         {0x160, 0, 1},
12799         {0x161, 0, 1},
12800         {0x162, 0, 1},
12801         {0x163, 0, 1},
12802         {0x164, 0, 0},
12803         {0x165, 0, 0},
12804         {0x166, 0, 0},
12805         {0x167, 0, 0},
12806         {0x168, 0, 0},
12807         {0x169, 0, 0},
12808         {0x16A, 0, 1},
12809         {0x16B, 0, 1},
12810         {0x16C, 0, 1},
12811         {0x16D, 0, 0},
12812         {0x170, 0, 0},
12813         {0x171, 0x77, 0},
12814         {0x172, 0x77, 0},
12815         {0x173, 0x77, 0},
12816         {0x174, 0x77, 0},
12817         {0x175, 0, 0},
12818         {0x176, 0x3, 0},
12819         {0x177, 0x37, 0},
12820         {0x178, 0x3, 0},
12821         {0x179, 0, 0},
12822         {0x17A, 0x21, 0},
12823         {0x17B, 0x21, 0},
12824         {0x17C, 0, 0},
12825         {0x17D, 0xaa, 0},
12826         {0x17E, 0, 0},
12827         {0x17F, 0xaa, 0},
12828         {0x180, 0, 0},
12829         {0x190, 0, 0},
12830         {0x191, 0x77, 0},
12831         {0x192, 0x77, 0},
12832         {0x193, 0x77, 0},
12833         {0x194, 0x77, 0},
12834         {0x195, 0, 0},
12835         {0x196, 0x3, 0},
12836         {0x197, 0x37, 0},
12837         {0x198, 0x3, 0},
12838         {0x199, 0, 0},
12839         {0x19A, 0x21, 0},
12840         {0x19B, 0x21, 0},
12841         {0x19C, 0, 0},
12842         {0x19D, 0xaa, 0},
12843         {0x19E, 0, 0},
12844         {0x19F, 0xaa, 0},
12845         {0x1A0, 0, 0},
12846         {0x1A1, 0x2, 0},
12847         {0x1A2, 0xf, 0},
12848         {0x1A3, 0xf, 0},
12849         {0x1A4, 0, 1},
12850         {0x1A5, 0, 1},
12851         {0x1A6, 0, 1},
12852         {0x1A7, 0x2, 0},
12853         {0x1A8, 0xf, 0},
12854         {0x1A9, 0xf, 0},
12855         {0x1AA, 0, 1},
12856         {0x1AB, 0, 1},
12857         {0x1AC, 0, 1},
12858         {0x1AD, 0x84, 0},
12859         {0x1AE, 0x60, 0},
12860         {0x1AF, 0x47, 0},
12861         {0x1B0, 0x47, 0},
12862         {0x1B1, 0, 0},
12863         {0x1B2, 0, 0},
12864         {0x1B3, 0, 0},
12865         {0x1B4, 0, 0},
12866         {0x1B5, 0, 0},
12867         {0x1B6, 0, 0},
12868         {0x1B7, 0x5, 1},
12869         {0x1B8, 0, 0},
12870         {0x1B9, 0, 0},
12871         {0x1BA, 0, 0},
12872         {0x1BB, 0, 0},
12873         {0x1BC, 0, 0},
12874         {0x1BD, 0, 0},
12875         {0x1BE, 0, 0},
12876         {0x1BF, 0, 0},
12877         {0x1C0, 0, 0},
12878         {0x1C1, 0, 0},
12879         {0x1C2, 0xa0, 1},
12880         {0x1C3, 0, 0},
12881         {0x1C4, 0, 0},
12882         {0x1C5, 0, 0},
12883         {0x1C6, 0, 0},
12884         {0x1C7, 0, 0},
12885         {0x1C8, 0, 0},
12886         {0x1C9, 0, 0},
12887         {0x1CA, 0, 0},
12888         {0xFFFF, 0, 0}
12889 };
12890 
12891 static struct radio_20xx_regs regs_2057_rev8[] = {
12892         {0x00, 0x8, 1},
12893         {0x01, 0x57, 1},
12894         {0x02, 0x20, 1},
12895         {0x03, 0x1f, 0},
12896         {0x04, 0x4, 0},
12897         {0x05, 0x2, 0},
12898         {0x06, 0x1, 0},
12899         {0x07, 0x1, 0},
12900         {0x08, 0x1, 0},
12901         {0x09, 0x69, 0},
12902         {0x0A, 0x66, 0},
12903         {0x0B, 0x6, 0},
12904         {0x0C, 0x18, 0},
12905         {0x0D, 0x3, 0},
12906         {0x0E, 0x20, 0},
12907         {0x0F, 0x20, 0},
12908         {0x10, 0, 0},
12909         {0x11, 0x7c, 0},
12910         {0x12, 0x42, 0},
12911         {0x13, 0xbd, 0},
12912         {0x14, 0x7, 0},
12913         {0x15, 0x87, 0},
12914         {0x16, 0x8, 0},
12915         {0x17, 0x17, 0},
12916         {0x18, 0x7, 0},
12917         {0x19, 0, 0},
12918         {0x1A, 0x2, 0},
12919         {0x1B, 0x13, 0},
12920         {0x1C, 0x3e, 0},
12921         {0x1D, 0x3e, 0},
12922         {0x1E, 0x96, 0},
12923         {0x1F, 0x4, 0},
12924         {0x20, 0, 0},
12925         {0x21, 0, 0},
12926         {0x22, 0x17, 0},
12927         {0x23, 0x6, 0},
12928         {0x24, 0x1, 0},
12929         {0x25, 0x6, 0},
12930         {0x26, 0x4, 0},
12931         {0x27, 0xd, 0},
12932         {0x28, 0xd, 0},
12933         {0x29, 0x30, 0},
12934         {0x2A, 0x32, 0},
12935         {0x2B, 0x8, 0},
12936         {0x2C, 0x1c, 0},
12937         {0x2D, 0x2, 0},
12938         {0x2E, 0x4, 0},
12939         {0x2F, 0x7f, 0},
12940         {0x30, 0x27, 0},
12941         {0x31, 0, 1},
12942         {0x32, 0, 1},
12943         {0x33, 0, 1},
12944         {0x34, 0, 0},
12945         {0x35, 0x20, 0},
12946         {0x36, 0x18, 0},
12947         {0x37, 0x7, 0},
12948         {0x38, 0x66, 0},
12949         {0x39, 0x66, 0},
12950         {0x3A, 0x66, 0},
12951         {0x3B, 0x66, 0},
12952         {0x3C, 0xff, 0},
12953         {0x3D, 0xff, 0},
12954         {0x3E, 0xff, 0},
12955         {0x3F, 0xff, 0},
12956         {0x40, 0x16, 0},
12957         {0x41, 0x7, 0},
12958         {0x42, 0x19, 0},
12959         {0x43, 0x7, 0},
12960         {0x44, 0x6, 0},
12961         {0x45, 0x3, 0},
12962         {0x46, 0x1, 0},
12963         {0x47, 0x7, 0},
12964         {0x48, 0x33, 0},
12965         {0x49, 0x5, 0},
12966         {0x4A, 0x77, 0},
12967         {0x4B, 0x66, 0},
12968         {0x4C, 0x66, 0},
12969         {0x4D, 0, 0},
12970         {0x4E, 0x4, 0},
12971         {0x4F, 0xc, 0},
12972         {0x50, 0, 0},
12973         {0x51, 0x70, 1},
12974         {0x56, 0x7, 0},
12975         {0x57, 0, 0},
12976         {0x58, 0, 0},
12977         {0x59, 0x88, 1},
12978         {0x5A, 0, 0},
12979         {0x5B, 0x1f, 0},
12980         {0x5C, 0x20, 1},
12981         {0x5D, 0x1, 0},
12982         {0x5E, 0x30, 0},
12983         {0x5F, 0x70, 0},
12984         {0x60, 0, 0},
12985         {0x61, 0, 0},
12986         {0x62, 0x33, 1},
12987         {0x63, 0xf, 1},
12988         {0x64, 0xf, 1},
12989         {0x65, 0, 0},
12990         {0x66, 0x11, 0},
12991         {0x69, 0, 0},
12992         {0x6A, 0x7e, 0},
12993         {0x6B, 0x3f, 0},
12994         {0x6C, 0x7f, 0},
12995         {0x6D, 0x78, 0},
12996         {0x6E, 0x58, 1},
12997         {0x6F, 0x88, 0},
12998         {0x70, 0x8, 0},
12999         {0x71, 0xf, 0},
13000         {0x72, 0xbc, 0},
13001         {0x73, 0x8, 0},
13002         {0x74, 0x60, 0},
13003         {0x75, 0x13, 1},
13004         {0x76, 0x70, 0},
13005         {0x77, 0, 0},
13006         {0x78, 0, 0},
13007         {0x79, 0, 0},
13008         {0x7A, 0x33, 0},
13009         {0x7B, 0x13, 1},
13010         {0x7C, 0xf, 1},
13011         {0x7D, 0xee, 1},
13012         {0x80, 0x3c, 0},
13013         {0x81, 0x1, 1},
13014         {0x82, 0xa, 0},
13015         {0x83, 0x9d, 0},
13016         {0x84, 0xa, 0},
13017         {0x85, 0, 0},
13018         {0x86, 0x40, 0},
13019         {0x87, 0x40, 0},
13020         {0x88, 0x88, 0},
13021         {0x89, 0x10, 0},
13022         {0x8A, 0xf0, 0},
13023         {0x8B, 0x10, 0},
13024         {0x8C, 0xf0, 0},
13025         {0x8D, 0, 0},
13026         {0x8E, 0, 0},
13027         {0x8F, 0x10, 0},
13028         {0x90, 0x55, 0},
13029         {0x91, 0x3f, 1},
13030         {0x92, 0x36, 1},
13031         {0x93, 0, 0},
13032         {0x94, 0, 0},
13033         {0x95, 0, 0},
13034         {0x96, 0x87, 0},
13035         {0x97, 0x11, 0},
13036         {0x98, 0, 0},
13037         {0x99, 0x33, 0},
13038         {0x9A, 0x88, 0},
13039         {0x9B, 0, 0},
13040         {0x9C, 0x87, 0},
13041         {0x9D, 0x11, 0},
13042         {0x9E, 0, 0},
13043         {0x9F, 0x33, 0},
13044         {0xA0, 0x88, 0},
13045         {0xA1, 0x20, 1},
13046         {0xA2, 0x3f, 0},
13047         {0xA3, 0x44, 0},
13048         {0xA4, 0x8c, 0},
13049         {0xA5, 0x6c, 0},
13050         {0xA6, 0x22, 0},
13051         {0xA7, 0xbe, 0},
13052         {0xA8, 0x55, 0},
13053         {0xAA, 0xc, 0},
13054         {0xAB, 0xaa, 0},
13055         {0xAC, 0x2, 0},
13056         {0xAD, 0, 0},
13057         {0xAE, 0x10, 0},
13058         {0xAF, 0x1, 0},
13059         {0xB0, 0, 0},
13060         {0xB1, 0, 0},
13061         {0xB2, 0x80, 0},
13062         {0xB3, 0x60, 0},
13063         {0xB4, 0x44, 0},
13064         {0xB5, 0x55, 0},
13065         {0xB6, 0x1, 0},
13066         {0xB7, 0x55, 0},
13067         {0xB8, 0x1, 0},
13068         {0xB9, 0x5, 0},
13069         {0xBA, 0x55, 0},
13070         {0xBB, 0x55, 0},
13071         {0xC1, 0, 0},
13072         {0xC2, 0, 0},
13073         {0xC3, 0, 0},
13074         {0xC4, 0, 0},
13075         {0xC5, 0, 0},
13076         {0xC6, 0, 0},
13077         {0xC7, 0, 0},
13078         {0xC8, 0, 0},
13079         {0xC9, 0x1, 1},
13080         {0xCA, 0, 0},
13081         {0xCB, 0, 0},
13082         {0xCC, 0, 0},
13083         {0xCD, 0, 0},
13084         {0xCE, 0x5e, 0},
13085         {0xCF, 0xc, 0},
13086         {0xD0, 0xc, 0},
13087         {0xD1, 0xc, 0},
13088         {0xD2, 0, 0},
13089         {0xD3, 0x2b, 0},
13090         {0xD4, 0xc, 0},
13091         {0xD5, 0, 0},
13092         {0xD6, 0x70, 1},
13093         {0xDB, 0x7, 0},
13094         {0xDC, 0, 0},
13095         {0xDD, 0, 0},
13096         {0xDE, 0x88, 1},
13097         {0xDF, 0, 0},
13098         {0xE0, 0x1f, 0},
13099         {0xE1, 0x20, 1},
13100         {0xE2, 0x1, 0},
13101         {0xE3, 0x30, 0},
13102         {0xE4, 0x70, 0},
13103         {0xE5, 0, 0},
13104         {0xE6, 0, 0},
13105         {0xE7, 0x33, 0},
13106         {0xE8, 0xf, 1},
13107         {0xE9, 0xf, 1},
13108         {0xEA, 0, 0},
13109         {0xEB, 0x11, 0},
13110         {0xEE, 0, 0},
13111         {0xEF, 0x7e, 0},
13112         {0xF0, 0x3f, 0},
13113         {0xF1, 0x7f, 0},
13114         {0xF2, 0x78, 0},
13115         {0xF3, 0x58, 1},
13116         {0xF4, 0x88, 0},
13117         {0xF5, 0x8, 0},
13118         {0xF6, 0xf, 0},
13119         {0xF7, 0xbc, 0},
13120         {0xF8, 0x8, 0},
13121         {0xF9, 0x60, 0},
13122         {0xFA, 0x13, 1},
13123         {0xFB, 0x70, 0},
13124         {0xFC, 0, 0},
13125         {0xFD, 0, 0},
13126         {0xFE, 0, 0},
13127         {0xFF, 0x33, 0},
13128         {0x100, 0x13, 1},
13129         {0x101, 0xf, 1},
13130         {0x102, 0xee, 1},
13131         {0x105, 0x3c, 0},
13132         {0x106, 0x1, 1},
13133         {0x107, 0xa, 0},
13134         {0x108, 0x9d, 0},
13135         {0x109, 0xa, 0},
13136         {0x10A, 0, 0},
13137         {0x10B, 0x40, 0},
13138         {0x10C, 0x40, 0},
13139         {0x10D, 0x88, 0},
13140         {0x10E, 0x10, 0},
13141         {0x10F, 0xf0, 0},
13142         {0x110, 0x10, 0},
13143         {0x111, 0xf0, 0},
13144         {0x112, 0, 0},
13145         {0x113, 0, 0},
13146         {0x114, 0x10, 0},
13147         {0x115, 0x55, 0},
13148         {0x116, 0x3f, 1},
13149         {0x117, 0x36, 1},
13150         {0x118, 0, 0},
13151         {0x119, 0, 0},
13152         {0x11A, 0, 0},
13153         {0x11B, 0x87, 0},
13154         {0x11C, 0x11, 0},
13155         {0x11D, 0, 0},
13156         {0x11E, 0x33, 0},
13157         {0x11F, 0x88, 0},
13158         {0x120, 0, 0},
13159         {0x121, 0x87, 0},
13160         {0x122, 0x11, 0},
13161         {0x123, 0, 0},
13162         {0x124, 0x33, 0},
13163         {0x125, 0x88, 0},
13164         {0x126, 0x20, 1},
13165         {0x127, 0x3f, 0},
13166         {0x128, 0x44, 0},
13167         {0x129, 0x8c, 0},
13168         {0x12A, 0x6c, 0},
13169         {0x12B, 0x22, 0},
13170         {0x12C, 0xbe, 0},
13171         {0x12D, 0x55, 0},
13172         {0x12F, 0xc, 0},
13173         {0x130, 0xaa, 0},
13174         {0x131, 0x2, 0},
13175         {0x132, 0, 0},
13176         {0x133, 0x10, 0},
13177         {0x134, 0x1, 0},
13178         {0x135, 0, 0},
13179         {0x136, 0, 0},
13180         {0x137, 0x80, 0},
13181         {0x138, 0x60, 0},
13182         {0x139, 0x44, 0},
13183         {0x13A, 0x55, 0},
13184         {0x13B, 0x1, 0},
13185         {0x13C, 0x55, 0},
13186         {0x13D, 0x1, 0},
13187         {0x13E, 0x5, 0},
13188         {0x13F, 0x55, 0},
13189         {0x140, 0x55, 0},
13190         {0x146, 0, 0},
13191         {0x147, 0, 0},
13192         {0x148, 0, 0},
13193         {0x149, 0, 0},
13194         {0x14A, 0, 0},
13195         {0x14B, 0, 0},
13196         {0x14C, 0, 0},
13197         {0x14D, 0, 0},
13198         {0x14E, 0x1, 1},
13199         {0x14F, 0, 0},
13200         {0x150, 0, 0},
13201         {0x151, 0, 0},
13202         {0x154, 0xc, 0},
13203         {0x155, 0xc, 0},
13204         {0x156, 0xc, 0},
13205         {0x157, 0, 0},
13206         {0x158, 0x2b, 0},
13207         {0x159, 0x84, 0},
13208         {0x15A, 0x15, 0},
13209         {0x15B, 0xf, 0},
13210         {0x15C, 0, 0},
13211         {0x15D, 0, 0},
13212         {0x15E, 0, 1},
13213         {0x15F, 0, 1},
13214         {0x160, 0, 1},
13215         {0x161, 0, 1},
13216         {0x162, 0, 1},
13217         {0x163, 0, 1},
13218         {0x164, 0, 0},
13219         {0x165, 0, 0},
13220         {0x166, 0, 0},
13221         {0x167, 0, 0},
13222         {0x168, 0, 0},
13223         {0x169, 0, 0},
13224         {0x16A, 0, 1},
13225         {0x16B, 0, 1},
13226         {0x16C, 0, 1},
13227         {0x16D, 0, 0},
13228         {0x170, 0, 0},
13229         {0x171, 0x77, 0},
13230         {0x172, 0x77, 0},
13231         {0x173, 0x77, 0},
13232         {0x174, 0x77, 0},
13233         {0x175, 0, 0},
13234         {0x176, 0x3, 0},
13235         {0x177, 0x37, 0},
13236         {0x178, 0x3, 0},
13237         {0x179, 0, 0},
13238         {0x17A, 0x21, 0},
13239         {0x17B, 0x21, 0},
13240         {0x17C, 0, 0},
13241         {0x17D, 0xaa, 0},
13242         {0x17E, 0, 0},
13243         {0x17F, 0xaa, 0},
13244         {0x180, 0, 0},
13245         {0x190, 0, 0},
13246         {0x191, 0x77, 0},
13247         {0x192, 0x77, 0},
13248         {0x193, 0x77, 0},
13249         {0x194, 0x77, 0},
13250         {0x195, 0, 0},
13251         {0x196, 0x3, 0},
13252         {0x197, 0x37, 0},
13253         {0x198, 0x3, 0},
13254         {0x199, 0, 0},
13255         {0x19A, 0x21, 0},
13256         {0x19B, 0x21, 0},
13257         {0x19C, 0, 0},
13258         {0x19D, 0xaa, 0},
13259         {0x19E, 0, 0},
13260         {0x19F, 0xaa, 0},
13261         {0x1A0, 0, 0},
13262         {0x1A1, 0x2, 0},
13263         {0x1A2, 0xf, 0},
13264         {0x1A3, 0xf, 0},
13265         {0x1A4, 0, 1},
13266         {0x1A5, 0, 1},
13267         {0x1A6, 0, 1},
13268         {0x1A7, 0x2, 0},
13269         {0x1A8, 0xf, 0},
13270         {0x1A9, 0xf, 0},
13271         {0x1AA, 0, 1},
13272         {0x1AB, 0, 1},
13273         {0x1AC, 0, 1},
13274         {0x1AD, 0x84, 0},
13275         {0x1AE, 0x60, 0},
13276         {0x1AF, 0x47, 0},
13277         {0x1B0, 0x47, 0},
13278         {0x1B1, 0, 0},
13279         {0x1B2, 0, 0},
13280         {0x1B3, 0, 0},
13281         {0x1B4, 0, 0},
13282         {0x1B5, 0, 0},
13283         {0x1B6, 0, 0},
13284         {0x1B7, 0x5, 1},
13285         {0x1B8, 0, 0},
13286         {0x1B9, 0, 0},
13287         {0x1BA, 0, 0},
13288         {0x1BB, 0, 0},
13289         {0x1BC, 0, 0},
13290         {0x1BD, 0, 0},
13291         {0x1BE, 0, 0},
13292         {0x1BF, 0, 0},
13293         {0x1C0, 0, 0},
13294         {0x1C1, 0, 0},
13295         {0x1C2, 0xa0, 1},
13296         {0x1C3, 0, 0},
13297         {0x1C4, 0, 0},
13298         {0x1C5, 0, 0},
13299         {0x1C6, 0, 0},
13300         {0x1C7, 0, 0},
13301         {0x1C8, 0, 0},
13302         {0x1C9, 0, 0},
13303         {0x1CA, 0, 0},
13304         {0xFFFF, 0, 0}
13305 };
13306 
13307 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13308 
13309 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13310 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13311 
13312 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13313         {
13314                 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13315                 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13316                 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13317                 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13318                 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13319                 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13320                 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13321                 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13322                 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13323         },
13324         {
13325                 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13326                 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13327                 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13328                 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13329                 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13330                 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13331                 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13332                 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13333                 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13334         }
13335 };
13336 
13337 static const u32 nphy_tpc_txgain[] = {
13338         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13339         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13340         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13341         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13342         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13343         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13344         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13345         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13346         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13347         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13348         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13349         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13350         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13351         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13352         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13353         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13354         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13355         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13356         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13357         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13358         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13359         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13360         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13361         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13362         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13363         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13364         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13365         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13366         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13367         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13368         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13369         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13370 };
13371 
13372 static const u16 nphy_tpc_loscale[] = {
13373         256, 256, 271, 271, 287, 256, 256, 271,
13374         271, 287, 287, 304, 304, 256, 256, 271,
13375         271, 287, 287, 304, 304, 322, 322, 341,
13376         341, 362, 362, 383, 383, 256, 256, 271,
13377         271, 287, 287, 304, 304, 322, 322, 256,
13378         256, 271, 271, 287, 287, 304, 304, 322,
13379         322, 341, 341, 362, 362, 256, 256, 271,
13380         271, 287, 287, 304, 304, 322, 322, 256,
13381         256, 271, 271, 287, 287, 304, 304, 322,
13382         322, 341, 341, 362, 362, 256, 256, 271,
13383         271, 287, 287, 304, 304, 322, 322, 341,
13384         341, 362, 362, 383, 383, 406, 406, 430,
13385         430, 455, 455, 482, 482, 511, 511, 541,
13386         541, 573, 573, 607, 607, 643, 643, 681,
13387         681, 722, 722, 764, 764, 810, 810, 858,
13388         858, 908, 908, 962, 962, 1019, 1019, 256
13389 };
13390 
13391 static u32 nphy_tpc_txgain_ipa[] = {
13392         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13393         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13394         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13395         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13396         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13397         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13398         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13399         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13400         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13401         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13402         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13403         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13404         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13405         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13406         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13407         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13408         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13409         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13410         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13411         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13412         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13413         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13414         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13415         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13416         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13417         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13418         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13419         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13420         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13421         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13422         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13423         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13424 };
13425 
13426 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13427         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13428         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13429         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13430         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13431         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13432         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13433         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13434         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13435         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13436         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13437         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13438         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13439         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13440         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13441         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13442         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13443         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13444         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13445         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13446         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13447         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13448         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13449         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13450         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13451         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13452         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13453         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13454         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13455         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13456         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13457         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13458         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13459 };
13460 
13461 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13462         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13463         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13464         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13465         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13466         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13467         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13468         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13469         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13470         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13471         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13472         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13473         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13474         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13475         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13476         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13477         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13478         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13479         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13480         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13481         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13482         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13483         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13484         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13485         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13486         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13487         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13488         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13489         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13490         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13491         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13492         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13493         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13494 };
13495 
13496 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13497         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13498         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13499         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13500         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13501         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13502         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13503         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13504         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13505         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13506         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13507         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13508         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13509         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13510         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13511         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13512         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13513         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13514         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13515         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13516         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13517         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13518         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13519         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13520         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13521         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13522         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13523         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13524         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13525         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13526         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13527         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13528         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13529 };
13530 
13531 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13532         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13533         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13534         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13535         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13536         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13537         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13538         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13539         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13540         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13541         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13542         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13543         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13544         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13545         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13546         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13547         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13548         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13549         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13550         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13551         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13552         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13553         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13554         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13555         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13556         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13557         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13558         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13559         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13560         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13561         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13562         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13563         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13564 };
13565 
13566 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13567         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13568         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13569         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13570         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13571         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13572         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13573         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13574         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13575         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13576         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13577         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13578         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13579         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13580         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13581         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13582         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13583         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13584         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13585         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13586         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13587         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13588         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13589         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13590         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13591         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13592         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13593         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13594         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13595         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13599 };
13600 
13601 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13602         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13603         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13604         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13605         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13606         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13607         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13608         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13609         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13610         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13611         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13612         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13613         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13614         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13615         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13616         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13617         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13618         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13619         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13620         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13621         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13622         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13623         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13624         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13625         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13626         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13627         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13628         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13629         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13630         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13634 };
13635 
13636 static u32 nphy_tpc_txgain_ipa_5g[] = {
13637         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13638         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13639         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13640         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13641         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13642         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13643         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13644         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13645         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13646         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13647         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13648         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13649         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13650         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13651         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13652         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13653         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13654         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13655         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13656         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13657         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13658         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13659         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13660         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13661         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13662         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13663         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13664         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13665         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13666         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13667         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13668         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13669 };
13670 
13671 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13672         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13673         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13674         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13675         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13676         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13677         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13678         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13679         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13680         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13681         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13682         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13683         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13684         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13685         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13686         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13687         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13688         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13689         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13690         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13691         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13692         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13693         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13694         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13695         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13696         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13697         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13698         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13699         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13700         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13701         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13702         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13703         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13704 };
13705 
13706 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13707         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13708         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13709         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13710         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13711         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13712         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13713         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13714         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13715         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13716         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13717         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13718         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13719         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13720         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13721         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13722         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13723         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13724         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13725         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13726         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13727         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13728         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13729         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13730         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13731         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13732         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13733         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13734         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13735         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13736         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13737         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13738         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13739 };
13740 
13741 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13742         -114, -108, -98, -91, -84, -78, -70, -62,
13743         -54, -46, -39, -31, -23, -15, -8, 0
13744 };
13745 
13746 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13747         -100, -95, -89, -83, -77, -70, -63, -56,
13748         -48, -41, -33, -25, -19, -12, -6, 0
13749 };
13750 
13751 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13752         -159, -113, -86, -72, -62, -54, -48, -43,
13753         -39, -35, -31, -28, -25, -23, -20, -18,
13754         -17, -15, -13, -11, -10, -8, -7, -6,
13755         -5, -4, -3, -3, -2, -1, -1, 0
13756 };
13757 
13758 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13759         -109, -109, -82, -68, -58, -50, -44, -39,
13760         -35, -31, -28, -26, -23, -21, -19, -17,
13761         -16, -14, -13, -11, -10, -9, -8, -7,
13762         -5, -5, -4, -3, -2, -1, -1, 0
13763 };
13764 
13765 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13766         -122, -122, -95, -80, -69, -61, -54, -49,
13767         -43, -39, -35, -32, -28, -26, -23, -21,
13768         -18, -16, -15, -13, -11, -10, -8, -7,
13769         -6, -5, -4, -3, -2, -1, -1, 0
13770 };
13771 
13772 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13773         -107, -101, -92, -85, -78, -71, -62, -55,
13774         -47, -39, -32, -24, -19, -12, -6, 0
13775 };
13776 
13777 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13778         -110, -104, -95, -88, -81, -74, -66, -58,
13779         -50, -44, -36, -28, -23, -15, -8, 0
13780 };
13781 
13782 static u8 pad_gain_codes_used_2057rev5[] = {
13783         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13784         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13785 };
13786 
13787 static u8 pad_gain_codes_used_2057rev7[] = {
13788         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13789         5, 4, 3, 2, 1
13790 };
13791 
13792 static u8 pad_all_gain_codes_2057[] = {
13793         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13794         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13795         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13796         1, 0
13797 };
13798 
13799 static u8 pga_all_gain_codes_2057[] = {
13800         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13801 };
13802 
13803 static u32 nphy_papd_scaltbl[] = {
13804         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13805         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13806         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13807         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13808         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13809         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13810         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13811         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13812         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13813         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13814         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13815         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13816         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13817         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13818         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13819         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13820 };
13821 
13822 static u32 nphy_tpc_txgain_rev3[] = {
13823         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13824         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13825         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13826         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13827         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13828         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13829         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13830         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13831         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13832         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13833         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13834         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13835         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13836         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13837         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13838         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13839         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13840         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13841         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13842         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13843         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13844         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13845         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13846         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13847         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13848         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13849         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13850         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13851         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13852         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13853         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13854         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13855 };
13856 
13857 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13858         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13859         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13860         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13861         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13862         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13863         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13864         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13865         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13866         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13867         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13868         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13869         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13870         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13871         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13872         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13873         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13874         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13875         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13876         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13877         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13878         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13879         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13880         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13881         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13882         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13883         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13884         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13885         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13886         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13887         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13888         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13889         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13890 };
13891 
13892 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13893         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13894         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13895         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13896         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13897         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13898         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13899         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13900         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13901         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13902         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13903         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13904         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13905         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13906         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13907         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13908         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13909         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13910         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13911         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13912         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13913         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13914         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13915         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13916         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13917         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13918         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13919         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13920         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13921         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13925 };
13926 
13927 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13928         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13929         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13930         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13931         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13932         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13933         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13934         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13935         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13936         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13937         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13938         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13939         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13940         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13941         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13942         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13943         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13944         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13945         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13946         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13947         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13948         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13949         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13950         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13951         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13952         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13953         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13954         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13955         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13956         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13957         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13958         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13959         0x10090001, 0x10090001, 0x10090001, 0x10090001
13960 };
13961 
13962 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13963         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13964         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13965         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13966         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13967         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13968         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13969         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13970         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13971         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13972         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13973         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13974         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13975         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13976         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13977         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13978         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13979         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13980         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13981         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13982         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13983         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13984         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13985         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13986         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13987         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13988         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13989         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13990         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13991         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13992         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13993         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13994         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13995 };
13996 
13997 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13998         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13999         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14000         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14001         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14002         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14003         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14004         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14005         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14006         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14007         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14008         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14009         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14010         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14011         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14012         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14013         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14014         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14015         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14016         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14017         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14018         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14019         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14020         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14021         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14022         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14023         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14024         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14025         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14026         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14027         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14028         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14029         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14030 };
14031 
14032 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14033         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14034         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14035         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14036         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14037         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14038         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14039         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14040         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14041         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14042         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14043         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14044         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14045         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14046         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14047         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14048         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14049         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14050         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14051         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14052         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14053         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14054         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14055         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14056         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14057         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14058         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14059         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14060         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14061         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14062         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14063         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14064         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14065 };
14066 
14067 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14068         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14069         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14070         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14071         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14072         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14073         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14074         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14075         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14076         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14077         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14078         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14079         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14080         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14081         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14082         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14083         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14084         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14085         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14086         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14087         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14088         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14089         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14090         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14091         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14092         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14093         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14094         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14095         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14096         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14097         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14098         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14099         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14100 };
14101 
14102 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14103 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14104 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14105         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14106 };
14107 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14108         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14109 };
14110 
14111 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14112 {
14113         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14114         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14115 
14116         if (NREV_GE(pi->pubpi.phy_rev, 16))
14117                 return true;
14118 
14119         phybist0 = read_phy_reg(pi, 0x0e);
14120         phybist1 = read_phy_reg(pi, 0x0f);
14121         phybist2 = read_phy_reg(pi, 0xea);
14122         phybist3 = read_phy_reg(pi, 0xeb);
14123         phybist4 = read_phy_reg(pi, 0x156);
14124 
14125         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14126             (phybist3 == 0) && (phybist4 == 0))
14127                 return true;
14128 
14129         return false;
14130 }
14131 
14132 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14133 {
14134         u16 addr, val;
14135 
14136         val = 0x1e1f;
14137         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14138              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14139                 write_phy_reg(pi, addr, val);
14140                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14141                         val = 0x3e3f;
14142                 else
14143                         val -= 0x0202;
14144         }
14145 
14146         write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14147 }
14148 
14149 void
14150 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14151                          u32 width, const void *data)
14152 {
14153         struct phytbl_info tbl;
14154 
14155         tbl.tbl_id = id;
14156         tbl.tbl_len = len;
14157         tbl.tbl_offset = offset;
14158         tbl.tbl_width = width;
14159         tbl.tbl_ptr = data;
14160         wlc_phy_write_table_nphy(pi, &tbl);
14161 }
14162 
14163 void
14164 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14165                         u32 width, void *data)
14166 {
14167         struct phytbl_info tbl;
14168 
14169         tbl.tbl_id = id;
14170         tbl.tbl_len = len;
14171         tbl.tbl_offset = offset;
14172         tbl.tbl_width = width;
14173         tbl.tbl_ptr = data;
14174         wlc_phy_read_table_nphy(pi, &tbl);
14175 }
14176 
14177 static void
14178 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14179 {
14180         uint idx;
14181 
14182         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14183                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14184                         wlc_phy_write_table_nphy(pi,
14185                                                  &mimophytbl_info_rev16[idx]);
14186         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14187                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14188                         wlc_phy_write_table_nphy(pi,
14189                                                  &mimophytbl_info_rev7[idx]);
14190         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14191                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14192                         wlc_phy_write_table_nphy(pi,
14193                                                  &mimophytbl_info_rev3[idx]);
14194         } else {
14195                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14196                         wlc_phy_write_table_nphy(pi,
14197                                                  &mimophytbl_info_rev0[idx]);
14198         }
14199 }
14200 
14201 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14202 {
14203         uint idx = 0;
14204         u8 antswctrllut;
14205 
14206         if (pi->phy_init_por)
14207                 wlc_phy_static_table_download_nphy(pi);
14208 
14209         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14210 
14211                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14212                                pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14213                                antswctrllut;
14214 
14215                 switch (antswctrllut) {
14216                 case 0:
14217 
14218                         break;
14219 
14220                 case 1:
14221 
14222                         if (pi->aa2g == 7)
14223                                 wlc_phy_table_write_nphy(
14224                                         pi,
14225                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14226                                         2, 0x21, 8,
14227                                         &ant_sw_ctrl_tbl_rev8_2o3[0]);
14228                         else
14229                                 wlc_phy_table_write_nphy(
14230                                         pi,
14231                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14232                                         2, 0x21, 8,
14233                                         &ant_sw_ctrl_tbl_rev8
14234                                         [0]);
14235 
14236                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14237                                                  2, 0x25, 8,
14238                                                  &ant_sw_ctrl_tbl_rev8[2]);
14239                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14240                                                  2, 0x29, 8,
14241                                                  &ant_sw_ctrl_tbl_rev8[4]);
14242                         break;
14243 
14244                 case 2:
14245 
14246                         wlc_phy_table_write_nphy(
14247                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248                                 2, 0x1, 8,
14249                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14250                         wlc_phy_table_write_nphy(
14251                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14252                                 2, 0x5, 8,
14253                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14254                         wlc_phy_table_write_nphy(
14255                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14256                                 2, 0x9, 8,
14257                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14258 
14259                         wlc_phy_table_write_nphy(
14260                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261                                 2, 0x21, 8,
14262                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14263                         wlc_phy_table_write_nphy(
14264                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265                                 2, 0x25, 8,
14266                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14267                         wlc_phy_table_write_nphy(
14268                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14269                                 2, 0x29, 8,
14270                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14271                         break;
14272 
14273                 default:
14274                         break;
14275                 }
14276 
14277         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14278                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14279 
14280                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14281                                 antswctrllut =
14282                                         CHSPEC_IS2G(pi->radio_chanspec) ?
14283                                         pi->srom_fem2g.antswctrllut :
14284                                         pi->srom_fem5g.antswctrllut;
14285                                 switch (antswctrllut) {
14286                                 case 0:
14287                                         wlc_phy_write_table_nphy(
14288                                                 pi,
14289                                                 &mimophytbl_info_rev3_volatile
14290                                                 [idx]);
14291                                         break;
14292                                 case 1:
14293                                         wlc_phy_write_table_nphy(
14294                                                 pi,
14295                                                 &mimophytbl_info_rev3_volatile1
14296                                                 [idx]);
14297                                         break;
14298                                 case 2:
14299                                         wlc_phy_write_table_nphy(
14300                                                 pi,
14301                                                 &mimophytbl_info_rev3_volatile2
14302                                                 [idx]);
14303                                         break;
14304                                 case 3:
14305                                         wlc_phy_write_table_nphy(
14306                                                 pi,
14307                                                 &mimophytbl_info_rev3_volatile3
14308                                                 [idx]);
14309                                         break;
14310                                 default:
14311                                         break;
14312                                 }
14313                         } else {
14314                                 wlc_phy_write_table_nphy(
14315                                         pi,
14316                                         &mimophytbl_info_rev3_volatile[idx]);
14317                         }
14318                 }
14319         } else {
14320                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14321                         wlc_phy_write_table_nphy(pi,
14322                                                  &mimophytbl_info_rev0_volatile
14323                                                  [idx]);
14324         }
14325 }
14326 
14327 static void
14328 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14329 {
14330         write_phy_reg(pi, 0x77, holdoff);
14331         write_phy_reg(pi, 0xb4, delay);
14332 }
14333 
14334 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14335 {
14336         u16 holdoff, delay;
14337 
14338         if (rifs) {
14339 
14340                 holdoff = 0x10;
14341                 delay = 0x258;
14342         } else {
14343 
14344                 holdoff = 0x15;
14345                 delay = 0x320;
14346         }
14347 
14348         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14349 
14350         if (pi->sh && (pi->sh->_rifs_phy != rifs))
14351                 pi->sh->_rifs_phy = rifs;
14352 }
14353 
14354 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14355 {
14356 
14357         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14358                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14359                 pi->phy_5g_pwrgain = true;
14360                 return;
14361         }
14362 
14363         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14364         pi->phy_5g_pwrgain = false;
14365 
14366         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14367             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14368                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14369         else if ((pi->sh->sromrev >= 4)
14370                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14371                 pi->phy_5g_pwrgain = true;
14372 }
14373 
14374 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14375 {
14376         u16 bw40po, cddpo, stbcpo, bwduppo;
14377         uint band_num;
14378         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14379 
14380         if (pi->sh->sromrev >= 9)
14381                 return;
14382 
14383         bw40po = sprom->bw40po;
14384         pi->bw402gpo = bw40po & 0xf;
14385         pi->bw405gpo = (bw40po & 0xf0) >> 4;
14386         pi->bw405glpo = (bw40po & 0xf00) >> 8;
14387         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14388 
14389         cddpo = sprom->cddpo;
14390         pi->cdd2gpo = cddpo & 0xf;
14391         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14392         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14393         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14394 
14395         stbcpo = sprom->stbcpo;
14396         pi->stbc2gpo = stbcpo & 0xf;
14397         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14398         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14399         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14400 
14401         bwduppo = sprom->bwduppo;
14402         pi->bwdup2gpo = bwduppo & 0xf;
14403         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14404         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14405         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14406 
14407         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14408              band_num++) {
14409                 switch (band_num) {
14410                 case 0:
14411                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14412                                 sprom->core_pwr_info[0].maxpwr_2g;
14413                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14414                                 sprom->core_pwr_info[1].maxpwr_2g;
14415                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14416                                 sprom->core_pwr_info[0].pa_2g[0];
14417                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14418                                 sprom->core_pwr_info[1].pa_2g[0];
14419                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14420                                 sprom->core_pwr_info[0].pa_2g[1];
14421                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14422                                 sprom->core_pwr_info[1].pa_2g[1];
14423                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14424                                 sprom->core_pwr_info[0].pa_2g[2];
14425                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14426                                 sprom->core_pwr_info[1].pa_2g[2];
14427                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14428                                 sprom->core_pwr_info[0].itssi_2g;
14429                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14430                                 sprom->core_pwr_info[1].itssi_2g;
14431 
14432                         pi->cck2gpo = sprom->cck2gpo;
14433 
14434                         pi->ofdm2gpo = sprom->ofdm2gpo;
14435 
14436                         pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14437                         pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14438                         pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14439                         pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14440                         pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14441                         pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14442                         pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14443                         pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14444                         break;
14445                 case 1:
14446 
14447                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14448                                 sprom->core_pwr_info[0].maxpwr_5g;
14449                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14450                                 sprom->core_pwr_info[1].maxpwr_5g;
14451                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14452                                 sprom->core_pwr_info[0].pa_5g[0];
14453                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14454                                 sprom->core_pwr_info[1].pa_5g[0];
14455                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14456                                 sprom->core_pwr_info[0].pa_5g[1];
14457                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14458                                 sprom->core_pwr_info[1].pa_5g[1];
14459                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14460                                 sprom->core_pwr_info[0].pa_5g[2];
14461                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14462                                 sprom->core_pwr_info[1].pa_5g[2];
14463                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14464                                 sprom->core_pwr_info[0].itssi_5g;
14465                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14466                                 sprom->core_pwr_info[1].itssi_5g;
14467 
14468                         pi->ofdm5gpo = sprom->ofdm5gpo;
14469 
14470                         pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14471                         pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14472                         pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14473                         pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14474                         pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14475                         pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14476                         pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14477                         pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14478                         break;
14479                 case 2:
14480 
14481                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14482                                 sprom->core_pwr_info[0].maxpwr_5gl;
14483                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14484                                 sprom->core_pwr_info[1].maxpwr_5gl;
14485                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14486                                 sprom->core_pwr_info[0].pa_5gl[0];
14487                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14488                                 sprom->core_pwr_info[1].pa_5gl[0];
14489                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14490                                 sprom->core_pwr_info[0].pa_5gl[1];
14491                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14492                                 sprom->core_pwr_info[1].pa_5gl[1];
14493                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14494                                 sprom->core_pwr_info[0].pa_5gl[2];
14495                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14496                                 sprom->core_pwr_info[1].pa_5gl[2];
14497                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14498                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14499 
14500                         pi->ofdm5glpo = sprom->ofdm5glpo;
14501 
14502                         pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14503                         pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14504                         pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14505                         pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14506                         pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14507                         pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14508                         pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14509                         pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14510                         break;
14511                 case 3:
14512 
14513                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14514                                 sprom->core_pwr_info[0].maxpwr_5gh;
14515                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14516                                 sprom->core_pwr_info[1].maxpwr_5gh;
14517                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14518                                 sprom->core_pwr_info[0].pa_5gh[0];
14519                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14520                                 sprom->core_pwr_info[1].pa_5gh[0];
14521                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14522                                 sprom->core_pwr_info[0].pa_5gh[1];
14523                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14524                                 sprom->core_pwr_info[1].pa_5gh[1];
14525                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14526                                 sprom->core_pwr_info[0].pa_5gh[2];
14527                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14528                                 sprom->core_pwr_info[1].pa_5gh[2];
14529                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14530                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14531 
14532                         pi->ofdm5ghpo = sprom->ofdm5ghpo;
14533 
14534                         pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14535                         pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14536                         pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14537                         pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14538                         pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14539                         pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14540                         pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14541                         pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14542                         break;
14543                 }
14544         }
14545 
14546         wlc_phy_txpwr_apply_nphy(pi);
14547 }
14548 
14549 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14550 {
14551         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14552 
14553         pi->antswitch = sprom->antswitch;
14554         pi->aa2g = sprom->ant_available_bg;
14555         pi->aa5g = sprom->ant_available_a;
14556 
14557         pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14558         pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14559         pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14560         pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14561         pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14562 
14563         pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14564         pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14565         pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14566         pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14567         if (sprom->fem.ghz5.antswlut)
14568                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14569         else
14570                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14571 
14572         wlc_phy_txpower_ipa_upd(pi);
14573 
14574         pi->phy_txcore_disable_temp = sprom->tempthresh;
14575         if (pi->phy_txcore_disable_temp == 0)
14576                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14577 
14578         pi->phy_tempsense_offset = sprom->tempoffset;
14579         if (pi->phy_tempsense_offset != 0) {
14580                 if (pi->phy_tempsense_offset >
14581                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14582                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14583                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14584                                                      NPHY_SROM_MINTEMPOFFSET))
14585                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14586                 else
14587                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14588         }
14589 
14590         pi->phy_txcore_enable_temp =
14591                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14592 
14593         pi->phycal_tempdelta = sprom->phycal_tempdelta;
14594         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14595                 pi->phycal_tempdelta = 0;
14596 
14597         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14598 
14599         return true;
14600 }
14601 
14602 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14603 {
14604         uint i;
14605 
14606         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14607                 pi->phyhang_avoid = true;
14608 
14609         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14610                 pi->nphy_gband_spurwar_en = true;
14611                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14612                         pi->nphy_aband_spurwar_en = true;
14613         }
14614         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14615                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14616                         pi->nphy_gband_spurwar2_en = true;
14617         }
14618 
14619         pi->n_preamble_override = AUTO;
14620         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14621                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14622 
14623         pi->nphy_txrx_chain = AUTO;
14624         pi->phy_scraminit = AUTO;
14625 
14626         pi->nphy_rxcalparams = 0x010100B5;
14627 
14628         pi->nphy_perical = PHY_PERICAL_MPHASE;
14629         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14630         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14631 
14632         pi->nphy_gain_boost = true;
14633         pi->nphy_elna_gain_config = false;
14634         pi->radio_is_on = false;
14635 
14636         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14637                 pi->nphy_txpwrindex[i].index = AUTO;
14638 
14639         wlc_phy_txpwrctrl_config_nphy(pi);
14640         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14641                 pi->hwpwrctrl_capable = true;
14642 
14643         pi->pi_fptr.init = wlc_phy_init_nphy;
14644         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14645         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14646         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14647 
14648         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14649                 return false;
14650 
14651         return true;
14652 }
14653 
14654 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14655 {
14656         s32 rfpwr_offset = 0;
14657 
14658         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14659                 if ((pi->pubpi.radiorev == 3) ||
14660                     (pi->pubpi.radiorev == 4) ||
14661                     (pi->pubpi.radiorev == 6))
14662                         rfpwr_offset = (s16)
14663                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14664                                        [pad_gn];
14665                 else if (pi->pubpi.radiorev == 5)
14666                         rfpwr_offset = (s16)
14667                                        nphy_papd_padgain_dlt_2g_2057rev5
14668                                        [pad_gn];
14669                 else if ((pi->pubpi.radiorev == 7)
14670                          || (pi->pubpi.radiorev ==
14671                              8))
14672                         rfpwr_offset = (s16)
14673                                        nphy_papd_padgain_dlt_2g_2057rev7
14674                                        [pad_gn];
14675         } else {
14676                 if ((pi->pubpi.radiorev == 3) ||
14677                     (pi->pubpi.radiorev == 4) ||
14678                     (pi->pubpi.radiorev == 6))
14679                         rfpwr_offset = (s16)
14680                                        nphy_papd_pgagain_dlt_5g_2057
14681                                        [pga_gn];
14682                 else if ((pi->pubpi.radiorev == 7)
14683                          || (pi->pubpi.radiorev ==
14684                              8))
14685                         rfpwr_offset = (s16)
14686                                        nphy_papd_pgagain_dlt_5g_2057rev7
14687                                        [pga_gn];
14688         }
14689         return rfpwr_offset;
14690 }
14691 
14692 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14693 {
14694         bool gf_preamble = false;
14695         u16 val;
14696 
14697         if (preamble == BRCMS_N_PREAMBLE_GF)
14698                 gf_preamble = true;
14699 
14700         val = read_phy_reg(pi, 0xed);
14701 
14702         val |= RX_GF_MM_AUTO;
14703         val &= ~RX_GF_OR_MM;
14704         if (gf_preamble)
14705                 val |= RX_GF_OR_MM;
14706 
14707         write_phy_reg(pi, 0xed, val);
14708 }
14709 
14710 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14711 {
14712         int j, type;
14713         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14714 
14715         for (type = 0; type < 3; type++) {
14716                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14717                         write_phy_reg(pi, addr_offset[type] + j,
14718                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14719         }
14720 
14721         if (pi->bw == WL_CHANSPEC_BW_40) {
14722                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14723                         write_phy_reg(pi, 0x186 + j,
14724                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14725         } else {
14726                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14727                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728                                 write_phy_reg(pi, 0x186 + j,
14729                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14730                 }
14731 
14732                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14733                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734                                 write_phy_reg(pi, 0x2c5 + j,
14735                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14736                 }
14737         }
14738 }
14739 
14740 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14741 {
14742         int j;
14743 
14744         if (pi->bw == WL_CHANSPEC_BW_40) {
14745                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14746                         write_phy_reg(pi, 0x195 + j,
14747                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14748         } else {
14749                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14750                         write_phy_reg(pi, 0x186 + j,
14751                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14752         }
14753 }
14754 
14755 static void
14756 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14757                        const u8 *dlys, u8 len)
14758 {
14759         u32 t1_offset, t2_offset;
14760         u8 ctr;
14761         u8 end_event =
14762                 NREV_GE(pi->pubpi.phy_rev,
14763                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14764         u8 end_dly = 1;
14765 
14766         if (pi->phyhang_avoid)
14767                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14768 
14769         t1_offset = cmd << 4;
14770         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14771                                  events);
14772         t2_offset = t1_offset + 0x080;
14773         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14774                                  dlys);
14775 
14776         for (ctr = len; ctr < 16; ctr++) {
14777                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14778                                          t1_offset + ctr, 8, &end_event);
14779                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14780                                          t2_offset + ctr, 8, &end_dly);
14781         }
14782 
14783         if (pi->phyhang_avoid)
14784                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14785 }
14786 
14787 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14788 {
14789         u16 lpf_bw_ctl_val = 0;
14790         u16 rx2tx_lpf_rc_lut_offset = 0;
14791 
14792         if (offset == 0) {
14793                 if (CHSPEC_IS40(pi->radio_chanspec))
14794                         rx2tx_lpf_rc_lut_offset = 0x159;
14795                 else
14796                         rx2tx_lpf_rc_lut_offset = 0x154;
14797         } else {
14798                 rx2tx_lpf_rc_lut_offset = offset;
14799         }
14800         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14801                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14802                                 &lpf_bw_ctl_val);
14803 
14804         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14805 
14806         return lpf_bw_ctl_val;
14807 }
14808 
14809 static void
14810 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14811                                   u8 core_mask, u8 off, u8 override_id)
14812 {
14813         u8 core_num;
14814         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14815         u8 val_shift = 0;
14816 
14817         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14818                 en_mask = field;
14819                 for (core_num = 0; core_num < 2; core_num++) {
14820                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14821 
14822                                 switch (field) {
14823                                 case (0x1 << 2):
14824                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14825                                         val_addr = (core_num == 0) ? 0x7a :
14826                                                    0x7d;
14827                                         val_mask = (0x1 << 1);
14828                                         val_shift = 1;
14829                                         break;
14830                                 case (0x1 << 3):
14831                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14832                                         val_addr = (core_num == 0) ? 0x7a :
14833                                                    0x7d;
14834                                         val_mask = (0x1 << 2);
14835                                         val_shift = 2;
14836                                         break;
14837                                 case (0x1 << 4):
14838                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14839                                         val_addr = (core_num == 0) ? 0x7a :
14840                                                    0x7d;
14841                                         val_mask = (0x1 << 4);
14842                                         val_shift = 4;
14843                                         break;
14844                                 case (0x1 << 5):
14845                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14846                                         val_addr = (core_num == 0) ? 0x7a :
14847                                                    0x7d;
14848                                         val_mask = (0x1 << 5);
14849                                         val_shift = 5;
14850                                         break;
14851                                 case (0x1 << 6):
14852                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14853                                         val_addr = (core_num == 0) ? 0x7a :
14854                                                    0x7d;
14855                                         val_mask = (0x1 << 6);
14856                                         val_shift = 6;
14857                                         break;
14858                                 case (0x1 << 7):
14859                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14860                                         val_addr = (core_num == 0) ? 0x7a :
14861                                                    0x7d;
14862                                         val_mask = (0x1 << 7);
14863                                         val_shift = 7;
14864                                         break;
14865                                 case (0x1 << 10):
14866                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14867                                         val_addr = (core_num == 0) ? 0xf8 :
14868                                                    0xfa;
14869                                         val_mask = (0x7 << 4);
14870                                         val_shift = 4;
14871                                         break;
14872                                 case (0x1 << 11):
14873                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14874                                         val_addr = (core_num == 0) ? 0x7b :
14875                                                    0x7e;
14876                                         val_mask = (0xffff << 0);
14877                                         val_shift = 0;
14878                                         break;
14879                                 case (0x1 << 12):
14880                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14881                                         val_addr = (core_num == 0) ? 0x7c :
14882                                                    0x7f;
14883                                         val_mask = (0xffff << 0);
14884                                         val_shift = 0;
14885                                         break;
14886                                 case (0x3 << 13):
14887                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14888                                         val_addr = (core_num == 0) ? 0x348 :
14889                                                    0x349;
14890                                         val_mask = (0xff << 0);
14891                                         val_shift = 0;
14892                                         break;
14893                                 case (0x1 << 13):
14894                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14895                                         val_addr = (core_num == 0) ? 0x348 :
14896                                                    0x349;
14897                                         val_mask = (0xf << 0);
14898                                         val_shift = 0;
14899                                         break;
14900                                 default:
14901                                         addr = 0xffff;
14902                                         break;
14903                                 }
14904                         } else if (override_id ==
14905                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14906 
14907                                 switch (field) {
14908                                 case (0x1 << 1):
14909                                         en_addr = (core_num == 0) ? 0x342 :
14910                                                   0x343;
14911                                         val_addr = (core_num == 0) ? 0x340 :
14912                                                    0x341;
14913                                         val_mask = (0x1 << 1);
14914                                         val_shift = 1;
14915                                         break;
14916                                 case (0x1 << 3):
14917                                         en_addr = (core_num == 0) ? 0x342 :
14918                                                   0x343;
14919                                         val_addr = (core_num == 0) ? 0x340 :
14920                                                    0x341;
14921                                         val_mask = (0x1 << 3);
14922                                         val_shift = 3;
14923                                         break;
14924                                 case (0x1 << 5):
14925                                         en_addr = (core_num == 0) ? 0x342 :
14926                                                   0x343;
14927                                         val_addr = (core_num == 0) ? 0x340 :
14928                                                    0x341;
14929                                         val_mask = (0x1 << 5);
14930                                         val_shift = 5;
14931                                         break;
14932                                 case (0x1 << 4):
14933                                         en_addr = (core_num == 0) ? 0x342 :
14934                                                   0x343;
14935                                         val_addr = (core_num == 0) ? 0x340 :
14936                                                    0x341;
14937                                         val_mask = (0x1 << 4);
14938                                         val_shift = 4;
14939                                         break;
14940                                 case (0x1 << 2):
14941 
14942                                         en_addr = (core_num == 0) ? 0x342 :
14943                                                   0x343;
14944                                         val_addr = (core_num == 0) ? 0x340 :
14945                                                    0x341;
14946                                         val_mask = (0x1 << 2);
14947                                         val_shift = 2;
14948                                         break;
14949                                 case (0x1 << 7):
14950 
14951                                         en_addr = (core_num == 0) ? 0x342 :
14952                                                   0x343;
14953                                         val_addr = (core_num == 0) ? 0x340 :
14954                                                    0x341;
14955                                         val_mask = (0x7 << 8);
14956                                         val_shift = 8;
14957                                         break;
14958                                 case (0x1 << 11):
14959                                         en_addr = (core_num == 0) ? 0x342 :
14960                                                   0x343;
14961                                         val_addr = (core_num == 0) ? 0x340 :
14962                                                    0x341;
14963                                         val_mask = (0x1 << 14);
14964                                         val_shift = 14;
14965                                         break;
14966                                 case (0x1 << 10):
14967                                         en_addr = (core_num == 0) ? 0x342 :
14968                                                   0x343;
14969                                         val_addr = (core_num == 0) ? 0x340 :
14970                                                    0x341;
14971                                         val_mask = (0x1 << 13);
14972                                         val_shift = 13;
14973                                         break;
14974                                 case (0x1 << 9):
14975                                         en_addr = (core_num == 0) ? 0x342 :
14976                                                   0x343;
14977                                         val_addr = (core_num == 0) ? 0x340 :
14978                                                    0x341;
14979                                         val_mask = (0x1 << 12);
14980                                         val_shift = 12;
14981                                         break;
14982                                 case (0x1 << 8):
14983                                         en_addr = (core_num == 0) ? 0x342 :
14984                                                   0x343;
14985                                         val_addr = (core_num == 0) ? 0x340 :
14986                                                    0x341;
14987                                         val_mask = (0x1 << 11);
14988                                         val_shift = 11;
14989                                         break;
14990                                 case (0x1 << 6):
14991                                         en_addr = (core_num == 0) ? 0x342 :
14992                                                   0x343;
14993                                         val_addr = (core_num == 0) ? 0x340 :
14994                                                    0x341;
14995                                         val_mask = (0x1 << 6);
14996                                         val_shift = 6;
14997                                         break;
14998                                 case (0x1 << 0):
14999                                         en_addr = (core_num == 0) ? 0x342 :
15000                                                   0x343;
15001                                         val_addr = (core_num == 0) ? 0x340 :
15002                                                    0x341;
15003                                         val_mask = (0x1 << 0);
15004                                         val_shift = 0;
15005                                         break;
15006                                 default:
15007                                         addr = 0xffff;
15008                                         break;
15009                                 }
15010                         } else if (override_id ==
15011                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15012 
15013                                 switch (field) {
15014                                 case (0x1 << 3):
15015                                         en_addr = (core_num == 0) ? 0x346 :
15016                                                   0x347;
15017                                         val_addr = (core_num == 0) ? 0x344 :
15018                                                    0x345;
15019                                         val_mask = (0x1 << 3);
15020                                         val_shift = 3;
15021                                         break;
15022                                 case (0x1 << 1):
15023                                         en_addr = (core_num == 0) ? 0x346 :
15024                                                   0x347;
15025                                         val_addr = (core_num == 0) ? 0x344 :
15026                                                    0x345;
15027                                         val_mask = (0x1 << 1);
15028                                         val_shift = 1;
15029                                         break;
15030                                 case (0x1 << 0):
15031                                         en_addr = (core_num == 0) ? 0x346 :
15032                                                   0x347;
15033                                         val_addr = (core_num == 0) ? 0x344 :
15034                                                    0x345;
15035                                         val_mask = (0x1 << 0);
15036                                         val_shift = 0;
15037                                         break;
15038                                 case (0x1 << 2):
15039                                         en_addr = (core_num == 0) ? 0x346 :
15040                                                   0x347;
15041                                         val_addr = (core_num == 0) ? 0x344 :
15042                                                    0x345;
15043                                         val_mask = (0x1 << 2);
15044                                         val_shift = 2;
15045                                         break;
15046                                 case (0x1 << 4):
15047                                         en_addr = (core_num == 0) ? 0x346 :
15048                                                   0x347;
15049                                         val_addr = (core_num == 0) ? 0x344 :
15050                                                    0x345;
15051                                         val_mask = (0x1 << 4);
15052                                         val_shift = 4;
15053                                         break;
15054                                 default:
15055                                         addr = 0xffff;
15056                                         break;
15057                                 }
15058                         }
15059 
15060                         if (off) {
15061                                 and_phy_reg(pi, en_addr, ~en_mask);
15062                                 and_phy_reg(pi, val_addr, ~val_mask);
15063                         } else {
15064 
15065                                 if ((core_mask == 0)
15066                                     || (core_mask & (1 << core_num))) {
15067                                         or_phy_reg(pi, en_addr, en_mask);
15068 
15069                                         if (addr != 0xffff)
15070                                                 mod_phy_reg(pi, val_addr,
15071                                                             val_mask,
15072                                                             (value <<
15073                                                              val_shift));
15074                                 }
15075                         }
15076                 }
15077         }
15078 }
15079 
15080 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15081 {
15082         uint core;
15083         int ctr;
15084         s16 gain_delta[2];
15085         u8 curr_channel;
15086         u16 minmax_gain[2];
15087         u16 regval[4];
15088 
15089         if (pi->phyhang_avoid)
15090                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15091 
15092         if (pi->nphy_gain_boost) {
15093                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15094 
15095                         gain_delta[0] = 6;
15096                         gain_delta[1] = 6;
15097                 } else {
15098 
15099                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15100                         gain_delta[0] =
15101                                 (s16)
15102                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15103                                                curr_channel) +
15104                                               nphy_lnagain_est0[1]), 13);
15105                         gain_delta[1] =
15106                                 (s16)
15107                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15108                                                curr_channel) +
15109                                               nphy_lnagain_est1[1]), 13);
15110                 }
15111         } else {
15112 
15113                 gain_delta[0] = 0;
15114                 gain_delta[1] = 0;
15115         }
15116 
15117         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15118                 if (pi->nphy_elna_gain_config) {
15119 
15120                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15121                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15122                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15123                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15124                 } else {
15125                         for (ctr = 0; ctr < 4; ctr++)
15126                                 regval[ctr] =
15127                                         nphy_def_lnagains[ctr] +
15128                                         gain_delta[core];
15129                 }
15130                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15131 
15132                 minmax_gain[core] =
15133                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15134         }
15135 
15136         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15137         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15138 
15139         if (pi->phyhang_avoid)
15140                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15141 }
15142 
15143 static void
15144 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15145 {
15146         if (core == PHY_CORE_0) {
15147                 write_phy_reg(pi, 0x38, 0x4);
15148                 if (CHSPEC_IS2G(pi->radio_chanspec))
15149                         write_phy_reg(pi, 0x37, 0x0060);
15150                 else
15151                         write_phy_reg(pi, 0x37, 0x1080);
15152         } else if (core == PHY_CORE_1) {
15153                 write_phy_reg(pi, 0x2ae, 0x4);
15154                 if (CHSPEC_IS2G(pi->radio_chanspec))
15155                         write_phy_reg(pi, 0x2ad, 0x0060);
15156                 else
15157                         write_phy_reg(pi, 0x2ad, 0x1080);
15158         }
15159 }
15160 
15161 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15162 {
15163         u8 txchain0, txchain1;
15164 
15165         txchain0 = txchain & 0x1;
15166         txchain1 = (txchain & 0x2) >> 1;
15167         if (!txchain0)
15168                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15169 
15170         if (!txchain1)
15171                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15172 }
15173 
15174 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15175 {
15176         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15177         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15178         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15179         s8 tia_gainbits[] = {
15180                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15181 
15182         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15183         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15184 
15185         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15186 
15187         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15188         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15189 
15190         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15191                                  lna1_gain_db);
15192         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15193                                  lna1_gain_db);
15194 
15195         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15196                                  lna2_gain_db);
15197         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15198                                  lna2_gain_db);
15199 
15200         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15201                                  tia_gain_db);
15202         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15203                                  tia_gain_db);
15204 
15205         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15206                                  tia_gainbits);
15207         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15208                                  tia_gainbits);
15209 
15210         write_phy_reg(pi, 0x37, 0x74);
15211         write_phy_reg(pi, 0x2ad, 0x74);
15212         write_phy_reg(pi, 0x38, 0x18);
15213         write_phy_reg(pi, 0x2ae, 0x18);
15214 
15215         write_phy_reg(pi, 0x2b, 0xe8);
15216         write_phy_reg(pi, 0x41, 0xe8);
15217 
15218         if (CHSPEC_IS20(pi->radio_chanspec)) {
15219 
15220                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15221                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15222         } else {
15223 
15224                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15225                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15226         }
15227 }
15228 
15229 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15230 {
15231         u16 currband;
15232         static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15233         const s8 *lna1_gain_db = NULL;
15234         const s8 *lna1_gain_db_2 = NULL;
15235         const s8 *lna2_gain_db = NULL;
15236         static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15237         const s8 *tia_gain_db;
15238         static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15239         const s8 *tia_gainbits;
15240         static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15241         const u16 *rfseq_init_gain;
15242         u16 init_gaincode;
15243         u16 clip1hi_gaincode;
15244         u16 clip1md_gaincode = 0;
15245         u16 clip1md_gaincode_B;
15246         u16 clip1lo_gaincode;
15247         u16 clip1lo_gaincode_B;
15248         u8 crsminl_th = 0;
15249         u8 crsminu_th;
15250         u16 nbclip_th = 0;
15251         u8 w1clip_th;
15252         u16 freq;
15253         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15254         u8 chg_nbclip_th = 0;
15255 
15256         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15257         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15258 
15259         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15260         if (currband == 0) {
15261 
15262                 lna1_gain_db = lna1G_gain_db_rev7;
15263 
15264                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15265                                          lna1_gain_db);
15266                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15267                                          lna1_gain_db);
15268 
15269                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15270 
15271                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15272                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15273                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15274                 }
15275 
15276                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15277 
15278                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15279                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15280                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15281                 }
15282         } else {
15283 
15284                 init_gaincode = 0x9e;
15285                 clip1hi_gaincode = 0x9e;
15286                 clip1md_gaincode_B = 0x24;
15287                 clip1lo_gaincode = 0x8a;
15288                 clip1lo_gaincode_B = 8;
15289                 rfseq_init_gain = rfseqA_init_gain_rev7;
15290 
15291                 tia_gain_db = tiaA_gain_db_rev7;
15292                 tia_gainbits = tiaA_gainbits_rev7;
15293 
15294                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15295                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15296 
15297                         w1clip_th = 25;
15298                         clip1md_gaincode = 0x82;
15299 
15300                         if ((freq <= 5080) || (freq == 5825)) {
15301 
15302                                 static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15303                                 static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15304                                 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15305 
15306                                 crsminu_th = 0x3e;
15307                                 lna1_gain_db = lna1A_gain_db_rev7;
15308                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15309                                 lna2_gain_db = lna2A_gain_db_rev7;
15310                         } else if ((freq >= 5500) && (freq <= 5700)) {
15311 
15312                                 static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15313                                 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15314                                 static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15315 
15316                                 crsminu_th = 0x45;
15317                                 clip1md_gaincode_B = 0x14;
15318                                 nbclip_th = 0xff;
15319                                 chg_nbclip_th = 1;
15320                                 lna1_gain_db = lna1A_gain_db_rev7;
15321                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15322                                 lna2_gain_db = lna2A_gain_db_rev7;
15323                         } else {
15324 
15325                                 static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15326                                 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15327                                 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15328 
15329                                 crsminu_th = 0x41;
15330                                 lna1_gain_db = lna1A_gain_db_rev7;
15331                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15332                                 lna2_gain_db = lna2A_gain_db_rev7;
15333                         }
15334 
15335                         if (freq <= 4920) {
15336                                 nvar_baseline_offset0 = 5;
15337                                 nvar_baseline_offset1 = 5;
15338                         } else if ((freq > 4920) && (freq <= 5320)) {
15339                                 nvar_baseline_offset0 = 3;
15340                                 nvar_baseline_offset1 = 5;
15341                         } else if ((freq > 5320) && (freq <= 5700)) {
15342                                 nvar_baseline_offset0 = 3;
15343                                 nvar_baseline_offset1 = 2;
15344                         } else {
15345                                 nvar_baseline_offset0 = 4;
15346                                 nvar_baseline_offset1 = 0;
15347                         }
15348                 } else {
15349 
15350                         crsminu_th = 0x3a;
15351                         crsminl_th = 0x3a;
15352                         w1clip_th = 20;
15353 
15354                         if ((freq >= 4920) && (freq <= 5320)) {
15355                                 nvar_baseline_offset0 = 4;
15356                                 nvar_baseline_offset1 = 5;
15357                         } else if ((freq > 5320) && (freq <= 5550)) {
15358                                 nvar_baseline_offset0 = 4;
15359                                 nvar_baseline_offset1 = 2;
15360                         } else {
15361                                 nvar_baseline_offset0 = 5;
15362                                 nvar_baseline_offset1 = 3;
15363                         }
15364                 }
15365 
15366                 write_phy_reg(pi, 0x20, init_gaincode);
15367                 write_phy_reg(pi, 0x2a7, init_gaincode);
15368 
15369                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15370                                          pi->pubpi.phy_corenum, 0x106, 16,
15371                                          rfseq_init_gain);
15372 
15373                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15374                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15375 
15376                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15377                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15378 
15379                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15380                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15381                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15382                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15383 
15384                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15385                                          tia_gain_db);
15386                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15387                                          tia_gain_db);
15388 
15389                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15390                                          tia_gainbits);
15391                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15392                                          tia_gainbits);
15393 
15394                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15395 
15396                 if (chg_nbclip_th == 1) {
15397                         write_phy_reg(pi, 0x2b, nbclip_th);
15398                         write_phy_reg(pi, 0x41, nbclip_th);
15399                 }
15400 
15401                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15402                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15403 
15404                 mod_phy_reg(pi, 0x2e4,
15405                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15406 
15407                 mod_phy_reg(pi, 0x2e4,
15408                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15409 
15410                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15411 
15412                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15413                                                  lna1_gain_db);
15414                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15415                                                  lna1_gain_db_2);
15416 
15417                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15418                                                  8, lna2_gain_db);
15419                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15420                                                  8, lna2_gain_db);
15421 
15422                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15423                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15424                 } else {
15425                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15426                 }
15427         }
15428 }
15429 
15430 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15431 {
15432         u16 w1th, hpf_code, currband;
15433         int ctr;
15434         u8 rfseq_updategainu_events[] = {
15435                 NPHY_RFSEQ_CMD_RX_GAIN,
15436                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15437                 NPHY_RFSEQ_CMD_SET_HPF_BW
15438         };
15439         static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15440         static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15441         static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15442         static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15443         static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15444         static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15445         static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15446         static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15447         static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15448         static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15449         const s8 *lna1_gain_db = NULL;
15450         static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15451         static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15452         static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15453         static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15454         static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15455         static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15456         static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15457         static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15458         const s8 *lna2_gain_db = NULL;
15459         static const s8 tiaG_gain_db[] = {
15460                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15461         static const s8 tiaA_gain_db[] = {
15462                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15463         static const s8 tiaA_gain_db_rev4[] = {
15464                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15465         static const s8 tiaA_gain_db_rev5[] = {
15466                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15467         static const s8 tiaA_gain_db_rev6[] = {
15468                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15469         const s8 *tia_gain_db;
15470         static const s8 tiaG_gainbits[] = {
15471                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15472         static const s8 tiaA_gainbits[] = {
15473                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15474         static const s8 tiaA_gainbits_rev4[] = {
15475                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15476         static const s8 tiaA_gainbits_rev5[] = {
15477                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15478         static const s8 tiaA_gainbits_rev6[] = {
15479                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15480         const s8 *tia_gainbits;
15481         static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15482         static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15483         static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15484         static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15485         static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15486         static const u16 rfseqG_init_gain_rev5_elna[] = {
15487                 0x013f, 0x013f, 0x013f, 0x013f };
15488         static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15489         static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15490         static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15491         static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15492         static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15493         static const u16 rfseqA_init_gain_rev4_elna[] = {
15494                 0x314f, 0x314f, 0x314f, 0x314f };
15495         static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15496         static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15497         const u16 *rfseq_init_gain;
15498         u16 initG_gaincode = 0x627e;
15499         u16 initG_gaincode_rev4 = 0x527e;
15500         u16 initG_gaincode_rev5 = 0x427e;
15501         u16 initG_gaincode_rev5_elna = 0x027e;
15502         u16 initG_gaincode_rev6 = 0x527e;
15503         u16 initG_gaincode_rev6_224B0 = 0x427e;
15504         u16 initG_gaincode_rev6_elna = 0x127e;
15505         u16 initA_gaincode = 0x52de;
15506         u16 initA_gaincode_rev4 = 0x629e;
15507         u16 initA_gaincode_rev4_elna = 0x329e;
15508         u16 initA_gaincode_rev5 = 0x729e;
15509         u16 initA_gaincode_rev6 = 0x729e;
15510         u16 init_gaincode;
15511         u16 clip1hiG_gaincode = 0x107e;
15512         u16 clip1hiG_gaincode_rev4 = 0x007e;
15513         u16 clip1hiG_gaincode_rev5 = 0x1076;
15514         u16 clip1hiG_gaincode_rev6 = 0x007e;
15515         u16 clip1hiA_gaincode = 0x00de;
15516         u16 clip1hiA_gaincode_rev4 = 0x029e;
15517         u16 clip1hiA_gaincode_rev5 = 0x029e;
15518         u16 clip1hiA_gaincode_rev6 = 0x029e;
15519         u16 clip1hi_gaincode;
15520         u16 clip1mdG_gaincode = 0x0066;
15521         u16 clip1mdA_gaincode = 0x00ca;
15522         u16 clip1mdA_gaincode_rev4 = 0x1084;
15523         u16 clip1mdA_gaincode_rev5 = 0x2084;
15524         u16 clip1mdA_gaincode_rev6 = 0x2084;
15525         u16 clip1md_gaincode = 0;
15526         u16 clip1loG_gaincode = 0x0074;
15527         static const u16 clip1loG_gaincode_rev5[] = {
15528                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15529         };
15530         static const u16 clip1loG_gaincode_rev6[] = {
15531                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15532         };
15533         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15534         u16 clip1loA_gaincode = 0x00cc;
15535         u16 clip1loA_gaincode_rev4 = 0x0086;
15536         u16 clip1loA_gaincode_rev5 = 0x2086;
15537         u16 clip1loA_gaincode_rev6 = 0x2086;
15538         u16 clip1lo_gaincode;
15539         u8 crsminG_th = 0x18;
15540         u8 crsminG_th_rev5 = 0x18;
15541         u8 crsminG_th_rev6 = 0x18;
15542         u8 crsminA_th = 0x1e;
15543         u8 crsminA_th_rev4 = 0x24;
15544         u8 crsminA_th_rev5 = 0x24;
15545         u8 crsminA_th_rev6 = 0x24;
15546         u8 crsmin_th;
15547         u8 crsminlG_th = 0x18;
15548         u8 crsminlG_th_rev5 = 0x18;
15549         u8 crsminlG_th_rev6 = 0x18;
15550         u8 crsminlA_th = 0x1e;
15551         u8 crsminlA_th_rev4 = 0x24;
15552         u8 crsminlA_th_rev5 = 0x24;
15553         u8 crsminlA_th_rev6 = 0x24;
15554         u8 crsminl_th = 0;
15555         u8 crsminuG_th = 0x18;
15556         u8 crsminuG_th_rev5 = 0x18;
15557         u8 crsminuG_th_rev6 = 0x18;
15558         u8 crsminuA_th = 0x1e;
15559         u8 crsminuA_th_rev4 = 0x24;
15560         u8 crsminuA_th_rev5 = 0x24;
15561         u8 crsminuA_th_rev6 = 0x24;
15562         u8 crsminuA_th_rev6_224B0 = 0x2d;
15563         u8 crsminu_th;
15564         u16 nbclipG_th = 0x20d;
15565         u16 nbclipG_th_rev4 = 0x1a1;
15566         u16 nbclipG_th_rev5 = 0x1d0;
15567         u16 nbclipG_th_rev6 = 0x1d0;
15568         u16 nbclipA_th = 0x1a1;
15569         u16 nbclipA_th_rev4 = 0x107;
15570         u16 nbclipA_th_rev5 = 0x0a9;
15571         u16 nbclipA_th_rev6 = 0x0f0;
15572         u16 nbclip_th = 0;
15573         u8 w1clipG_th = 5;
15574         u8 w1clipG_th_rev5 = 9;
15575         u8 w1clipG_th_rev6 = 5;
15576         u8 w1clipA_th = 25, w1clip_th;
15577         u8 rssi_gain_default = 0x50;
15578         u8 rssiG_gain_rev6_224B0 = 0x50;
15579         u8 rssiA_gain_rev5 = 0x90;
15580         u8 rssiA_gain_rev6 = 0x90;
15581         u8 rssi_gain;
15582         u16 regval[21];
15583         u8 triso;
15584 
15585         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15586                 pi->srom_fem2g.triso;
15587 
15588         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15589                 if (pi->pubpi.radiorev == 5) {
15590                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15591                 } else if (pi->pubpi.radiorev == 7) {
15592                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15593 
15594                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15595                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15596 
15597                 } else if ((pi->pubpi.radiorev == 3)
15598                            || (pi->pubpi.radiorev == 8)) {
15599                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15600 
15601                         if (pi->pubpi.radiorev == 8) {
15602                                 mod_phy_reg(pi, 0x283,
15603                                             (0xff << 0), (0x44 << 0));
15604                                 mod_phy_reg(pi, 0x280,
15605                                             (0xff << 0), (0x44 << 0));
15606                         }
15607                 } else {
15608                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15609                 }
15610         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15611 
15612                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15613 
15614                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15615                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15616 
15617                 currband =
15618                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15619                 if (currband == 0) {
15620                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15621                                 if (pi->pubpi.radiorev == 11) {
15622                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15623                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15624                                         rfseq_init_gain =
15625                                                 rfseqG_init_gain_rev6_224B0;
15626                                         init_gaincode =
15627                                                 initG_gaincode_rev6_224B0;
15628                                         clip1hi_gaincode =
15629                                                 clip1hiG_gaincode_rev6;
15630                                         clip1lo_gaincode =
15631                                                 clip1loG_gaincode_rev6_224B0;
15632                                         nbclip_th = nbclipG_th_rev6;
15633                                         w1clip_th = w1clipG_th_rev6;
15634                                         crsmin_th = crsminG_th_rev6;
15635                                         crsminl_th = crsminlG_th_rev6;
15636                                         crsminu_th = crsminuG_th_rev6;
15637                                         rssi_gain = rssiG_gain_rev6_224B0;
15638                                 } else {
15639                                         lna1_gain_db = lna1G_gain_db_rev6;
15640                                         lna2_gain_db = lna2G_gain_db_rev6;
15641                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15642 
15643                                                 rfseq_init_gain =
15644                                                      rfseqG_init_gain_rev6_elna;
15645                                                 init_gaincode =
15646                                                        initG_gaincode_rev6_elna;
15647                                         } else {
15648                                                 rfseq_init_gain =
15649                                                         rfseqG_init_gain_rev6;
15650                                                 init_gaincode =
15651                                                         initG_gaincode_rev6;
15652                                         }
15653                                         clip1hi_gaincode =
15654                                                 clip1hiG_gaincode_rev6;
15655                                         switch (triso) {
15656                                         case 0:
15657                                                 clip1lo_gaincode =
15658                                                         clip1loG_gaincode_rev6
15659                                                         [0];
15660                                                 break;
15661                                         case 1:
15662                                                 clip1lo_gaincode =
15663                                                         clip1loG_gaincode_rev6
15664                                                         [1];
15665                                                 break;
15666                                         case 2:
15667                                                 clip1lo_gaincode =
15668                                                         clip1loG_gaincode_rev6
15669                                                         [2];
15670                                                 break;
15671                                         case 3:
15672                                         default:
15673 
15674                                                 clip1lo_gaincode =
15675                                                         clip1loG_gaincode_rev6
15676                                                         [3];
15677                                                 break;
15678                                         case 4:
15679                                                 clip1lo_gaincode =
15680                                                         clip1loG_gaincode_rev6
15681                                                         [4];
15682                                                 break;
15683                                         case 5:
15684                                                 clip1lo_gaincode =
15685                                                         clip1loG_gaincode_rev6
15686                                                         [5];
15687                                                 break;
15688                                         case 6:
15689                                                 clip1lo_gaincode =
15690                                                         clip1loG_gaincode_rev6
15691                                                         [6];
15692                                                 break;
15693                                         case 7:
15694                                                 clip1lo_gaincode =
15695                                                         clip1loG_gaincode_rev6
15696                                                         [7];
15697                                                 break;
15698                                         }
15699                                         nbclip_th = nbclipG_th_rev6;
15700                                         w1clip_th = w1clipG_th_rev6;
15701                                         crsmin_th = crsminG_th_rev6;
15702                                         crsminl_th = crsminlG_th_rev6;
15703                                         crsminu_th = crsminuG_th_rev6;
15704                                         rssi_gain = rssi_gain_default;
15705                                 }
15706                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15707                                 lna1_gain_db = lna1G_gain_db_rev5;
15708                                 lna2_gain_db = lna2G_gain_db_rev5;
15709                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15710 
15711                                         rfseq_init_gain =
15712                                                 rfseqG_init_gain_rev5_elna;
15713                                         init_gaincode =
15714                                                 initG_gaincode_rev5_elna;
15715                                 } else {
15716                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15717                                         init_gaincode = initG_gaincode_rev5;
15718                                 }
15719                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15720                                 switch (triso) {
15721                                 case 0:
15722                                         clip1lo_gaincode =
15723                                                 clip1loG_gaincode_rev5[0];
15724                                         break;
15725                                 case 1:
15726                                         clip1lo_gaincode =
15727                                                 clip1loG_gaincode_rev5[1];
15728                                         break;
15729                                 case 2:
15730                                         clip1lo_gaincode =
15731                                                 clip1loG_gaincode_rev5[2];
15732                                         break;
15733                                 case 3:
15734 
15735                                         clip1lo_gaincode =
15736                                                 clip1loG_gaincode_rev5[3];
15737                                         break;
15738                                 case 4:
15739                                         clip1lo_gaincode =
15740                                                 clip1loG_gaincode_rev5[4];
15741                                         break;
15742                                 case 5:
15743                                         clip1lo_gaincode =
15744                                                 clip1loG_gaincode_rev5[5];
15745                                         break;
15746                                 case 6:
15747                                         clip1lo_gaincode =
15748                                                 clip1loG_gaincode_rev5[6];
15749                                         break;
15750                                 case 7:
15751                                         clip1lo_gaincode =
15752                                                 clip1loG_gaincode_rev5[7];
15753                                         break;
15754                                 default:
15755                                         clip1lo_gaincode =
15756                                                 clip1loG_gaincode_rev5[3];
15757                                         break;
15758                                 }
15759                                 nbclip_th = nbclipG_th_rev5;
15760                                 w1clip_th = w1clipG_th_rev5;
15761                                 crsmin_th = crsminG_th_rev5;
15762                                 crsminl_th = crsminlG_th_rev5;
15763                                 crsminu_th = crsminuG_th_rev5;
15764                                 rssi_gain = rssi_gain_default;
15765                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15766                                 lna1_gain_db = lna1G_gain_db_rev4;
15767                                 lna2_gain_db = lna2G_gain_db;
15768                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15769                                 init_gaincode = initG_gaincode_rev4;
15770                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15771                                 clip1lo_gaincode = clip1loG_gaincode;
15772                                 nbclip_th = nbclipG_th_rev4;
15773                                 w1clip_th = w1clipG_th;
15774                                 crsmin_th = crsminG_th;
15775                                 crsminl_th = crsminlG_th;
15776                                 crsminu_th = crsminuG_th;
15777                                 rssi_gain = rssi_gain_default;
15778                         } else {
15779                                 lna1_gain_db = lna1G_gain_db;
15780                                 lna2_gain_db = lna2G_gain_db;
15781                                 rfseq_init_gain = rfseqG_init_gain;
15782                                 init_gaincode = initG_gaincode;
15783                                 clip1hi_gaincode = clip1hiG_gaincode;
15784                                 clip1lo_gaincode = clip1loG_gaincode;
15785                                 nbclip_th = nbclipG_th;
15786                                 w1clip_th = w1clipG_th;
15787                                 crsmin_th = crsminG_th;
15788                                 crsminl_th = crsminlG_th;
15789                                 crsminu_th = crsminuG_th;
15790                                 rssi_gain = rssi_gain_default;
15791                         }
15792                         tia_gain_db = tiaG_gain_db;
15793                         tia_gainbits = tiaG_gainbits;
15794                         clip1md_gaincode = clip1mdG_gaincode;
15795                 } else {
15796                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15797                                 lna1_gain_db = lna1A_gain_db_rev6;
15798                                 lna2_gain_db = lna2A_gain_db_rev6;
15799                                 tia_gain_db = tiaA_gain_db_rev6;
15800                                 tia_gainbits = tiaA_gainbits_rev6;
15801                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15802                                 init_gaincode = initA_gaincode_rev6;
15803                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15804                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15805                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15806                                 crsmin_th = crsminA_th_rev6;
15807                                 crsminl_th = crsminlA_th_rev6;
15808                                 if ((pi->pubpi.radiorev == 11) &&
15809                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15810                                         crsminu_th = crsminuA_th_rev6_224B0;
15811                                 else
15812                                         crsminu_th = crsminuA_th_rev6;
15813 
15814                                 nbclip_th = nbclipA_th_rev6;
15815                                 rssi_gain = rssiA_gain_rev6;
15816                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15817                                 lna1_gain_db = lna1A_gain_db_rev5;
15818                                 lna2_gain_db = lna2A_gain_db_rev5;
15819                                 tia_gain_db = tiaA_gain_db_rev5;
15820                                 tia_gainbits = tiaA_gainbits_rev5;
15821                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15822                                 init_gaincode = initA_gaincode_rev5;
15823                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15824                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15825                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15826                                 crsmin_th = crsminA_th_rev5;
15827                                 crsminl_th = crsminlA_th_rev5;
15828                                 crsminu_th = crsminuA_th_rev5;
15829                                 nbclip_th = nbclipA_th_rev5;
15830                                 rssi_gain = rssiA_gain_rev5;
15831                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15832                                 lna1_gain_db = lna1A_gain_db_rev4;
15833                                 lna2_gain_db = lna2A_gain_db_rev4;
15834                                 tia_gain_db = tiaA_gain_db_rev4;
15835                                 tia_gainbits = tiaA_gainbits_rev4;
15836                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15837 
15838                                         rfseq_init_gain =
15839                                                 rfseqA_init_gain_rev4_elna;
15840                                         init_gaincode =
15841                                                 initA_gaincode_rev4_elna;
15842                                 } else {
15843                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15844                                         init_gaincode = initA_gaincode_rev4;
15845                                 }
15846                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15847                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15848                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15849                                 crsmin_th = crsminA_th_rev4;
15850                                 crsminl_th = crsminlA_th_rev4;
15851                                 crsminu_th = crsminuA_th_rev4;
15852                                 nbclip_th = nbclipA_th_rev4;
15853                                 rssi_gain = rssi_gain_default;
15854                         } else {
15855                                 lna1_gain_db = lna1A_gain_db;
15856                                 lna2_gain_db = lna2A_gain_db;
15857                                 tia_gain_db = tiaA_gain_db;
15858                                 tia_gainbits = tiaA_gainbits;
15859                                 rfseq_init_gain = rfseqA_init_gain;
15860                                 init_gaincode = initA_gaincode;
15861                                 clip1hi_gaincode = clip1hiA_gaincode;
15862                                 clip1md_gaincode = clip1mdA_gaincode;
15863                                 clip1lo_gaincode = clip1loA_gaincode;
15864                                 crsmin_th = crsminA_th;
15865                                 crsminl_th = crsminlA_th;
15866                                 crsminu_th = crsminuA_th;
15867                                 nbclip_th = nbclipA_th;
15868                                 rssi_gain = rssi_gain_default;
15869                         }
15870                         w1clip_th = w1clipA_th;
15871                 }
15872 
15873                 write_radio_reg(pi,
15874                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15875                                  RADIO_2056_RX0), 0x17);
15876                 write_radio_reg(pi,
15877                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15878                                  RADIO_2056_RX1), 0x17);
15879 
15880                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15881                                 0xf0);
15882                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15883                                 0xf0);
15884 
15885                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15886                                 0x0);
15887                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15888                                 0x0);
15889 
15890                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15891                                 rssi_gain);
15892                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15893                                 rssi_gain);
15894 
15895                 write_radio_reg(pi,
15896                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15897                                  RADIO_2056_RX0), 0x17);
15898                 write_radio_reg(pi,
15899                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15900                                  RADIO_2056_RX1), 0x17);
15901 
15902                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15903                                 0xFF);
15904                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15905                                 0xFF);
15906 
15907                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15908                                          8, lna1_gain_db);
15909                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15910                                          8, lna1_gain_db);
15911 
15912                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15913                                          8, lna2_gain_db);
15914                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15915                                          8, lna2_gain_db);
15916 
15917                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15918                                          8, tia_gain_db);
15919                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15920                                          8, tia_gain_db);
15921 
15922                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15923                                          8, tia_gainbits);
15924                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15925                                          8, tia_gainbits);
15926 
15927                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15928                                          8, &lpf_gain_db);
15929                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15930                                          8, &lpf_gain_db);
15931                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15932                                          8, &lpf_gainbits);
15933                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15934                                          8, &lpf_gainbits);
15935 
15936                 write_phy_reg(pi, 0x20, init_gaincode);
15937                 write_phy_reg(pi, 0x2a7, init_gaincode);
15938 
15939                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15940                                          pi->pubpi.phy_corenum, 0x106, 16,
15941                                          rfseq_init_gain);
15942 
15943                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15944                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15945 
15946                 write_phy_reg(pi, 0x24, clip1md_gaincode);
15947                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15948 
15949                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15950                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15951 
15952                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15953                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15954                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15955 
15956                 write_phy_reg(pi, 0x2b, nbclip_th);
15957                 write_phy_reg(pi, 0x41, nbclip_th);
15958 
15959                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15960                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15961 
15962                 write_phy_reg(pi, 0x150, 0x809c);
15963 
15964         } else {
15965 
15966                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15967                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15968 
15969                 write_phy_reg(pi, 0x2b, 0x84);
15970                 write_phy_reg(pi, 0x41, 0x84);
15971 
15972                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15973                         write_phy_reg(pi, 0x6b, 0x2b);
15974                         write_phy_reg(pi, 0x6c, 0x2b);
15975                         write_phy_reg(pi, 0x6d, 0x9);
15976                         write_phy_reg(pi, 0x6e, 0x9);
15977                 }
15978 
15979                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15980                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15981                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15982 
15983                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15984                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15985                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15986 
15987                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15988                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
15989                 }
15990 
15991                 write_phy_reg(pi, 0x150, 0x809c);
15992 
15993                 if (pi->nphy_gain_boost)
15994                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
15995                             (CHSPEC_IS40(pi->radio_chanspec)))
15996                                 hpf_code = 4;
15997                         else
15998                                 hpf_code = 5;
15999                 else if (CHSPEC_IS40(pi->radio_chanspec))
16000                         hpf_code = 6;
16001                 else
16002                         hpf_code = 7;
16003 
16004                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16005                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16006 
16007                 for (ctr = 0; ctr < 4; ctr++)
16008                         regval[ctr] = (hpf_code << 8) | 0x7c;
16009                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16010 
16011                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16012 
16013                 if (pi->nphy_elna_gain_config) {
16014                         regval[0] = 0;
16015                         regval[1] = 1;
16016                         regval[2] = 1;
16017                         regval[3] = 1;
16018                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16019                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16020 
16021                         for (ctr = 0; ctr < 4; ctr++)
16022                                 regval[ctr] = (hpf_code << 8) | 0x74;
16023                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024                 }
16025 
16026                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16027                         for (ctr = 0; ctr < 21; ctr++)
16028                                 regval[ctr] = 3 * ctr;
16029                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16030                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16031 
16032                         for (ctr = 0; ctr < 21; ctr++)
16033                                 regval[ctr] = (u16) ctr;
16034                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16035                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16036                 }
16037 
16038                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16039                                        rfseq_updategainu_events,
16040                                        rfseq_updategainu_dlys,
16041                                        ARRAY_SIZE(rfseq_updategainu_events));
16042 
16043                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16044 
16045                 if (CHSPEC_IS2G(pi->radio_chanspec))
16046                         mod_phy_reg(pi,
16047                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16048                                     0x7f, 0x4);
16049         }
16050 }
16051 
16052 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16053 {
16054         static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16055                 NPHY_REV3_RFSEQ_CMD_NOP,
16056                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16057                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16058                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16059                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16060                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16061                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16062                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16063                 NPHY_REV3_RFSEQ_CMD_END
16064         };
16065         static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16066                 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16067         static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16068         u32 leg_data_weights;
16069         u8 chan_freq_range = 0;
16070         static const u16 dac_control = 0x0002;
16071         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16072         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16073         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16074         s32 min_nvar_val = 0x18d;
16075         s32 min_nvar_offset_6mbps = 20;
16076         u8 pdetrange;
16077         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16078         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16079         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16080         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16081         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16082         static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16083         static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16084         static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16085         u16 ipalvlshift_3p3_war_en = 0;
16086         u16 rccal_bcap_val, rccal_scap_val;
16087         u16 rccal_tx20_11b_bcap = 0;
16088         u16 rccal_tx20_11b_scap = 0;
16089         u16 rccal_tx20_11n_bcap = 0;
16090         u16 rccal_tx20_11n_scap = 0;
16091         u16 rccal_tx40_11n_bcap = 0;
16092         u16 rccal_tx40_11n_scap = 0;
16093         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16094         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16095         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16096         u16 tx_lpf_bw_ofdm_20mhz = 0;
16097         u16 tx_lpf_bw_ofdm_40mhz = 0;
16098         u16 tx_lpf_bw_11b = 0;
16099         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16100         u16 txgm_idac_bleed = 0;
16101         bool rccal_ovrd = false;
16102         u16 freq;
16103         int coreNum;
16104 
16105 
16106         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16107                 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16108 
16109                 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16110                 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16111                 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16112                 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16113                 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16114                 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16115                 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16116                 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16117                 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16118                 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16119                 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16120                 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16121                 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16122                 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16123                 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16124                 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16125         }
16126 
16127         if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16128                 write_phy_reg(pi, 0x23f, 0x1b0);
16129                 write_phy_reg(pi, 0x240, 0x1b0);
16130         }
16131 
16132         if (NREV_GE(pi->pubpi.phy_rev, 8))
16133                 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16134 
16135         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16136                                  &dac_control);
16137         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16138                                  &dac_control);
16139 
16140         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16141                                 1, 0, 32, &leg_data_weights);
16142         leg_data_weights = leg_data_weights & 0xffffff;
16143         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16144                                  1, 0, 32, &leg_data_weights);
16145 
16146         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16147                                  2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16148         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16149                                  rfseq_rx2tx_dacbufpu_rev7);
16150 
16151         if (PHY_IPA(pi))
16152                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16153                                        rfseq_rx2tx_events_rev3_ipa,
16154                                        rfseq_rx2tx_dlys_rev3_ipa,
16155                                        ARRAY_SIZE
16156                                        (rfseq_rx2tx_events_rev3_ipa));
16157 
16158         mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16159         mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16160 
16161         tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16162         tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16163         tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16164 
16165         if (PHY_IPA(pi)) {
16166 
16167                 if (((pi->pubpi.radiorev == 5)
16168                      && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16169                     || (pi->pubpi.radiorev == 7)
16170                     || (pi->pubpi.radiorev == 8)) {
16171 
16172                         rccal_bcap_val =
16173                             read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16174                         rccal_scap_val =
16175                             read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16176 
16177                         rccal_tx20_11b_bcap = rccal_bcap_val;
16178                         rccal_tx20_11b_scap = rccal_scap_val;
16179 
16180                         if ((pi->pubpi.radiorev == 5) &&
16181                             (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16182 
16183                                 rccal_tx20_11n_bcap = rccal_bcap_val;
16184                                 rccal_tx20_11n_scap = rccal_scap_val;
16185                                 rccal_tx40_11n_bcap = 0xc;
16186                                 rccal_tx40_11n_scap = 0xc;
16187 
16188                                 rccal_ovrd = true;
16189 
16190                         } else if ((pi->pubpi.radiorev == 7)
16191                                    || (pi->pubpi.radiorev == 8)) {
16192 
16193                                 tx_lpf_bw_ofdm_20mhz = 4;
16194                                 tx_lpf_bw_11b = 1;
16195 
16196                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16197                                         rccal_tx20_11n_bcap = 0xc;
16198                                         rccal_tx20_11n_scap = 0xc;
16199                                         rccal_tx40_11n_bcap = 0xa;
16200                                         rccal_tx40_11n_scap = 0xa;
16201                                 } else {
16202                                         rccal_tx20_11n_bcap = 0x14;
16203                                         rccal_tx20_11n_scap = 0x14;
16204                                         rccal_tx40_11n_bcap = 0xf;
16205                                         rccal_tx40_11n_scap = 0xf;
16206                                 }
16207 
16208                                 rccal_ovrd = true;
16209                         }
16210                 }
16211 
16212         } else {
16213 
16214                 if (pi->pubpi.radiorev == 5) {
16215 
16216                         tx_lpf_bw_ofdm_20mhz = 1;
16217                         tx_lpf_bw_ofdm_40mhz = 3;
16218 
16219                         rccal_bcap_val =
16220                             read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16221                         rccal_scap_val =
16222                             read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16223 
16224                         rccal_tx20_11b_bcap = rccal_bcap_val;
16225                         rccal_tx20_11b_scap = rccal_scap_val;
16226 
16227                         rccal_tx20_11n_bcap = 0x13;
16228                         rccal_tx20_11n_scap = 0x11;
16229                         rccal_tx40_11n_bcap = 0x13;
16230                         rccal_tx40_11n_scap = 0x11;
16231 
16232                         rccal_ovrd = true;
16233                 }
16234         }
16235 
16236         if (rccal_ovrd) {
16237 
16238                 rx2tx_lpf_rc_lut_tx20_11b =
16239                     (rccal_tx20_11b_bcap << 8) |
16240                     (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16241                 rx2tx_lpf_rc_lut_tx20_11n =
16242                     (rccal_tx20_11n_bcap << 8) |
16243                     (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16244                 rx2tx_lpf_rc_lut_tx40_11n =
16245                     (rccal_tx40_11n_bcap << 8) |
16246                     (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16247 
16248                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16249                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16250                                                  0x152 + coreNum * 0x10, 16,
16251                                                  &rx2tx_lpf_rc_lut_tx20_11b);
16252                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16253                                                  0x153 + coreNum * 0x10, 16,
16254                                                  &rx2tx_lpf_rc_lut_tx20_11n);
16255                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16256                                                  0x154 + coreNum * 0x10, 16,
16257                                                  &rx2tx_lpf_rc_lut_tx20_11n);
16258                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16259                                                  0x155 + coreNum * 0x10, 16,
16260                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16261                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16262                                                  0x156 + coreNum * 0x10, 16,
16263                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16264                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16265                                                  0x157 + coreNum * 0x10, 16,
16266                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16267                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16268                                                  0x158 + coreNum * 0x10, 16,
16269                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16270                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16271                                                  0x159 + coreNum * 0x10, 16,
16272                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16273                 }
16274 
16275                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16276                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
16277         }
16278 
16279         write_phy_reg(pi, 0x32f, 0x3);
16280 
16281         if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16282                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16283                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
16284 
16285         if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16286             (pi->pubpi.radiorev == 6)) {
16287                 if ((pi->sh->sromrev >= 8)
16288                     && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16289                         ipalvlshift_3p3_war_en = 1;
16290 
16291                 if (ipalvlshift_3p3_war_en) {
16292                         write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16293                         write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16294                         write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16295                         or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16296                         or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16297 
16298                         ipa2g_mainbias = 0x1f;
16299 
16300                         ipa2g_casconv = 0x6f;
16301 
16302                         ipa2g_biasfilt = 0xaa;
16303                 } else {
16304 
16305                         ipa2g_mainbias = 0x2b;
16306 
16307                         ipa2g_casconv = 0x7f;
16308 
16309                         ipa2g_biasfilt = 0xee;
16310                 }
16311 
16312                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16313                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16314                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16315                                                  coreNum, IPA2G_IMAIN,
16316                                                  ipa2g_mainbias);
16317                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16318                                                  coreNum, IPA2G_CASCONV,
16319                                                  ipa2g_casconv);
16320                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16321                                                  coreNum,
16322                                                  IPA2G_BIAS_FILTER,
16323                                                  ipa2g_biasfilt);
16324                         }
16325                 }
16326         }
16327 
16328         if (PHY_IPA(pi)) {
16329                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16330                         if ((pi->pubpi.radiorev == 3)
16331                             || (pi->pubpi.radiorev == 4)
16332                             || (pi->pubpi.radiorev == 6))
16333                                 txgm_idac_bleed = 0x7f;
16334 
16335                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16336                                 if (txgm_idac_bleed != 0)
16337                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16338                                                          CORE, coreNum,
16339                                                          TXGM_IDAC_BLEED,
16340                                                          txgm_idac_bleed);
16341                         }
16342 
16343                         if (pi->pubpi.radiorev == 5) {
16344                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16345                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16346                                                          CORE, coreNum,
16347                                                          IPA2G_CASCONV,
16348                                                          0x13);
16349                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16350                                                          CORE, coreNum,
16351                                                          IPA2G_IMAIN,
16352                                                          0x1f);
16353                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16354                                                          CORE, coreNum,
16355                                                          IPA2G_BIAS_FILTER,
16356                                                          0xee);
16357                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16358                                                          CORE, coreNum,
16359                                                          PAD2G_IDACS,
16360                                                          0x8a);
16361                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16362                                                          CORE, coreNum,
16363                                                          PAD_BIAS_FILTER_BWS,
16364                                                          0x3e);
16365                                 }
16366                         } else if ((pi->pubpi.radiorev == 7) ||
16367                                    (pi->pubpi.radiorev == 8)) {
16368 
16369                                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16370                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16371                                                          0, IPA2G_IMAIN, 0x14);
16372                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16373                                                          1, IPA2G_IMAIN, 0x12);
16374                                 } else {
16375                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16376                                                          0, IPA2G_IMAIN, 0x16);
16377                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16378                                                          1, IPA2G_IMAIN, 0x16);
16379                                 }
16380                         }
16381 
16382                 } else {
16383                         freq =
16384                             CHAN5G_FREQ(CHSPEC_CHANNEL
16385                                         (pi->radio_chanspec));
16386                         if (((freq >= 5180) && (freq <= 5230))
16387                             || ((freq >= 5745) && (freq <= 5805))) {
16388                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16389                                                  0, IPA5G_BIAS_FILTER, 0xff);
16390                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16391                                                  1, IPA5G_BIAS_FILTER, 0xff);
16392                         }
16393                 }
16394         } else {
16395 
16396                 if (pi->pubpi.radiorev != 5) {
16397                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16398                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16399                                                  TXMIX2G_TUNE_BOOST_PU, 0x61);
16400                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16401                                                  TXGM_IDAC_BLEED, 0x70);
16402                         }
16403                 }
16404         }
16405 
16406         if (pi->pubpi.radiorev == 4) {
16407                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16408                                          &afectrl_adc_ctrl1_rev7);
16409                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16410                                          &afectrl_adc_ctrl1_rev7);
16411 
16412                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16413                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16414                                          AFE_VCM_CAL_MASTER, 0x0);
16415                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16416                                          AFE_SET_VCM_I, 0x3f);
16417                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16418                                          AFE_SET_VCM_Q, 0x3f);
16419                 }
16420         } else {
16421                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16422                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16423                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16424                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16425 
16426                 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16427                 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16428                 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16429                 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16430 
16431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16432                                          &afectrl_adc_ctrl2_rev7);
16433                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16434                                          &afectrl_adc_ctrl2_rev7);
16435 
16436                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16437                 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16438                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16439                 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16440         }
16441 
16442         write_phy_reg(pi, 0x6a, 0x2);
16443 
16444         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16445                                  &min_nvar_offset_6mbps);
16446 
16447         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16448                                  &rfseq_pktgn_lpf_hpc_rev7);
16449 
16450         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16451                                  &rfseq_pktgn_lpf_h_hpc_rev7);
16452 
16453         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16454                                  &rfseq_htpktgn_lpf_hpc_rev7);
16455 
16456         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16457                                  &rfseq_cckpktgn_lpf_hpc_rev7);
16458 
16459         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16460                                  &rfseq_tx2rx_lpf_h_hpc_rev7);
16461 
16462         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16463                                  &rfseq_rx2tx_lpf_h_hpc_rev7);
16464 
16465         if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16466                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16467                                          32, &min_nvar_val);
16468                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16469                                          127, 32, &min_nvar_val);
16470         } else {
16471                 min_nvar_val = noise_var_tbl_rev7[3];
16472                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16473                                          32, &min_nvar_val);
16474 
16475                 min_nvar_val = noise_var_tbl_rev7[127];
16476                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16477                                          127, 32, &min_nvar_val);
16478         }
16479 
16480         wlc_phy_workarounds_nphy_gainctrl(pi);
16481 
16482         pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16483                     pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16484 
16485         if (pdetrange == 0) {
16486                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16487                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16488                         aux_adc_vmid_rev7_core0[3] = 0x70;
16489                         aux_adc_vmid_rev7_core1[3] = 0x70;
16490                         aux_adc_gain_rev7[3] = 2;
16491                 } else {
16492                         aux_adc_vmid_rev7_core0[3] = 0x80;
16493                         aux_adc_vmid_rev7_core1[3] = 0x80;
16494                         aux_adc_gain_rev7[3] = 3;
16495                 }
16496         } else if (pdetrange == 1) {
16497                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16498                         aux_adc_vmid_rev7_core0[3] = 0x7c;
16499                         aux_adc_vmid_rev7_core1[3] = 0x7c;
16500                         aux_adc_gain_rev7[3] = 2;
16501                 } else {
16502                         aux_adc_vmid_rev7_core0[3] = 0x8c;
16503                         aux_adc_vmid_rev7_core1[3] = 0x8c;
16504                         aux_adc_gain_rev7[3] = 1;
16505                 }
16506         } else if (pdetrange == 2) {
16507                 if (pi->pubpi.radioid == BCM2057_ID) {
16508                         if ((pi->pubpi.radiorev == 5)
16509                             || (pi->pubpi.radiorev == 7)
16510                             || (pi->pubpi.radiorev == 8)) {
16511                                 if (chan_freq_range ==
16512                                     WL_CHAN_FREQ_RANGE_2G) {
16513                                         aux_adc_vmid_rev7_core0[3] = 0x8c;
16514                                         aux_adc_vmid_rev7_core1[3] = 0x8c;
16515                                         aux_adc_gain_rev7[3] = 0;
16516                                 } else {
16517                                         aux_adc_vmid_rev7_core0[3] = 0x96;
16518                                         aux_adc_vmid_rev7_core1[3] = 0x96;
16519                                         aux_adc_gain_rev7[3] = 0;
16520                                 }
16521                         }
16522                 }
16523 
16524         } else if (pdetrange == 3) {
16525                 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16526                         aux_adc_vmid_rev7_core0[3] = 0x89;
16527                         aux_adc_vmid_rev7_core1[3] = 0x89;
16528                         aux_adc_gain_rev7[3] = 0;
16529                 }
16530 
16531         } else if (pdetrange == 5) {
16532 
16533                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16534                         aux_adc_vmid_rev7_core0[3] = 0x80;
16535                         aux_adc_vmid_rev7_core1[3] = 0x80;
16536                         aux_adc_gain_rev7[3] = 3;
16537                 } else {
16538                         aux_adc_vmid_rev7_core0[3] = 0x70;
16539                         aux_adc_vmid_rev7_core1[3] = 0x70;
16540                         aux_adc_gain_rev7[3] = 2;
16541                 }
16542         }
16543 
16544         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16545                                  &aux_adc_vmid_rev7_core0);
16546         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16547                                  &aux_adc_vmid_rev7_core1);
16548         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16549                                  &aux_adc_gain_rev7);
16550         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16551                                  &aux_adc_gain_rev7);
16552 }
16553 
16554 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16555 {
16556         static const u8 rfseq_tx2rx_events_rev3[] = {
16557                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16558                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16559                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16560                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16561                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16562                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16563                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16564                 NPHY_REV3_RFSEQ_CMD_END
16565         };
16566         static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16567         u8 rfseq_rx2tx_events_rev3[] = {
16568                 NPHY_REV3_RFSEQ_CMD_NOP,
16569                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16570                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16571                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16572                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16573                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16574                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16575                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16576                 NPHY_REV3_RFSEQ_CMD_END
16577         };
16578         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16579         static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16580                 NPHY_REV3_RFSEQ_CMD_NOP,
16581                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16582                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16583                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16584                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16585                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16586                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16587                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16588                 NPHY_REV3_RFSEQ_CMD_END
16589         };
16590         static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16591             { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16592         s16 alpha0, alpha1, alpha2;
16593         s16 beta0, beta1, beta2;
16594         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16595             stbc_data_weights;
16596         u8 chan_freq_range = 0;
16597         static const u16 dac_control = 0x0002;
16598         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16599         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16600         u16 *aux_adc_vmid;
16601         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16602         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16603         u16 *aux_adc_gain;
16604         static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16605         static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16606         s32 min_nvar_val = 0x18d;
16607         u8 pdetrange;
16608         u8 triso;
16609 
16610         write_phy_reg(pi, 0x23f, 0x1f8);
16611         write_phy_reg(pi, 0x240, 0x1f8);
16612 
16613         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16614                                 1, 0, 32, &leg_data_weights);
16615         leg_data_weights = leg_data_weights & 0xffffff;
16616         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16617                                  1, 0, 32, &leg_data_weights);
16618 
16619         alpha0 = 293;
16620         alpha1 = 435;
16621         alpha2 = 261;
16622         beta0 = 366;
16623         beta1 = 205;
16624         beta2 = 32;
16625         write_phy_reg(pi, 0x145, alpha0);
16626         write_phy_reg(pi, 0x146, alpha1);
16627         write_phy_reg(pi, 0x147, alpha2);
16628         write_phy_reg(pi, 0x148, beta0);
16629         write_phy_reg(pi, 0x149, beta1);
16630         write_phy_reg(pi, 0x14a, beta2);
16631 
16632         write_phy_reg(pi, 0x38, 0xC);
16633         write_phy_reg(pi, 0x2ae, 0xC);
16634 
16635         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16636                                rfseq_tx2rx_events_rev3,
16637                                rfseq_tx2rx_dlys_rev3,
16638                                ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16639 
16640         if (PHY_IPA(pi))
16641                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16642                                        rfseq_rx2tx_events_rev3_ipa,
16643                                        rfseq_rx2tx_dlys_rev3_ipa,
16644                                        ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16645 
16646         if ((pi->sh->hw_phyrxchain != 0x3) &&
16647             (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16648 
16649                 if (PHY_IPA(pi)) {
16650                         rfseq_rx2tx_dlys_rev3[5] = 59;
16651                         rfseq_rx2tx_dlys_rev3[6] = 1;
16652                         rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16653                 }
16654 
16655                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16656                                        rfseq_rx2tx_events_rev3,
16657                                        rfseq_rx2tx_dlys_rev3,
16658                                        ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16659         }
16660 
16661         if (CHSPEC_IS2G(pi->radio_chanspec))
16662                 write_phy_reg(pi, 0x6a, 0x2);
16663         else
16664                 write_phy_reg(pi, 0x6a, 0x9c40);
16665 
16666         mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16667 
16668         if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16669                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16670                                          32, &min_nvar_val);
16671                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16672                                          127, 32, &min_nvar_val);
16673         } else {
16674                 min_nvar_val = noise_var_tbl_rev3[3];
16675                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16676                                          32, &min_nvar_val);
16677 
16678                 min_nvar_val = noise_var_tbl_rev3[127];
16679                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16680                                          127, 32, &min_nvar_val);
16681         }
16682 
16683         wlc_phy_workarounds_nphy_gainctrl(pi);
16684 
16685         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16686                                  &dac_control);
16687         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16688                                  &dac_control);
16689 
16690         pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16691                         pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16692 
16693         if (pdetrange == 0) {
16694                 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16695                         aux_adc_vmid = aux_adc_vmid_rev4;
16696                         aux_adc_gain = aux_adc_gain_rev4;
16697                 } else {
16698                         aux_adc_vmid = aux_adc_vmid_rev3;
16699                         aux_adc_gain = aux_adc_gain_rev3;
16700                 }
16701                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16702                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16703                         switch (chan_freq_range) {
16704                         case WL_CHAN_FREQ_RANGE_5GL:
16705                                 aux_adc_vmid[3] = 0x89;
16706                                 aux_adc_gain[3] = 0;
16707                                 break;
16708                         case WL_CHAN_FREQ_RANGE_5GM:
16709                                 aux_adc_vmid[3] = 0x89;
16710                                 aux_adc_gain[3] = 0;
16711                                 break;
16712                         case WL_CHAN_FREQ_RANGE_5GH:
16713                                 aux_adc_vmid[3] = 0x89;
16714                                 aux_adc_gain[3] = 0;
16715                                 break;
16716                         default:
16717                                 break;
16718                         }
16719                 }
16720                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16721                                          0x08, 16, aux_adc_vmid);
16722                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16723                                          0x18, 16, aux_adc_vmid);
16724                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16725                                          0x0c, 16, aux_adc_gain);
16726                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16727                                          0x1c, 16, aux_adc_gain);
16728         } else if (pdetrange == 1) {
16729                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16730                                          0x08, 16, sk_adc_vmid);
16731                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16732                                          0x18, 16, sk_adc_vmid);
16733                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16734                                          0x0c, 16, sk_adc_gain);
16735                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16736                                          0x1c, 16, sk_adc_gain);
16737         } else if (pdetrange == 2) {
16738 
16739                 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16740                 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16741 
16742                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16743                         chan_freq_range =
16744                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16745                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16746                                 bcm_adc_vmid[3] = 0x8e;
16747                                 bcm_adc_gain[3] = 0x03;
16748                         } else {
16749                                 bcm_adc_vmid[3] = 0x94;
16750                                 bcm_adc_gain[3] = 0x03;
16751                         }
16752                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16753                         bcm_adc_vmid[3] = 0x84;
16754                         bcm_adc_gain[3] = 0x02;
16755                 }
16756 
16757                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16758                                          0x08, 16, bcm_adc_vmid);
16759                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16760                                          0x18, 16, bcm_adc_vmid);
16761                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16762                                          0x0c, 16, bcm_adc_gain);
16763                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16764                                          0x1c, 16, bcm_adc_gain);
16765         } else if (pdetrange == 3) {
16766                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16767                 if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16768                     (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16769                         u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16770                         u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16771 
16772                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16773                                                  0x08, 16, auxadc_vmid);
16774                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16775                                                  0x18, 16, auxadc_vmid);
16776                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16777                                                  0x0c, 16, auxadc_gain);
16778                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16779                                                  0x1c, 16, auxadc_gain);
16780                 }
16781         } else if ((pdetrange == 4) || (pdetrange == 5)) {
16782                 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16783                 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16784                 u16 Vmid[2], Av[2];
16785 
16786                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16787                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16788                         Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16789                         Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16790                         Av[0] = (pdetrange == 4) ? 2 : 0;
16791                         Av[1] = (pdetrange == 4) ? 2 : 0;
16792                 } else {
16793                         Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16794                         Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16795                         Av[0] = (pdetrange == 4) ? 2 : 0;
16796                         Av[1] = (pdetrange == 4) ? 2 : 0;
16797                 }
16798 
16799                 bcm_adc_vmid[3] = Vmid[0];
16800                 bcm_adc_gain[3] = Av[0];
16801                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16802                                          0x08, 16, bcm_adc_vmid);
16803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16804                                          0x0c, 16, bcm_adc_gain);
16805 
16806                 bcm_adc_vmid[3] = Vmid[1];
16807                 bcm_adc_gain[3] = Av[1];
16808                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16809                                          0x18, 16, bcm_adc_vmid);
16810                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16811                                          0x1c, 16, bcm_adc_gain);
16812         }
16813 
16814         write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16815         write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16816 
16817         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16818         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16819 
16820         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16821         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16822 
16823         write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16824         write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16825 
16826         write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16827         write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16828 
16829         write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16830         write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16831 
16832         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16833                  pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16834         if (triso == 7) {
16835                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16836                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16837         }
16838 
16839         wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16840 
16841         if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16842              (CHSPEC_IS5G(pi->radio_chanspec))) ||
16843             (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16844               (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16845              (CHSPEC_IS2G(pi->radio_chanspec)))) {
16846                 nss1_data_weights = 0x00088888;
16847                 ht_data_weights = 0x00088888;
16848                 stbc_data_weights = 0x00088888;
16849         } else {
16850                 nss1_data_weights = 0x88888888;
16851                 ht_data_weights = 0x88888888;
16852                 stbc_data_weights = 0x88888888;
16853         }
16854         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16855                                  1, 1, 32, &nss1_data_weights);
16856         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16857                                  1, 2, 32, &ht_data_weights);
16858         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16859                                  1, 3, 32, &stbc_data_weights);
16860 
16861         if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16862                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
16863                         write_radio_reg(pi,
16864                                         RADIO_2056_TX_GMBB_IDAC |
16865                                         RADIO_2056_TX0, 0x70);
16866                         write_radio_reg(pi,
16867                                         RADIO_2056_TX_GMBB_IDAC |
16868                                         RADIO_2056_TX1, 0x70);
16869                 }
16870         }
16871 
16872         if (!pi->edcrs_threshold_lock) {
16873                 write_phy_reg(pi, 0x224, 0x3eb);
16874                 write_phy_reg(pi, 0x225, 0x3eb);
16875                 write_phy_reg(pi, 0x226, 0x341);
16876                 write_phy_reg(pi, 0x227, 0x341);
16877                 write_phy_reg(pi, 0x228, 0x42b);
16878                 write_phy_reg(pi, 0x229, 0x42b);
16879                 write_phy_reg(pi, 0x22a, 0x381);
16880                 write_phy_reg(pi, 0x22b, 0x381);
16881                 write_phy_reg(pi, 0x22c, 0x42b);
16882                 write_phy_reg(pi, 0x22d, 0x42b);
16883                 write_phy_reg(pi, 0x22e, 0x381);
16884                 write_phy_reg(pi, 0x22f, 0x381);
16885         }
16886 
16887         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16888 
16889                 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16890                         wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16891                                        MHF4_BPHY_TXCORE0,
16892                                        MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16893         }
16894 }
16895 
16896 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16897 {
16898         static const u8 rfseq_rx2tx_events[] = {
16899                 NPHY_RFSEQ_CMD_NOP,
16900                 NPHY_RFSEQ_CMD_RXG_FBW,
16901                 NPHY_RFSEQ_CMD_TR_SWITCH,
16902                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16903                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16904                 NPHY_RFSEQ_CMD_TX_GAIN,
16905                 NPHY_RFSEQ_CMD_EXT_PA
16906         };
16907         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16908         static const u8 rfseq_tx2rx_events[] = {
16909                 NPHY_RFSEQ_CMD_NOP,
16910                 NPHY_RFSEQ_CMD_EXT_PA,
16911                 NPHY_RFSEQ_CMD_TX_GAIN,
16912                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16913                 NPHY_RFSEQ_CMD_TR_SWITCH,
16914                 NPHY_RFSEQ_CMD_RXG_FBW,
16915                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16916         };
16917         static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16918         s16 alpha0, alpha1, alpha2;
16919         s16 beta0, beta1, beta2;
16920         u16 regval;
16921 
16922         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16923             (pi->sh->boardtype == 0x8b)) {
16924                 uint i;
16925                 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16926                 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16927                         rfseq_rx2tx_dlys[i] = war_dlys[i];
16928         }
16929 
16930         if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16931                 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16932                 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16933         } else {
16934                 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16935                 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16936         }
16937 
16938         regval = 0x000a;
16939         wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &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         u32 tempval = 0;
19037 
19038         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19039                 if (pi->phyhang_avoid)
19040                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19041 
19042                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19043 
19044                 if (pi->nphy_gband_spurwar_en) {
19045 
19046                         wlc_phy_adjust_rx_analpfbw_nphy(
19047                                 pi,
19048                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19049 
19050                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19051                                 if ((cur_channel == 11)
19052                                     && CHSPEC_IS40(pi->radio_chanspec))
19053                                         wlc_phy_adjust_min_noisevar_nphy(
19054                                                 pi, 2,
19055                                                 nphy_adj_tone_id_buf,
19056                                                 nphy_adj_noise_var_buf);
19057                                 else
19058                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19059                                                                          NULL,
19060                                                                          NULL);
19061                         }
19062 
19063                         wlc_phy_adjust_crsminpwr_nphy(pi,
19064                                                      NPHY_ADJUSTED_MINCRSPOWER);
19065                 }
19066 
19067                 if ((pi->nphy_gband_spurwar2_en)
19068                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19069 
19070                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19071                                 switch (cur_channel) {
19072                                 case 3:
19073                                         nphy_adj_tone_id_buf[0] = 57;
19074                                         nphy_adj_tone_id_buf[1] = 58;
19075                                         nphy_adj_noise_var_buf[0] = 0x22f;
19076                                         nphy_adj_noise_var_buf[1] = 0x25f;
19077                                         isAdjustNoiseVar = true;
19078                                         break;
19079                                 case 4:
19080                                         nphy_adj_tone_id_buf[0] = 41;
19081                                         nphy_adj_tone_id_buf[1] = 42;
19082                                         nphy_adj_noise_var_buf[0] = 0x22f;
19083                                         nphy_adj_noise_var_buf[1] = 0x25f;
19084                                         isAdjustNoiseVar = true;
19085                                         break;
19086                                 case 5:
19087                                         nphy_adj_tone_id_buf[0] = 25;
19088                                         nphy_adj_tone_id_buf[1] = 26;
19089                                         nphy_adj_noise_var_buf[0] = 0x24f;
19090                                         nphy_adj_noise_var_buf[1] = 0x25f;
19091                                         isAdjustNoiseVar = true;
19092                                         break;
19093                                 case 6:
19094                                         nphy_adj_tone_id_buf[0] = 9;
19095                                         nphy_adj_tone_id_buf[1] = 10;
19096                                         nphy_adj_noise_var_buf[0] = 0x22f;
19097                                         nphy_adj_noise_var_buf[1] = 0x24f;
19098                                         isAdjustNoiseVar = true;
19099                                         break;
19100                                 case 7:
19101                                         nphy_adj_tone_id_buf[0] = 121;
19102                                         nphy_adj_tone_id_buf[1] = 122;
19103                                         nphy_adj_noise_var_buf[0] = 0x18f;
19104                                         nphy_adj_noise_var_buf[1] = 0x24f;
19105                                         isAdjustNoiseVar = true;
19106                                         break;
19107                                 case 8:
19108                                         nphy_adj_tone_id_buf[0] = 105;
19109                                         nphy_adj_tone_id_buf[1] = 106;
19110                                         nphy_adj_noise_var_buf[0] = 0x22f;
19111                                         nphy_adj_noise_var_buf[1] = 0x25f;
19112                                         isAdjustNoiseVar = true;
19113                                         break;
19114                                 case 9:
19115                                         nphy_adj_tone_id_buf[0] = 89;
19116                                         nphy_adj_tone_id_buf[1] = 90;
19117                                         nphy_adj_noise_var_buf[0] = 0x22f;
19118                                         nphy_adj_noise_var_buf[1] = 0x24f;
19119                                         isAdjustNoiseVar = true;
19120                                         break;
19121                                 case 10:
19122                                         nphy_adj_tone_id_buf[0] = 73;
19123                                         nphy_adj_tone_id_buf[1] = 74;
19124                                         nphy_adj_noise_var_buf[0] = 0x22f;
19125                                         nphy_adj_noise_var_buf[1] = 0x24f;
19126                                         isAdjustNoiseVar = true;
19127                                         break;
19128                                 default:
19129                                         isAdjustNoiseVar = false;
19130                                         break;
19131                                 }
19132                         }
19133 
19134                         if (isAdjustNoiseVar) {
19135                                 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19136 
19137                                 wlc_phy_adjust_min_noisevar_nphy(
19138                                         pi,
19139                                         numTonesAdjust,
19140                                         nphy_adj_tone_id_buf,
19141                                         nphy_adj_noise_var_buf);
19142 
19143                                 tempval = 0;
19144 
19145                         } else {
19146                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19147                                                                  NULL);
19148                         }
19149                 }
19150 
19151                 if ((pi->nphy_aband_spurwar_en) &&
19152                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19153                         switch (cur_channel) {
19154                         case 54:
19155                                 nphy_adj_tone_id_buf[0] = 32;
19156                                 nphy_adj_noise_var_buf[0] = 0x25f;
19157                                 break;
19158                         case 38:
19159                         case 102:
19160                         case 118:
19161                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19162                                     (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19163                                         nphy_adj_tone_id_buf[0] = 32;
19164                                         nphy_adj_noise_var_buf[0] = 0x21f;
19165                                 } else {
19166                                         nphy_adj_tone_id_buf[0] = 0;
19167                                         nphy_adj_noise_var_buf[0] = 0x0;
19168                                 }
19169                                 break;
19170                         case 134:
19171                                 nphy_adj_tone_id_buf[0] = 32;
19172                                 nphy_adj_noise_var_buf[0] = 0x21f;
19173                                 break;
19174                         case 151:
19175                                 nphy_adj_tone_id_buf[0] = 16;
19176                                 nphy_adj_noise_var_buf[0] = 0x23f;
19177                                 break;
19178                         case 153:
19179                         case 161:
19180                                 nphy_adj_tone_id_buf[0] = 48;
19181                                 nphy_adj_noise_var_buf[0] = 0x23f;
19182                                 break;
19183                         default:
19184                                 nphy_adj_tone_id_buf[0] = 0;
19185                                 nphy_adj_noise_var_buf[0] = 0x0;
19186                                 break;
19187                         }
19188 
19189                         if (nphy_adj_tone_id_buf[0]
19190                             && nphy_adj_noise_var_buf[0])
19191                                 wlc_phy_adjust_min_noisevar_nphy(
19192                                         pi, 1,
19193                                         nphy_adj_tone_id_buf,
19194                                         nphy_adj_noise_var_buf);
19195                         else
19196                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19197                                                                  NULL);
19198                 }
19199 
19200                 if (pi->phyhang_avoid)
19201                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19202         }
19203 }
19204 
19205 void wlc_phy_init_nphy(struct brcms_phy *pi)
19206 {
19207         u16 val;
19208         u16 clip1_ths[2];
19209         struct nphy_txgains target_gain;
19210         u8 tx_pwr_ctrl_state;
19211         bool do_nphy_cal = false;
19212         uint core;
19213         u32 d11_clk_ctl_st;
19214         bool do_rssi_cal = false;
19215 
19216         core = 0;
19217 
19218         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19219                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19220 
19221         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19222             ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19223              (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19224                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19225                     (CHSPEC_IS2G(pi->radio_chanspec)))
19226                         bcma_cc_set32(&pi->d11core->bus->drv_cc,
19227                                       BCMA_CC_CHIPCTL, 0x40);
19228         }
19229 
19230         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19231                 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19232                                             ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19233 
19234         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19235             CHSPEC_IS40(pi->radio_chanspec)) {
19236 
19237                 d11_clk_ctl_st = bcma_read32(pi->d11core,
19238                                              D11REGOFFS(clk_ctl_st));
19239                 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19240                             ~(CCS_FORCEHT | CCS_HTAREQ));
19241 
19242                 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19243                              d11_clk_ctl_st);
19244         }
19245 
19246         pi->use_int_tx_iqlo_cal_nphy =
19247                 (PHY_IPA(pi) ||
19248                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19249                   (NREV_GE(pi->pubpi.phy_rev, 5)
19250                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19251 
19252         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19253 
19254         pi->nphy_deaf_count = 0;
19255 
19256         wlc_phy_tbl_init_nphy(pi);
19257 
19258         pi->nphy_crsminpwr_adjusted = false;
19259         pi->nphy_noisevars_adjusted = false;
19260 
19261         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19262                 write_phy_reg(pi, 0xe7, 0);
19263                 write_phy_reg(pi, 0xec, 0);
19264                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19265                         write_phy_reg(pi, 0x342, 0);
19266                         write_phy_reg(pi, 0x343, 0);
19267                         write_phy_reg(pi, 0x346, 0);
19268                         write_phy_reg(pi, 0x347, 0);
19269                 }
19270                 write_phy_reg(pi, 0xe5, 0);
19271                 write_phy_reg(pi, 0xe6, 0);
19272         } else {
19273                 write_phy_reg(pi, 0xec, 0);
19274         }
19275 
19276         write_phy_reg(pi, 0x91, 0);
19277         write_phy_reg(pi, 0x92, 0);
19278         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19279                 write_phy_reg(pi, 0x93, 0);
19280                 write_phy_reg(pi, 0x94, 0);
19281         }
19282 
19283         and_phy_reg(pi, 0xa1, ~3);
19284 
19285         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19286                 write_phy_reg(pi, 0x8f, 0);
19287                 write_phy_reg(pi, 0xa5, 0);
19288         } else {
19289                 write_phy_reg(pi, 0xa5, 0);
19290         }
19291 
19292         if (NREV_IS(pi->pubpi.phy_rev, 2))
19293                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19294         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19295                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19296 
19297         write_phy_reg(pi, 0x203, 32);
19298         write_phy_reg(pi, 0x201, 32);
19299 
19300         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19301                 write_phy_reg(pi, 0x20d, 160);
19302         else
19303                 write_phy_reg(pi, 0x20d, 184);
19304 
19305         write_phy_reg(pi, 0x13a, 200);
19306 
19307         write_phy_reg(pi, 0x70, 80);
19308 
19309         write_phy_reg(pi, 0x1ff, 48);
19310 
19311         if (NREV_LT(pi->pubpi.phy_rev, 8))
19312                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19313 
19314         wlc_phy_stf_chain_upd_nphy(pi);
19315 
19316         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19317                 write_phy_reg(pi, 0x180, 0xaa8);
19318                 write_phy_reg(pi, 0x181, 0x9a4);
19319         }
19320 
19321         if (PHY_IPA(pi)) {
19322                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19323 
19324                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19325                                     0x29b, (0x1 << 0), (1) << 0);
19326 
19327                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19328                                     0x29c, (0x1ff << 7),
19329                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19330 
19331                 }
19332 
19333                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19334         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19335                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19336         }
19337 
19338         wlc_phy_workarounds_nphy(pi);
19339 
19340         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19341 
19342         val = read_phy_reg(pi, 0x01);
19343         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19344         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19345         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19346 
19347         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19348 
19349         wlc_phy_pa_override_nphy(pi, OFF);
19350         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19351         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19352         wlc_phy_pa_override_nphy(pi, ON);
19353 
19354         wlc_phy_classifier_nphy(pi, 0, 0);
19355         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19356 
19357         if (CHSPEC_IS2G(pi->radio_chanspec))
19358                 wlc_phy_bphy_init_nphy(pi);
19359 
19360         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19361         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19362 
19363         wlc_phy_txpwr_fixpower_nphy(pi);
19364 
19365         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19366 
19367         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19368 
19369         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19370                 u32 *tx_pwrctrl_tbl = NULL;
19371                 u16 idx;
19372                 s16 pga_gn = 0;
19373                 s16 pad_gn = 0;
19374                 s32 rfpwr_offset;
19375 
19376                 if (PHY_IPA(pi)) {
19377                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19378                 } else {
19379                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19380                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19381                                         tx_pwrctrl_tbl =
19382                                                 nphy_tpc_5GHz_txgain_rev3;
19383                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19384                                         tx_pwrctrl_tbl =
19385                                                 (pi->srom_fem5g.extpagain ==
19386                                                  3) ?
19387                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19388                                                 nphy_tpc_5GHz_txgain_rev4;
19389                                 else
19390                                         tx_pwrctrl_tbl =
19391                                                 nphy_tpc_5GHz_txgain_rev5;
19392                         } else {
19393                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19394                                         if (pi->pubpi.radiorev == 5)
19395                                                 tx_pwrctrl_tbl =
19396                                                    nphy_tpc_txgain_epa_2057rev5;
19397                                         else if (pi->pubpi.radiorev == 3)
19398                                                 tx_pwrctrl_tbl =
19399                                                    nphy_tpc_txgain_epa_2057rev3;
19400                                 } else {
19401                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19402                                             (pi->srom_fem2g.extpagain == 3))
19403                                                 tx_pwrctrl_tbl =
19404                                                        nphy_tpc_txgain_HiPwrEPA;
19405                                         else
19406                                                 tx_pwrctrl_tbl =
19407                                                         nphy_tpc_txgain_rev3;
19408                                 }
19409                         }
19410                 }
19411 
19412                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19413                                          192, 32, tx_pwrctrl_tbl);
19414                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19415                                          192, 32, tx_pwrctrl_tbl);
19416 
19417                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19418 
19419                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19420 
19421                         for (idx = 0; idx < 128; idx++) {
19422                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19423                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19424                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19425                                                                  pad_gn);
19426                                 wlc_phy_table_write_nphy(
19427                                         pi,
19428                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19429                                         1, 576 + idx, 32,
19430                                         &rfpwr_offset);
19431                                 wlc_phy_table_write_nphy(
19432                                         pi,
19433                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19434                                         1, 576 + idx, 32,
19435                                         &rfpwr_offset);
19436                         }
19437                 } else {
19438 
19439                         for (idx = 0; idx < 128; idx++) {
19440                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19441                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19442                                         rfpwr_offset = (s16)
19443                                                  nphy_papd_pga_gain_delta_ipa_2g
19444                                                                        [pga_gn];
19445                                 else
19446                                         rfpwr_offset = (s16)
19447                                                  nphy_papd_pga_gain_delta_ipa_5g
19448                                                                        [pga_gn];
19449 
19450                                 wlc_phy_table_write_nphy(
19451                                         pi,
19452                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19453                                         1, 576 + idx, 32,
19454                                         &rfpwr_offset);
19455                                 wlc_phy_table_write_nphy(
19456                                         pi,
19457                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19458                                         1, 576 + idx, 32,
19459                                         &rfpwr_offset);
19460                         }
19461 
19462                 }
19463         } else {
19464 
19465                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19466                                          192, 32, nphy_tpc_txgain);
19467                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19468                                          192, 32, nphy_tpc_txgain);
19469         }
19470 
19471         if (pi->sh->phyrxchain != 0x3)
19472                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19473                                              pi->sh->phyrxchain);
19474 
19475         if (PHY_PERICAL_MPHASE_PENDING(pi))
19476                 wlc_phy_cal_perical_mphase_restart(pi);
19477 
19478         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19479                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19480                               (pi->nphy_rssical_chanspec_2G == 0) :
19481                               (pi->nphy_rssical_chanspec_5G == 0);
19482 
19483                 if (do_rssi_cal)
19484                         wlc_phy_rssi_cal_nphy(pi);
19485                 else
19486                         wlc_phy_restore_rssical_nphy(pi);
19487         } else {
19488                 wlc_phy_rssi_cal_nphy(pi);
19489         }
19490 
19491         if (!SCAN_RM_IN_PROGRESS(pi))
19492                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19493                               (pi->nphy_iqcal_chanspec_2G == 0) :
19494                               (pi->nphy_iqcal_chanspec_5G == 0);
19495 
19496         if (!pi->do_initcal)
19497                 do_nphy_cal = false;
19498 
19499         if (do_nphy_cal) {
19500 
19501                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19502 
19503                 if (pi->antsel_type == ANTSEL_2x3)
19504                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19505                                             true);
19506 
19507                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19508                         wlc_phy_rssi_cal_nphy(pi);
19509 
19510                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19511                                 pi->nphy_cal_orig_pwr_idx[0] =
19512                                         pi->nphy_txpwrindex[PHY_CORE_0]
19513                                         .
19514                                         index_internal;
19515                                 pi->nphy_cal_orig_pwr_idx[1] =
19516                                         pi->nphy_txpwrindex[PHY_CORE_1]
19517                                         .
19518                                         index_internal;
19519 
19520                                 wlc_phy_precal_txgain_nphy(pi);
19521                                 target_gain =
19522                                         wlc_phy_get_tx_gain_nphy(pi);
19523                         }
19524 
19525                         if (wlc_phy_cal_txiqlo_nphy
19526                                     (pi, target_gain, true,
19527                                     false) == 0) {
19528                                 if (wlc_phy_cal_rxiq_nphy
19529                                             (pi, target_gain, 2,
19530                                             false) == 0)
19531                                         wlc_phy_savecal_nphy(pi);
19532 
19533                         }
19534                 } else if (pi->mphase_cal_phase_id ==
19535                            MPHASE_CAL_STATE_IDLE) {
19536                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19537                                             PHY_PERICAL_PHYINIT);
19538                 }
19539         } else {
19540                 wlc_phy_restorecal_nphy(pi);
19541         }
19542 
19543         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19544 
19545         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19546 
19547         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19548 
19549         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19550 
19551                 write_phy_reg(pi, 0x70, 50);
19552 
19553         wlc_phy_txlpfbw_nphy(pi);
19554 
19555         wlc_phy_spurwar_nphy(pi);
19556 
19557 }
19558 
19559 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19560 {
19561         u16 val;
19562 
19563         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19564 
19565         val = read_phy_reg(pi, 0x01);
19566         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19567         udelay(1);
19568         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19569 
19570         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19571 
19572         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19573 }
19574 
19575 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19576 {
19577         u16 rfctrlintc_override_val;
19578 
19579         if (!en) {
19580 
19581                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19582                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19583 
19584                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19585                         rfctrlintc_override_val = 0x1480;
19586                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19587                         rfctrlintc_override_val =
19588                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19589                 else
19590                         rfctrlintc_override_val =
19591                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19592 
19593                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19594                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19595         } else {
19596                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19597                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19598         }
19599 
19600 }
19601 
19602 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19603 {
19604 
19605         u16 txrx_chain =
19606                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19607         bool CoreActv_override = false;
19608 
19609         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19610                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19611                 CoreActv_override = true;
19612 
19613                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19614                         and_phy_reg(pi, 0xa0, ~0x20);
19615         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19616                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19617                 CoreActv_override = true;
19618 
19619                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19620                         or_phy_reg(pi, 0xa0, 0x20);
19621         }
19622 
19623         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19624 
19625         if (CoreActv_override) {
19626                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19627                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19628         } else {
19629                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19630                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19631         }
19632 }
19633 
19634 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19635 {
19636         u16 regval;
19637         u16 tbl_buf[16];
19638         uint i;
19639         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19640         u16 tbl_opcode;
19641         bool suspend;
19642 
19643         pi->sh->phyrxchain = rxcore_bitmask;
19644 
19645         if (!pi->sh->clk)
19646                 return;
19647 
19648         suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19649                          MCTL_EN_MAC));
19650         if (!suspend)
19651                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19652 
19653         if (pi->phyhang_avoid)
19654                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19655 
19656         regval = read_phy_reg(pi, 0xa2);
19657         regval &= ~(0xf << 4);
19658         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19659         write_phy_reg(pi, 0xa2, regval);
19660 
19661         if ((rxcore_bitmask & 0x3) != 0x3) {
19662 
19663                 write_phy_reg(pi, 0x20e, 1);
19664 
19665                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19666                         if (pi->rx2tx_biasentry == -1) {
19667                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19668                                                         ARRAY_SIZE(tbl_buf), 80,
19669                                                         16, tbl_buf);
19670 
19671                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19672                                         if (tbl_buf[i] ==
19673                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19674                                                 pi->rx2tx_biasentry = (u8) i;
19675                                                 tbl_opcode =
19676                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19677                                                 wlc_phy_table_write_nphy(
19678                                                         pi,
19679                                                         NPHY_TBL_ID_RFSEQ,
19680                                                         1, i,
19681                                                         16,
19682                                                         &tbl_opcode);
19683                                                 break;
19684                                         } else if (tbl_buf[i] ==
19685                                                    NPHY_REV3_RFSEQ_CMD_END)
19686                                                 break;
19687                                 }
19688                         }
19689                 }
19690         } else {
19691 
19692                 write_phy_reg(pi, 0x20e, 30);
19693 
19694                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19695                         if (pi->rx2tx_biasentry != -1) {
19696                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19697                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19698                                                          1, pi->rx2tx_biasentry,
19699                                                          16, &tbl_opcode);
19700                                 pi->rx2tx_biasentry = -1;
19701                         }
19702                 }
19703         }
19704 
19705         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19706 
19707         if (pi->phyhang_avoid)
19708                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19709 
19710         if (!suspend)
19711                 wlapi_enable_mac(pi->sh->physhim);
19712 }
19713 
19714 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19715 {
19716         u16 regval, rxen_bits;
19717         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19718 
19719         regval = read_phy_reg(pi, 0xa2);
19720         rxen_bits = (regval >> 4) & 0xf;
19721 
19722         return (u8) rxen_bits;
19723 }
19724 
19725 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19726 {
19727         return PHY_IPA(pi);
19728 }
19729 
19730 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19731 {
19732 }
19733 
19734 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19735 {
19736 
19737         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19738         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19739 
19740         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19741         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19742 
19743 }
19744 
19745 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19746 {
19747         struct radio_20xx_regs *regs_2057_ptr = NULL;
19748 
19749         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19750                 regs_2057_ptr = regs_2057_rev4;
19751         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19752                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19753                 switch (pi->pubpi.radiorev) {
19754                 case 5:
19755 
19756                         if (NREV_IS(pi->pubpi.phy_rev, 8))
19757                                 regs_2057_ptr = regs_2057_rev5;
19758                         else if (NREV_IS(pi->pubpi.phy_rev, 9))
19759                                 regs_2057_ptr = regs_2057_rev5v1;
19760                         break;
19761 
19762                 case 7:
19763 
19764                         regs_2057_ptr = regs_2057_rev7;
19765                         break;
19766 
19767                 case 8:
19768 
19769                         regs_2057_ptr = regs_2057_rev8;
19770                         break;
19771 
19772                 default:
19773                         break;
19774                 }
19775         }
19776 
19777         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19778 }
19779 
19780 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19781 {
19782         u16 rcal_reg = 0;
19783         int i;
19784 
19785         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19786 
19787                 if (pi->pubpi.radiorev == 5) {
19788 
19789                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
19790 
19791                         udelay(10);
19792 
19793                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19794                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19795                                       0x1);
19796                 }
19797                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19798 
19799                 udelay(10);
19800 
19801                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19802 
19803                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19804                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19805                         if (rcal_reg & 0x1)
19806                                 break;
19807 
19808                         udelay(100);
19809                 }
19810 
19811                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19812                          "HW error: radio calib2"))
19813                         return 0;
19814 
19815                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19816 
19817                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19818 
19819                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19820                 if (pi->pubpi.radiorev == 5) {
19821 
19822                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19823                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19824                                       0x0);
19825                 }
19826 
19827                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19828 
19829                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19830                                       rcal_reg);
19831                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19832                                       rcal_reg << 2);
19833                 }
19834 
19835         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19836                 u16 savereg;
19837 
19838                 savereg =
19839                         read_radio_reg(
19840                                 pi,
19841                                 RADIO_2056_SYN_PLL_MAST2 |
19842                                 RADIO_2056_SYN);
19843                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19844                                 savereg | 0x7);
19845                 udelay(10);
19846 
19847                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19848                                 0x1);
19849                 udelay(10);
19850 
19851                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19852                                 0x9);
19853 
19854                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19855                         rcal_reg = read_radio_reg(
19856                                 pi,
19857                                 RADIO_2056_SYN_RCAL_CODE_OUT |
19858                                 RADIO_2056_SYN);
19859                         if (rcal_reg & 0x80)
19860                                 break;
19861 
19862                         udelay(100);
19863                 }
19864 
19865                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19866                          "HW error: radio calib3"))
19867                         return 0;
19868 
19869                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19870                                 0x1);
19871 
19872                 rcal_reg =
19873                         read_radio_reg(pi,
19874                                        RADIO_2056_SYN_RCAL_CODE_OUT |
19875                                        RADIO_2056_SYN);
19876 
19877                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19878                                 0x0);
19879 
19880                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19881                                 savereg);
19882 
19883                 return rcal_reg & 0x1f;
19884         }
19885         return rcal_reg & 0x3e;
19886 }
19887 
19888 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19889 {
19890         u16 rccal_valid;
19891         int i;
19892         bool chip43226_6362A0;
19893 
19894         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19895                             || (pi->pubpi.radiorev == 4)
19896                             || (pi->pubpi.radiorev == 6));
19897 
19898         rccal_valid = 0;
19899         if (chip43226_6362A0) {
19900                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19901                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19902         } else {
19903                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19904 
19905                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19906         }
19907         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19908         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19909 
19910         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19911                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19912                 if (rccal_valid & 0x2)
19913                         break;
19914 
19915                 udelay(500);
19916         }
19917 
19918         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19919 
19920         rccal_valid = 0;
19921         if (chip43226_6362A0) {
19922                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19923                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19924         } else {
19925                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19926 
19927                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19928         }
19929         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19930         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19931 
19932         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19933                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19934                 if (rccal_valid & 0x2)
19935                         break;
19936 
19937                 udelay(500);
19938         }
19939 
19940         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19941 
19942         rccal_valid = 0;
19943         if (chip43226_6362A0) {
19944                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19945 
19946                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19947                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19948         } else {
19949                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19950                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19951                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19952         }
19953         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19954 
19955         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19956                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19957                 if (rccal_valid & 0x2)
19958                         break;
19959 
19960                 udelay(500);
19961         }
19962 
19963         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19964                 return 0;
19965 
19966         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19967 
19968         return rccal_valid;
19969 }
19970 
19971 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19972 {
19973 
19974         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19975 
19976         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19977         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19978         mdelay(2);
19979         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19980         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19981 
19982         if (pi->phy_init_por) {
19983                 wlc_phy_radio205x_rcal(pi);
19984                 wlc_phy_radio2057_rccal(pi);
19985         }
19986 
19987         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19988 }
19989 
19990 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19991 {
19992         const struct radio_regs *regs_SYN_2056_ptr = NULL;
19993         const struct radio_regs *regs_TX_2056_ptr = NULL;
19994         const struct radio_regs *regs_RX_2056_ptr = NULL;
19995 
19996         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19997                 regs_SYN_2056_ptr = regs_SYN_2056;
19998                 regs_TX_2056_ptr = regs_TX_2056;
19999                 regs_RX_2056_ptr = regs_RX_2056;
20000         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20001                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20002                 regs_TX_2056_ptr = regs_TX_2056_A1;
20003                 regs_RX_2056_ptr = regs_RX_2056_A1;
20004         } else {
20005                 switch (pi->pubpi.radiorev) {
20006                 case 5:
20007                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20008                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20009                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20010                         break;
20011 
20012                 case 6:
20013                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20014                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20015                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20016                         break;
20017 
20018                 case 7:
20019                 case 9:
20020                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20021                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20022                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20023                         break;
20024 
20025                 case 8:
20026                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20027                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20028                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20029                         break;
20030 
20031                 case 11:
20032                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20033                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20034                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20035                         break;
20036 
20037                 default:
20038                         return;
20039                 }
20040         }
20041 
20042         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20043 
20044         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20045 
20046         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20047 
20048         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20049 
20050         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20051 }
20052 
20053 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20054 {
20055         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20056 
20057         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20058         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20059         udelay(1000);
20060         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20061 
20062         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20063             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20064                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20065         else
20066                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20067 
20068         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20069 
20070         if (pi->phy_init_por)
20071                 wlc_phy_radio205x_rcal(pi);
20072 }
20073 
20074 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20075 {
20076 
20077         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20078         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20079 
20080         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20081 }
20082 
20083 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20084 {
20085         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20086 }
20087 
20088 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20089 {
20090 
20091         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20092                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20093 
20094         if (((pi->sh->sromrev >= 4)
20095              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20096             || ((pi->sh->sromrev < 4))) {
20097                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20098                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20099         }
20100 
20101         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20102         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20103 
20104         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20105                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20106 
20107         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20108 
20109         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20110 
20111         udelay(1000);
20112 
20113         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20114 
20115         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20116                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20117 
20118         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20119                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20120                  "HW error: radio calibration1\n"))
20121                 return;
20122 
20123         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20124                       ~(RADIO_2055_CAL_LPO_ENABLE));
20125 
20126         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20127 
20128         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20129         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20130 
20131         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20132         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20133 
20134         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20135                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20136         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20137                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20138         if (pi->nphy_gain_boost) {
20139                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20140                               ~(RADIO_2055_GAINBST_DISABLE));
20141                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20142                               ~(RADIO_2055_GAINBST_DISABLE));
20143         } else {
20144                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20145                              RADIO_2055_GAINBST_DISABLE);
20146                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20147                              RADIO_2055_GAINBST_DISABLE);
20148         }
20149 
20150         udelay(2);
20151 }
20152 
20153 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20154 {
20155         if (on) {
20156                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20157                         if (!pi->radio_is_on) {
20158                                 wlc_phy_radio_preinit_205x(pi);
20159                                 wlc_phy_radio_init_2057(pi);
20160                                 wlc_phy_radio_postinit_2057(pi);
20161                         }
20162 
20163                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20164                                              pi->radio_chanspec);
20165                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20166                         wlc_phy_radio_preinit_205x(pi);
20167                         wlc_phy_radio_init_2056(pi);
20168                         wlc_phy_radio_postinit_2056(pi);
20169 
20170                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20171                                              pi->radio_chanspec);
20172                 } else {
20173                         wlc_phy_radio_preinit_2055(pi);
20174                         wlc_phy_radio_init_2055(pi);
20175                         wlc_phy_radio_postinit_2055(pi);
20176                 }
20177 
20178                 pi->radio_is_on = true;
20179 
20180         } else {
20181 
20182                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20183                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20184                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20185                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20186 
20187                         write_radio_reg(pi,
20188                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20189                                         RADIO_2056_TX0, 0);
20190                         write_radio_reg(pi,
20191                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20192                                         RADIO_2056_TX0, 0);
20193                         write_radio_reg(pi,
20194                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20195                                         RADIO_2056_TX0, 0);
20196                         write_radio_reg(pi,
20197                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20198                                         RADIO_2056_TX0, 0);
20199                         mod_radio_reg(pi,
20200                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20201                                       RADIO_2056_TX0, 0xf0, 0);
20202                         write_radio_reg(pi,
20203                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20204                                         RADIO_2056_TX0, 0);
20205 
20206                         write_radio_reg(pi,
20207                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20208                                         RADIO_2056_TX1, 0);
20209                         write_radio_reg(pi,
20210                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20211                                         RADIO_2056_TX1, 0);
20212                         write_radio_reg(pi,
20213                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20214                                         RADIO_2056_TX1, 0);
20215                         write_radio_reg(pi,
20216                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20217                                         RADIO_2056_TX1, 0);
20218                         mod_radio_reg(pi,
20219                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20220                                       RADIO_2056_TX1, 0xf0, 0);
20221                         write_radio_reg(pi,
20222                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20223                                         RADIO_2056_TX1, 0);
20224 
20225                         pi->radio_is_on = false;
20226                 }
20227 
20228                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20229                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20230                         pi->radio_is_on = false;
20231                 }
20232 
20233         }
20234 }
20235 
20236 static bool
20237 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20238                        const struct chan_info_nphy_radio2057 **t0,
20239                        const struct chan_info_nphy_radio205x **t1,
20240                        const struct chan_info_nphy_radio2057_rev5 **t2,
20241                        const struct chan_info_nphy_2055 **t3)
20242 {
20243         uint i;
20244         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20245         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20246         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20247         u32 tbl_len = 0;
20248 
20249         int freq = 0;
20250 
20251         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20252 
20253                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20254 
20255                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20256                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20257 
20258                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20259                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20260                         switch (pi->pubpi.radiorev) {
20261 
20262                         case 5:
20263 
20264                                 if (pi->pubpi.radiover == 0x0) {
20265 
20266                                         chan_info_tbl_p_2 =
20267                                                 chan_info_nphyrev8_2057_rev5;
20268                                         tbl_len = ARRAY_SIZE(
20269                                                   chan_info_nphyrev8_2057_rev5);
20270 
20271                                 } else if (pi->pubpi.radiover == 0x1) {
20272 
20273                                         chan_info_tbl_p_2 =
20274                                                 chan_info_nphyrev9_2057_rev5v1;
20275                                         tbl_len = ARRAY_SIZE(
20276                                                 chan_info_nphyrev9_2057_rev5v1);
20277 
20278                                 }
20279                                 break;
20280 
20281                         case 7:
20282                                 chan_info_tbl_p_0 =
20283                                         chan_info_nphyrev8_2057_rev7;
20284                                 tbl_len = ARRAY_SIZE(
20285                                                   chan_info_nphyrev8_2057_rev7);
20286                                 break;
20287 
20288                         case 8:
20289                                 chan_info_tbl_p_0 =
20290                                         chan_info_nphyrev8_2057_rev8;
20291                                 tbl_len = ARRAY_SIZE(
20292                                                   chan_info_nphyrev8_2057_rev8);
20293                                 break;
20294 
20295                         default:
20296                                 break;
20297                         }
20298                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20299 
20300                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20301                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20302                 } else {
20303                         goto fail;
20304                 }
20305 
20306                 for (i = 0; i < tbl_len; i++) {
20307                         if (pi->pubpi.radiorev == 5) {
20308 
20309                                 if (chan_info_tbl_p_2[i].chan == channel)
20310                                         break;
20311                         } else {
20312 
20313                                 if (chan_info_tbl_p_0[i].chan == channel)
20314                                         break;
20315                         }
20316                 }
20317 
20318                 if (i >= tbl_len)
20319                         goto fail;
20320 
20321                 if (pi->pubpi.radiorev == 5) {
20322                         *t2 = &chan_info_tbl_p_2[i];
20323                         freq = chan_info_tbl_p_2[i].freq;
20324                 } else {
20325                         *t0 = &chan_info_tbl_p_0[i];
20326                         freq = chan_info_tbl_p_0[i].freq;
20327                 }
20328 
20329         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20330                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20331                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20332                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20333                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20334                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20335                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20336                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20337                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20338                         switch (pi->pubpi.radiorev) {
20339                         case 5:
20340                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20341                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20342                                 break;
20343                         case 6:
20344                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20345                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20346                                 break;
20347                         case 7:
20348                         case 9:
20349                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20350                                 tbl_len =
20351                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20352                                 break;
20353                         case 8:
20354                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20355                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20356                                 break;
20357                         case 11:
20358                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20359                                 tbl_len = ARRAY_SIZE(
20360                                                     chan_info_nphyrev6_2056v11);
20361                                 break;
20362                         default:
20363                                 break;
20364                         }
20365                 }
20366 
20367                 for (i = 0; i < tbl_len; i++) {
20368                         if (chan_info_tbl_p_1[i].chan == channel)
20369                                 break;
20370                 }
20371 
20372                 if (i >= tbl_len)
20373                         goto fail;
20374 
20375                 *t1 = &chan_info_tbl_p_1[i];
20376                 freq = chan_info_tbl_p_1[i].freq;
20377 
20378         } else {
20379                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20380                         if (chan_info_nphy_2055[i].chan == channel)
20381                                 break;
20382 
20383                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20384                         goto fail;
20385 
20386                 *t3 = &chan_info_nphy_2055[i];
20387                 freq = chan_info_nphy_2055[i].freq;
20388         }
20389 
20390         *f = freq;
20391         return true;
20392 
20393 fail:
20394         *f = WL_CHAN_FREQ_RANGE_2G;
20395         return false;
20396 }
20397 
20398 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20399 {
20400         int freq;
20401         const struct chan_info_nphy_radio2057 *t0 = NULL;
20402         const struct chan_info_nphy_radio205x *t1 = NULL;
20403         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20404         const struct chan_info_nphy_2055 *t3 = NULL;
20405 
20406         if (channel == 0)
20407                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20408 
20409         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20410 
20411         if (CHSPEC_IS2G(pi->radio_chanspec))
20412                 return WL_CHAN_FREQ_RANGE_2G;
20413 
20414         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20415                 return WL_CHAN_FREQ_RANGE_5GL;
20416         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20417                 return WL_CHAN_FREQ_RANGE_5GM;
20418         else
20419                 return WL_CHAN_FREQ_RANGE_5GH;
20420 }
20421 
20422 static void
20423 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20424                                  const struct chan_info_nphy_2055 *ci)
20425 {
20426 
20427         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20428         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20429         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20430         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20431 
20432         BRCMS_PHY_WAR_PR51571(pi);
20433 
20434         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20435         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20436         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20437         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20438 
20439         BRCMS_PHY_WAR_PR51571(pi);
20440 
20441         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20442         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20443         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20444         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20445 
20446         BRCMS_PHY_WAR_PR51571(pi);
20447 
20448         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20449                         ci->RF_core1_lgbuf_a_tune);
20450         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20451                         ci->RF_core1_lgbuf_g_tune);
20452         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20453         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20454                         ci->RF_core1_tx_pga_pad_tn);
20455 
20456         BRCMS_PHY_WAR_PR51571(pi);
20457 
20458         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20459                         ci->RF_core1_tx_mx_bgtrim);
20460         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20461                         ci->RF_core2_lgbuf_a_tune);
20462         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20463                         ci->RF_core2_lgbuf_g_tune);
20464         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20465 
20466         BRCMS_PHY_WAR_PR51571(pi);
20467 
20468         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20469                         ci->RF_core2_tx_pga_pad_tn);
20470         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20471                         ci->RF_core2_tx_mx_bgtrim);
20472 
20473         udelay(50);
20474 
20475         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20476         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20477 
20478         BRCMS_PHY_WAR_PR51571(pi);
20479 
20480         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20481 
20482         udelay(300);
20483 }
20484 
20485 static void
20486 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20487                                  const struct chan_info_nphy_radio205x *ci)
20488 {
20489         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20490 
20491         write_radio_reg(pi,
20492                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20493                         ci->RF_SYN_pll_vcocal1);
20494         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20495                         ci->RF_SYN_pll_vcocal2);
20496         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20497                         ci->RF_SYN_pll_refdiv);
20498         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20499                         ci->RF_SYN_pll_mmd2);
20500         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20501                         ci->RF_SYN_pll_mmd1);
20502         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20503                         ci->RF_SYN_pll_loopfilter1);
20504         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20505                         ci->RF_SYN_pll_loopfilter2);
20506         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20507                         ci->RF_SYN_pll_loopfilter3);
20508         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20509                         ci->RF_SYN_pll_loopfilter4);
20510         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20511                         ci->RF_SYN_pll_loopfilter5);
20512         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20513                         ci->RF_SYN_reserved_addr27);
20514         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20515                         ci->RF_SYN_reserved_addr28);
20516         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20517                         ci->RF_SYN_reserved_addr29);
20518         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20519                         ci->RF_SYN_logen_VCOBUF1);
20520         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20521                         ci->RF_SYN_logen_MIXER2);
20522         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20523                         ci->RF_SYN_logen_BUF3);
20524         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20525                         ci->RF_SYN_logen_BUF4);
20526 
20527         write_radio_reg(pi,
20528                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20529                         ci->RF_RX0_lnaa_tune);
20530         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20531                         ci->RF_RX0_lnag_tune);
20532         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20533                         ci->RF_TX0_intpaa_boost_tune);
20534         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20535                         ci->RF_TX0_intpag_boost_tune);
20536         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20537                         ci->RF_TX0_pada_boost_tune);
20538         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20539                         ci->RF_TX0_padg_boost_tune);
20540         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20541                         ci->RF_TX0_pgaa_boost_tune);
20542         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20543                         ci->RF_TX0_pgag_boost_tune);
20544         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20545                         ci->RF_TX0_mixa_boost_tune);
20546         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20547                         ci->RF_TX0_mixg_boost_tune);
20548 
20549         write_radio_reg(pi,
20550                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20551                         ci->RF_RX1_lnaa_tune);
20552         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20553                         ci->RF_RX1_lnag_tune);
20554         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20555                         ci->RF_TX1_intpaa_boost_tune);
20556         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20557                         ci->RF_TX1_intpag_boost_tune);
20558         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20559                         ci->RF_TX1_pada_boost_tune);
20560         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20561                         ci->RF_TX1_padg_boost_tune);
20562         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20563                         ci->RF_TX1_pgaa_boost_tune);
20564         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20565                         ci->RF_TX1_pgag_boost_tune);
20566         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20567                         ci->RF_TX1_mixa_boost_tune);
20568         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20569                         ci->RF_TX1_mixg_boost_tune);
20570 
20571         if (NREV_IS(pi->pubpi.phy_rev, 3))
20572                 regs_SYN_2056_ptr = regs_SYN_2056;
20573         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20574                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20575         else {
20576                 switch (pi->pubpi.radiorev) {
20577                 case 5:
20578                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20579                         break;
20580                 case 6:
20581                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20582                         break;
20583                 case 7:
20584                 case 9:
20585                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20586                         break;
20587                 case 8:
20588                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20589                         break;
20590                 case 11:
20591                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20592                         break;
20593                 }
20594         }
20595         if (CHSPEC_IS2G(pi->radio_chanspec))
20596                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20597                                 RADIO_2056_SYN,
20598                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20599         else
20600                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20601                                 RADIO_2056_SYN,
20602                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20603 
20604         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20605                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20606                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20607                                         RADIO_2056_SYN, 0x1f);
20608                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20609                                         RADIO_2056_SYN, 0x1f);
20610 
20611                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20612                             (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20613                                 write_radio_reg(pi,
20614                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20615                                                 RADIO_2056_SYN, 0x14);
20616                                 write_radio_reg(pi,
20617                                                 RADIO_2056_SYN_PLL_CP2 |
20618                                                 RADIO_2056_SYN, 0x00);
20619                         } else {
20620                                 write_radio_reg(pi,
20621                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20622                                                 RADIO_2056_SYN, 0xb);
20623                                 write_radio_reg(pi,
20624                                                 RADIO_2056_SYN_PLL_CP2 |
20625                                                 RADIO_2056_SYN, 0x14);
20626                         }
20627                 }
20628         }
20629 
20630         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20631             (CHSPEC_IS2G(pi->radio_chanspec))) {
20632                 write_radio_reg(pi,
20633                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20634                                 0x1f);
20635                 write_radio_reg(pi,
20636                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20637                                 0x1f);
20638                 write_radio_reg(pi,
20639                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20640                                 0xb);
20641                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20642                                 0x20);
20643         }
20644 
20645         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20646                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20647                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20648                                         RADIO_2056_SYN, 0x1f);
20649                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20650                                         RADIO_2056_SYN, 0x1f);
20651                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20652                                         RADIO_2056_SYN, 0x5);
20653                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20654                                         RADIO_2056_SYN, 0xc);
20655                 }
20656         }
20657 
20658         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20659                 u16 pag_boost_tune;
20660                 u16 padg_boost_tune;
20661                 u16 pgag_boost_tune;
20662                 u16 mixg_boost_tune;
20663                 u16 bias, cascbias;
20664                 uint core;
20665 
20666                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20667 
20668                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20669 
20670                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20671                                                  PADG_IDAC, 0xcc);
20672 
20673                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20674                                     (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20675                                         bias = 0x40;
20676                                         cascbias = 0x45;
20677                                         pag_boost_tune = 0x5;
20678                                         pgag_boost_tune = 0x33;
20679                                         padg_boost_tune = 0x77;
20680                                         mixg_boost_tune = 0x55;
20681                                 } else {
20682                                         bias = 0x25;
20683                                         cascbias = 0x20;
20684 
20685                                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20686                                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20687                                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20688                                                 bias = 0x2a;
20689                                                 cascbias = 0x38;
20690                                         }
20691 
20692                                         pag_boost_tune = 0x4;
20693                                         pgag_boost_tune = 0x03;
20694                                         padg_boost_tune = 0x77;
20695                                         mixg_boost_tune = 0x65;
20696                                 }
20697 
20698                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20699                                                  INTPAG_IMAIN_STAT, bias);
20700                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20701                                                  INTPAG_IAUX_STAT, bias);
20702                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20703                                                  INTPAG_CASCBIAS, cascbias);
20704 
20705                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20706                                                  INTPAG_BOOST_TUNE,
20707                                                  pag_boost_tune);
20708                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20709                                                  PGAG_BOOST_TUNE,
20710                                                  pgag_boost_tune);
20711                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20712                                                  PADG_BOOST_TUNE,
20713                                                  padg_boost_tune);
20714                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20715                                                  MIXG_BOOST_TUNE,
20716                                                  mixg_boost_tune);
20717                         } else {
20718 
20719                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20720                                        0x40 : 0x20;
20721 
20722                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723                                                  INTPAG_IMAIN_STAT, bias);
20724                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20725                                                  INTPAG_IAUX_STAT, bias);
20726                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20727                                                  INTPAG_CASCBIAS, 0x30);
20728                         }
20729                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20730                                          0xee);
20731                 }
20732         }
20733 
20734         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20735             && CHSPEC_IS5G(pi->radio_chanspec)) {
20736                 u16 paa_boost_tune;
20737                 u16 pada_boost_tune;
20738                 u16 pgaa_boost_tune;
20739                 u16 mixa_boost_tune;
20740                 u16 freq, pabias, cascbias;
20741                 uint core;
20742 
20743                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20744 
20745                 if (freq < 5150) {
20746 
20747                         paa_boost_tune = 0xa;
20748                         pada_boost_tune = 0x77;
20749                         pgaa_boost_tune = 0xf;
20750                         mixa_boost_tune = 0xf;
20751                 } else if (freq < 5340) {
20752 
20753                         paa_boost_tune = 0x8;
20754                         pada_boost_tune = 0x77;
20755                         pgaa_boost_tune = 0xfb;
20756                         mixa_boost_tune = 0xf;
20757                 } else if (freq < 5650) {
20758 
20759                         paa_boost_tune = 0x0;
20760                         pada_boost_tune = 0x77;
20761                         pgaa_boost_tune = 0xb;
20762                         mixa_boost_tune = 0xf;
20763                 } else {
20764 
20765                         paa_boost_tune = 0x0;
20766                         pada_boost_tune = 0x77;
20767                         if (freq != 5825)
20768                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20769                         else
20770                                 pgaa_boost_tune = 6;
20771 
20772                         mixa_boost_tune = 0xf;
20773                 }
20774 
20775                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20776                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20778                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779                                          PADA_BOOST_TUNE, pada_boost_tune);
20780                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20781                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
20782                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20783                                          MIXA_BOOST_TUNE, mixa_boost_tune);
20784 
20785                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20786                                          TXSPARE1, 0x30);
20787                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20788                                          PA_SPARE2, 0xee);
20789 
20790                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20791                                          PADA_CASCBIAS, 0x3);
20792 
20793                         cascbias = 0x30;
20794 
20795                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20796                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20797                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20798                                 cascbias = 0x35;
20799 
20800                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20801 
20802                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20803                                          INTPAA_IAUX_STAT, pabias);
20804                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20805                                          INTPAA_IMAIN_STAT, pabias);
20806                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20807                                          INTPAA_CASCBIAS, cascbias);
20808                 }
20809         }
20810 
20811         udelay(50);
20812 
20813         wlc_phy_radio205x_vcocal_nphy(pi);
20814 }
20815 
20816 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20817 {
20818         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20819                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20820                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20821                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20822                               (1 << 2));
20823                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20824         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20825                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20826                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20827                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20828                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20829                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20830         }
20831 
20832         udelay(300);
20833 }
20834 
20835 static void
20836 wlc_phy_chanspec_radio2057_setup(
20837         struct brcms_phy *pi,
20838         const struct chan_info_nphy_radio2057 *ci,
20839         const struct chan_info_nphy_radio2057_rev5 *
20840         ci2)
20841 {
20842         int coreNum;
20843         u16 txmix2g_tune_boost_pu = 0;
20844         u16 pad2g_tune_pus = 0;
20845 
20846         if (pi->pubpi.radiorev == 5) {
20847 
20848                 write_radio_reg(pi,
20849                                 RADIO_2057_VCOCAL_COUNTVAL0,
20850                                 ci2->RF_vcocal_countval0);
20851                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20852                                 ci2->RF_vcocal_countval1);
20853                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20854                                 ci2->RF_rfpll_refmaster_sparextalsize);
20855                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20856                                 ci2->RF_rfpll_loopfilter_r1);
20857                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20858                                 ci2->RF_rfpll_loopfilter_c2);
20859                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20860                                 ci2->RF_rfpll_loopfilter_c1);
20861                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20862                                 ci2->RF_cp_kpd_idac);
20863                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20864                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20865                 write_radio_reg(pi,
20866                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20867                 write_radio_reg(pi,
20868                                 RADIO_2057_LOGEN_MX2G_TUNE,
20869                                 ci2->RF_logen_mx2g_tune);
20870                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20871                                 ci2->RF_logen_indbuf2g_tune);
20872 
20873                 write_radio_reg(pi,
20874                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20875                                 ci2->RF_txmix2g_tune_boost_pu_core0);
20876                 write_radio_reg(pi,
20877                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20878                                 ci2->RF_pad2g_tune_pus_core0);
20879                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20880                                 ci2->RF_lna2g_tune_core0);
20881 
20882                 write_radio_reg(pi,
20883                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20884                                 ci2->RF_txmix2g_tune_boost_pu_core1);
20885                 write_radio_reg(pi,
20886                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20887                                 ci2->RF_pad2g_tune_pus_core1);
20888                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20889                                 ci2->RF_lna2g_tune_core1);
20890 
20891         } else {
20892 
20893                 write_radio_reg(pi,
20894                                 RADIO_2057_VCOCAL_COUNTVAL0,
20895                                 ci->RF_vcocal_countval0);
20896                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20897                                 ci->RF_vcocal_countval1);
20898                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20899                                 ci->RF_rfpll_refmaster_sparextalsize);
20900                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20901                                 ci->RF_rfpll_loopfilter_r1);
20902                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20903                                 ci->RF_rfpll_loopfilter_c2);
20904                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20905                                 ci->RF_rfpll_loopfilter_c1);
20906                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20907                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20908                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20909                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20910                 write_radio_reg(pi,
20911                                 RADIO_2057_LOGEN_MX2G_TUNE,
20912                                 ci->RF_logen_mx2g_tune);
20913                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20914                                 ci->RF_logen_mx5g_tune);
20915                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20916                                 ci->RF_logen_indbuf2g_tune);
20917                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20918                                 ci->RF_logen_indbuf5g_tune);
20919 
20920                 write_radio_reg(pi,
20921                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20922                                 ci->RF_txmix2g_tune_boost_pu_core0);
20923                 write_radio_reg(pi,
20924                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20925                                 ci->RF_pad2g_tune_pus_core0);
20926                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20927                                 ci->RF_pga_boost_tune_core0);
20928                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20929                                 ci->RF_txmix5g_boost_tune_core0);
20930                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20931                                 ci->RF_pad5g_tune_misc_pus_core0);
20932                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20933                                 ci->RF_lna2g_tune_core0);
20934                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20935                                 ci->RF_lna5g_tune_core0);
20936 
20937                 write_radio_reg(pi,
20938                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20939                                 ci->RF_txmix2g_tune_boost_pu_core1);
20940                 write_radio_reg(pi,
20941                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20942                                 ci->RF_pad2g_tune_pus_core1);
20943                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20944                                 ci->RF_pga_boost_tune_core1);
20945                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20946                                 ci->RF_txmix5g_boost_tune_core1);
20947                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20948                                 ci->RF_pad5g_tune_misc_pus_core1);
20949                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20950                                 ci->RF_lna2g_tune_core1);
20951                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20952                                 ci->RF_lna5g_tune_core1);
20953         }
20954 
20955         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20956 
20957                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20958                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20959                                         0x3f);
20960                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20961                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20962                                         0x8);
20963                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20964                                         0x8);
20965                 } else {
20966                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20967                                         0x1f);
20968                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20969                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20970                                         0x8);
20971                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20972                                         0x8);
20973                 }
20974         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20975                    (pi->pubpi.radiorev == 8)) {
20976 
20977                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20978                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20979                                         0x1b);
20980                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20981                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20982                                         0xa);
20983                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20984                                         0xa);
20985                 } else {
20986                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20987                                         0x1f);
20988                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20989                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20990                                         0x8);
20991                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20992                                         0x8);
20993                 }
20994 
20995         }
20996 
20997         if (CHSPEC_IS2G(pi->radio_chanspec)) {
20998                 if (PHY_IPA(pi)) {
20999                         if (pi->pubpi.radiorev == 3)
21000                                 txmix2g_tune_boost_pu = 0x6b;
21001 
21002                         if (pi->pubpi.radiorev == 5)
21003                                 pad2g_tune_pus = 0x73;
21004 
21005                 } else {
21006                         if (pi->pubpi.radiorev != 5) {
21007                                 pad2g_tune_pus = 0x3;
21008 
21009                                 txmix2g_tune_boost_pu = 0x61;
21010                         }
21011                 }
21012 
21013                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21014 
21015                         if (txmix2g_tune_boost_pu != 0)
21016                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21017                                                  TXMIX2G_TUNE_BOOST_PU,
21018                                                  txmix2g_tune_boost_pu);
21019 
21020                         if (pad2g_tune_pus != 0)
21021                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21022                                                  PAD2G_TUNE_PUS,
21023                                                  pad2g_tune_pus);
21024                 }
21025         }
21026 
21027         udelay(50);
21028 
21029         wlc_phy_radio205x_vcocal_nphy(pi);
21030 }
21031 
21032 static void
21033 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21034                             const struct nphy_sfo_cfg *ci)
21035 {
21036         u16 val;
21037 
21038         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21039         if (CHSPEC_IS5G(chanspec) && !val) {
21040 
21041                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21042                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21043                       (val | MAC_PHY_FORCE_CLK));
21044 
21045                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21046                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21047 
21048                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21049 
21050                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21051         } else if (!CHSPEC_IS5G(chanspec) && val) {
21052 
21053                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21054 
21055                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21056                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21057                       (val | MAC_PHY_FORCE_CLK));
21058 
21059                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21060                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21061 
21062                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21063         }
21064 
21065         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21066         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21067         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21068 
21069         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21070         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21071         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21072 
21073         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21074                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21075 
21076                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21077         } else {
21078                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21079                                         NPHY_ClassifierCtrl_ofdm_en);
21080 
21081                 if (CHSPEC_IS2G(chanspec))
21082                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21083         }
21084 
21085         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21086                 wlc_phy_txpwr_fixpower_nphy(pi);
21087 
21088         if (NREV_LT(pi->pubpi.phy_rev, 3))
21089                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21090 
21091         wlc_phy_txlpfbw_nphy(pi);
21092 
21093         if (NREV_GE(pi->pubpi.phy_rev, 3)
21094             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21095                 u8 spuravoid = 0;
21096 
21097                 val = CHSPEC_CHANNEL(chanspec);
21098                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21099                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21100                                 if ((val == 13) || (val == 14) || (val == 153))
21101                                         spuravoid = 1;
21102                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21103                                    || (val == 14)) {
21104                                 spuravoid = 1;
21105                         }
21106                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21107                         if (val == 54)
21108                                 spuravoid = 1;
21109                 } else if (pi->nphy_aband_spurwar_en &&
21110                     ((val == 38) || (val == 102) || (val == 118))) {
21111                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21112                             && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21113                                 spuravoid = 0;
21114                         } else {
21115                                 spuravoid = 1;
21116                         }
21117                 }
21118 
21119                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21120                         spuravoid = 1;
21121 
21122                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21123                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21124                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21125                                                      spuravoid);
21126                 } else {
21127                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21128                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21129                                                      spuravoid);
21130                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21131                 }
21132 
21133                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21134                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21135                         if (spuravoid == 1) {
21136                                 bcma_write16(pi->d11core,
21137                                              D11REGOFFS(tsf_clk_frac_l),
21138                                              0x5341);
21139                                 bcma_write16(pi->d11core,
21140                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21141                         } else {
21142                                 bcma_write16(pi->d11core,
21143                                              D11REGOFFS(tsf_clk_frac_l),
21144                                              0x8889);
21145                                 bcma_write16(pi->d11core,
21146                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21147                         }
21148                 }
21149 
21150                 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21151                       (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21152                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21153 
21154                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21155                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21156 
21157                 wlc_phy_resetcca_nphy(pi);
21158 
21159                 pi->phy_isspuravoid = (spuravoid > 0);
21160         }
21161 
21162         if (NREV_LT(pi->pubpi.phy_rev, 7))
21163                 write_phy_reg(pi, 0x17e, 0x3830);
21164 
21165         wlc_phy_spurwar_nphy(pi);
21166 }
21167 
21168 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21169 {
21170         int freq;
21171         const struct chan_info_nphy_radio2057 *t0 = NULL;
21172         const struct chan_info_nphy_radio205x *t1 = NULL;
21173         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21174         const struct chan_info_nphy_2055 *t3 = NULL;
21175 
21176         if (!wlc_phy_chan2freq_nphy
21177                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21178                 return;
21179 
21180         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21181 
21182         if (CHSPEC_BW(chanspec) != pi->bw)
21183                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21184 
21185         if (CHSPEC_IS40(chanspec)) {
21186                 if (CHSPEC_SB_UPPER(chanspec)) {
21187                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21188                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21189                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21190                 } else {
21191                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21192                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21193                                 and_phy_reg(pi, 0x310,
21194                                             (~PRIM_SEL_UP20 & 0xffff));
21195                 }
21196         }
21197 
21198         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21199                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21200 
21201                         if ((pi->pubpi.radiorev <= 4)
21202                             || (pi->pubpi.radiorev == 6)) {
21203                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21204                                               0x2,
21205                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21206                                                : 0));
21207                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21208                                               0x2,
21209                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21210                                                : 0));
21211                         }
21212 
21213                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21214                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21215                                 (pi->pubpi.radiorev == 5) ?
21216                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21217                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21218 
21219                 } else {
21220 
21221                         mod_radio_reg(pi,
21222                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21223                                       0x4,
21224                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21225                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21226 
21227                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21228                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21229                 }
21230 
21231         } else {
21232 
21233                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21234                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21235                                : (0x05 << 4)));
21236 
21237                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21238                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21239                                             (const struct nphy_sfo_cfg *)
21240                                              &(t3->PHY_BW1a));
21241         }
21242 
21243 }
21244 
21245 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21246 {
21247         struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21248         u16 mask = 0xfc00;
21249         u32 mc = 0;
21250 
21251         if (NREV_GE(pi->pubpi.phy_rev, 7))
21252                 return;
21253 
21254         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21255                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21256 
21257                 if (!lut_init)
21258                         return;
21259 
21260                 if (pi->srom_fem2g.antswctrllut == 0) {
21261                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21262                                                  1, 0x02, 16, &v0);
21263                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264                                                  1, 0x03, 16, &v1);
21265                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21266                                                  1, 0x08, 16, &v2);
21267                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21268                                                  1, 0x0C, 16, &v3);
21269                 }
21270 
21271                 if (pi->srom_fem5g.antswctrllut == 0) {
21272                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273                                                  1, 0x12, 16, &v0);
21274                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275                                                  1, 0x13, 16, &v1);
21276                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21277                                                  1, 0x18, 16, &v2);
21278                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21279                                                  1, 0x1C, 16, &v3);
21280                 }
21281         } else {
21282 
21283                 write_phy_reg(pi, 0xc8, 0x0);
21284                 write_phy_reg(pi, 0xc9, 0x0);
21285 
21286                 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21287 
21288                 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21289                 mc &= ~MCTL_GPOUT_SEL_MASK;
21290                 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21291 
21292                 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21293 
21294                 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21295 
21296                 if (lut_init) {
21297                         write_phy_reg(pi, 0xf8, 0x02d8);
21298                         write_phy_reg(pi, 0xf9, 0x0301);
21299                         write_phy_reg(pi, 0xfa, 0x02d8);
21300                         write_phy_reg(pi, 0xfb, 0x0301);
21301                 }
21302         }
21303 }
21304 
21305 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21306 {
21307         u16 curr_ctl, new_ctl;
21308         bool suspended = false;
21309 
21310         if (D11REV_IS(pi->sh->corerev, 16)) {
21311                 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21312                              MCTL_EN_MAC) ? false : true;
21313                 if (!suspended)
21314                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21315         }
21316 
21317         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21318 
21319         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21320 
21321         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21322 
21323         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21324                 wlapi_enable_mac(pi->sh->physhim);
21325 
21326         return new_ctl;
21327 }
21328 
21329 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21330 {
21331         u16 trigger_mask, status_mask;
21332         u16 orig_RfseqCoreActv;
21333 
21334         switch (cmd) {
21335         case NPHY_RFSEQ_RX2TX:
21336                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21337                 status_mask = NPHY_RfseqStatus_rx2tx;
21338                 break;
21339         case NPHY_RFSEQ_TX2RX:
21340                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21341                 status_mask = NPHY_RfseqStatus_tx2rx;
21342                 break;
21343         case NPHY_RFSEQ_RESET2RX:
21344                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21345                 status_mask = NPHY_RfseqStatus_reset2rx;
21346                 break;
21347         case NPHY_RFSEQ_UPDATEGAINH:
21348                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21349                 status_mask = NPHY_RfseqStatus_updategainh;
21350                 break;
21351         case NPHY_RFSEQ_UPDATEGAINL:
21352                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21353                 status_mask = NPHY_RfseqStatus_updategainl;
21354                 break;
21355         case NPHY_RFSEQ_UPDATEGAINU:
21356                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21357                 status_mask = NPHY_RfseqStatus_updategainu;
21358                 break;
21359         default:
21360                 return;
21361         }
21362 
21363         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21364         or_phy_reg(pi, 0xa1,
21365                    (NPHY_RfseqMode_CoreActv_override |
21366                     NPHY_RfseqMode_Trigger_override));
21367         or_phy_reg(pi, 0xa3, trigger_mask);
21368         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21369         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21370         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21371 }
21372 
21373 static void
21374 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21375                                      u8 core_mask, u8 off)
21376 {
21377         u16 rfmxgain = 0, lpfgain = 0;
21378         u16 tgain = 0;
21379 
21380         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21381 
21382                 switch (cmd) {
21383                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21384                         wlc_phy_rfctrl_override_nphy_rev7(
21385                                 pi, (0x1 << 5),
21386                                 value, core_mask, off,
21387                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388                         wlc_phy_rfctrl_override_nphy_rev7(
21389                                 pi, (0x1 << 4), value,
21390                                 core_mask, off,
21391                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21392                         wlc_phy_rfctrl_override_nphy_rev7(
21393                                 pi, (0x1 << 3), value,
21394                                 core_mask, off,
21395                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21396                         break;
21397                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21398                         wlc_phy_rfctrl_override_nphy_rev7(
21399                                 pi, (0x1 << 2),
21400                                 value, core_mask, off,
21401                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402                         wlc_phy_rfctrl_override_nphy_rev7(
21403                                 pi, (0x1 << 1), value,
21404                                 core_mask, off,
21405                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21406                         wlc_phy_rfctrl_override_nphy_rev7(
21407                                 pi, (0x1 << 0), value,
21408                                 core_mask, off,
21409                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21410                         wlc_phy_rfctrl_override_nphy_rev7(
21411                                 pi, (0x1 << 1), value,
21412                                 core_mask, off,
21413                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21414                         wlc_phy_rfctrl_override_nphy_rev7(
21415                                 pi, (0x1 << 11), 0,
21416                                 core_mask, off,
21417                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21418                         break;
21419                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21420                         wlc_phy_rfctrl_override_nphy_rev7(
21421                                 pi, (0x1 << 2),
21422                                 value, core_mask, off,
21423                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21424                         wlc_phy_rfctrl_override_nphy_rev7(
21425                                 pi, (0x1 << 1), value,
21426                                 core_mask, off,
21427                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21428                         wlc_phy_rfctrl_override_nphy_rev7(
21429                                 pi, (0x1 << 0), value,
21430                                 core_mask, off,
21431                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21432                         wlc_phy_rfctrl_override_nphy_rev7(
21433                                 pi, (0x1 << 2), value,
21434                                 core_mask, off,
21435                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21436                         wlc_phy_rfctrl_override_nphy_rev7(
21437                                 pi, (0x1 << 11), 1,
21438                                 core_mask, off,
21439                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21440                         break;
21441                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21442                         rfmxgain = value & 0x000ff;
21443                         lpfgain = value & 0x0ff00;
21444                         lpfgain = lpfgain >> 8;
21445 
21446                         wlc_phy_rfctrl_override_nphy_rev7(
21447                                 pi, (0x1 << 11),
21448                                 rfmxgain, core_mask,
21449                                 off,
21450                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21451                         wlc_phy_rfctrl_override_nphy_rev7(
21452                                 pi, (0x3 << 13),
21453                                 lpfgain, core_mask,
21454                                 off,
21455                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21456                         break;
21457                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21458                         tgain = value & 0x7fff;
21459                         lpfgain = value & 0x8000;
21460                         lpfgain = lpfgain >> 14;
21461 
21462                         wlc_phy_rfctrl_override_nphy_rev7(
21463                                 pi, (0x1 << 12),
21464                                 tgain, core_mask, off,
21465                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21466                         wlc_phy_rfctrl_override_nphy_rev7(
21467                                 pi, (0x1 << 13),
21468                                 lpfgain, core_mask,
21469                                 off,
21470                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21471                         break;
21472                 }
21473         }
21474 }
21475 
21476 static void
21477 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21478                                u8 coresel, u8 rail, u8 rssi_type)
21479 {
21480         u16 valuetostuff;
21481 
21482         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21483                  NPHY_RSSICAL_MAXREAD : offset;
21484         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21485                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21486 
21487         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21488 
21489         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21490              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21491             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21492                 write_phy_reg(pi, 0x1a6, valuetostuff);
21493 
21494         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21495              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21496             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21497                 write_phy_reg(pi, 0x1ac, valuetostuff);
21498 
21499         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21500              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21501             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21502                 write_phy_reg(pi, 0x1b2, valuetostuff);
21503 
21504         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21505              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21506             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21507                 write_phy_reg(pi, 0x1b8, valuetostuff);
21508 
21509         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21510              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21511             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21512                 write_phy_reg(pi, 0x1a4, valuetostuff);
21513 
21514         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21515              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21516             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21517                 write_phy_reg(pi, 0x1aa, valuetostuff);
21518 
21519         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21520              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21521             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21522                 write_phy_reg(pi, 0x1b0, valuetostuff);
21523 
21524         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21525              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21526             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21527                 write_phy_reg(pi, 0x1b6, valuetostuff);
21528 
21529         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21530              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21531             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21532                 write_phy_reg(pi, 0x1a5, valuetostuff);
21533         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21534              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21535             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21536                 write_phy_reg(pi, 0x1ab, valuetostuff);
21537 
21538         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21539              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21540             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21541                 write_phy_reg(pi, 0x1b1, valuetostuff);
21542 
21543         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21544              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21545             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21546                 write_phy_reg(pi, 0x1b7, valuetostuff);
21547 
21548         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21549              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551                 write_phy_reg(pi, 0x1a7, valuetostuff);
21552         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21553              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555                 write_phy_reg(pi, 0x1ad, valuetostuff);
21556         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21557              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21558             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21559                 write_phy_reg(pi, 0x1b3, valuetostuff);
21560         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21561              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21562             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21563                 write_phy_reg(pi, 0x1b9, valuetostuff);
21564 
21565         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21566              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21567             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21568                 write_phy_reg(pi, 0x1a8, valuetostuff);
21569 
21570         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21571              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21572             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21573                 write_phy_reg(pi, 0x1ae, valuetostuff);
21574 
21575         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21576              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21577             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21578                 write_phy_reg(pi, 0x1b4, valuetostuff);
21579 
21580         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21581              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21582             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21583                 write_phy_reg(pi, 0x1ba, valuetostuff);
21584 
21585         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21586              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21587             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21588                 write_phy_reg(pi, 0x1a9, valuetostuff);
21589         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21590              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21591             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21592                 write_phy_reg(pi, 0x1b5, valuetostuff);
21593 
21594         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21595              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21596             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21597                 write_phy_reg(pi, 0x1af, valuetostuff);
21598 
21599         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21600              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21601             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21602                 write_phy_reg(pi, 0x1bb, valuetostuff);
21603 }
21604 
21605 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21606 {
21607         if (PHY_IPA(pi)) {
21608                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21609                         write_radio_reg(pi,
21610                                         ((core == PHY_CORE_0) ?
21611                                          RADIO_2057_TX0_TX_SSI_MUX :
21612                                          RADIO_2057_TX1_TX_SSI_MUX),
21613                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21614                                         0xc : 0xe));
21615                 else
21616                         write_radio_reg(pi,
21617                                         RADIO_2056_TX_TX_SSI_MUX |
21618                                         ((core == PHY_CORE_0) ?
21619                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21620                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21621                                         0xc : 0xe));
21622         } else {
21623                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21624                         write_radio_reg(pi,
21625                                         ((core == PHY_CORE_0) ?
21626                                          RADIO_2057_TX0_TX_SSI_MUX :
21627                                          RADIO_2057_TX1_TX_SSI_MUX),
21628                                         0x11);
21629 
21630                         if (pi->pubpi.radioid == BCM2057_ID)
21631                                 write_radio_reg(pi,
21632                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21633 
21634                 } else {
21635                         write_radio_reg(pi,
21636                                         RADIO_2056_TX_TX_SSI_MUX |
21637                                         ((core == PHY_CORE_0) ?
21638                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21639                                         0x11);
21640                 }
21641         }
21642 }
21643 
21644 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21645 {
21646         u16 mask, val;
21647         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21648             startseq;
21649         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21650             rfctrlovr_trigger_val;
21651         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21652         u16 rfctrlcmd_val, rfctrlovr_val;
21653         u8 core;
21654 
21655         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21656                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21657                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21658                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21659 
21660                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21661                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21662 
21663                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21664                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21665 
21666                         mask = (0x1 << 2) |
21667                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21668                         mod_phy_reg(pi, 0xf9, mask, 0);
21669                         mod_phy_reg(pi, 0xfb, mask, 0);
21670 
21671                 } else {
21672                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21673                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21674                                     && core == PHY_CORE_1)
21675                                         continue;
21676                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21677                                          && core == PHY_CORE_0)
21678                                         continue;
21679 
21680                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21681                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21682 
21683                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21684                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21685                                     rssi_type == NPHY_RSSI_SEL_NB) {
21686                                         mod_phy_reg(pi,
21687                                                     (core ==
21688                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21689                                                     (0x3 << 8), 0);
21690 
21691                                         mask = (0x1 << 2) |
21692                                                (0x1 << 3) |
21693                                                (0x1 << 4) | (0x1 << 5);
21694                                         mod_phy_reg(pi,
21695                                                     (core ==
21696                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21697                                                     mask, 0);
21698 
21699                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21700                                                 if (CHSPEC_IS5G(
21701                                                           pi->radio_chanspec)) {
21702                                                         mask = (0x1 << 2);
21703                                                         val = 1 << 2;
21704                                                 } else {
21705                                                         mask = (0x1 << 3);
21706                                                         val = 1 << 3;
21707                                                 }
21708                                         } else if (rssi_type ==
21709                                                    NPHY_RSSI_SEL_W2) {
21710                                                 mask = (0x1 << 4);
21711                                                 val = 1 << 4;
21712                                         } else {
21713                                                 mask = (0x1 << 5);
21714                                                 val = 1 << 5;
21715                                         }
21716                                         mod_phy_reg(pi,
21717                                                     (core ==
21718                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21719                                                     mask, val);
21720 
21721                                         mask = (0x1 << 5);
21722                                         val = 1 << 5;
21723                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21724                                                     0xe5 : 0xe6, mask, val);
21725                                 } else {
21726                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21727                                                 mask = (0x3 << 8);
21728                                                 val = 1 << 8;
21729                                                 mod_phy_reg(pi,
21730                                                             (core ==
21731                                                              PHY_CORE_0) ? 0xa6
21732                                                             : 0xa7, mask, val);
21733                                                 mask = (0x3 << 10);
21734                                                 val = 1 << 10;
21735                                                 mod_phy_reg(pi,
21736                                                             (core ==
21737                                                              PHY_CORE_0) ? 0xa6
21738                                                             : 0xa7, mask, val);
21739                                         } else if (rssi_type ==
21740                                                    NPHY_RSSI_SEL_IQ) {
21741                                                 mask = (0x3 << 8);
21742                                                 val = 2 << 8;
21743                                                 mod_phy_reg(pi,
21744                                                             (core ==
21745                                                              PHY_CORE_0) ? 0xa6
21746                                                             : 0xa7, mask, val);
21747                                                 mask = (0x3 << 10);
21748                                                 val = 2 << 10;
21749                                                 mod_phy_reg(pi,
21750                                                             (core ==
21751                                                              PHY_CORE_0) ? 0xa6
21752                                                             : 0xa7, mask, val);
21753                                         } else {
21754                                                 mask = (0x3 << 8);
21755                                                 val = 3 << 8;
21756                                                 mod_phy_reg(pi,
21757                                                             (core ==
21758                                                              PHY_CORE_0) ? 0xa6
21759                                                             : 0xa7, mask, val);
21760                                                 mask = (0x3 << 10);
21761                                                 val = 3 << 10;
21762                                                 mod_phy_reg(pi,
21763                                                             (core ==
21764                                                              PHY_CORE_0) ? 0xa6
21765                                                             : 0xa7, mask, val);
21766                                                 brcms_phy_wr_tx_mux(pi, core);
21767                                                 afectrlovr_rssi_val = 1 << 9;
21768                                                 mod_phy_reg(pi,
21769                                                            (core ==
21770                                                             PHY_CORE_0) ? 0x8f
21771                                                            : 0xa5, (0x1 << 9),
21772                                                            afectrlovr_rssi_val);
21773                                         }
21774                                 }
21775                         }
21776                 }
21777         } else {
21778 
21779                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21780                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21781                     (rssi_type == NPHY_RSSI_SEL_NB))
21782                         val = 0x0;
21783                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21784                         val = 0x1;
21785                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21786                         val = 0x2;
21787                 else
21788                         val = 0x3;
21789 
21790                 mask = ((0x3 << 12) | (0x3 << 14));
21791                 val = (val << 12) | (val << 14);
21792                 mod_phy_reg(pi, 0xa6, mask, val);
21793                 mod_phy_reg(pi, 0xa7, mask, val);
21794 
21795                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21796                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21797                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21798                         if (rssi_type == NPHY_RSSI_SEL_W1)
21799                                 val = 0x1;
21800                         if (rssi_type == NPHY_RSSI_SEL_W2)
21801                                 val = 0x2;
21802                         if (rssi_type == NPHY_RSSI_SEL_NB)
21803                                 val = 0x3;
21804 
21805                         mask = (0x3 << 4);
21806                         val = (val << 4);
21807                         mod_phy_reg(pi, 0x7a, mask, val);
21808                         mod_phy_reg(pi, 0x7d, mask, val);
21809                 }
21810 
21811                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21812                         afectrlovr_rssi_val = 0;
21813                         rfctrlcmd_rxen_val = 0;
21814                         rfctrlcmd_coresel_val = 0;
21815                         rfctrlovr_rssi_val = 0;
21816                         rfctrlovr_rxen_val = 0;
21817                         rfctrlovr_coresel_val = 0;
21818                         rfctrlovr_trigger_val = 0;
21819                         startseq = 0;
21820                 } else {
21821                         afectrlovr_rssi_val = 1;
21822                         rfctrlcmd_rxen_val = 1;
21823                         rfctrlcmd_coresel_val = core_code;
21824                         rfctrlovr_rssi_val = 1;
21825                         rfctrlovr_rxen_val = 1;
21826                         rfctrlovr_coresel_val = 1;
21827                         rfctrlovr_trigger_val = 1;
21828                         startseq = 1;
21829                 }
21830 
21831                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21832                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21833                                        12) | (afectrlovr_rssi_val << 13);
21834                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21835                             afectrlovr_rssi_val);
21836 
21837                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21838                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21839                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21840                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21841                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21842                                         (rfctrlcmd_coresel_val << 3);
21843 
21844                         rfctrlovr_mask = ((0x1 << 5) |
21845                                           (0x1 << 12) |
21846                                           (0x1 << 1) | (0x1 << 0));
21847                         rfctrlovr_val = (rfctrlovr_rssi_val <<
21848                                          5) |
21849                                         (rfctrlovr_rxen_val << 12) |
21850                                         (rfctrlovr_coresel_val << 1) |
21851                                         (rfctrlovr_trigger_val << 0);
21852 
21853                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21854                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21855 
21856                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21857                         udelay(20);
21858 
21859                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21860                 }
21861         }
21862 }
21863 
21864 int
21865 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21866                        u8 nsamps)
21867 {
21868         s16 rssi0, rssi1;
21869         u16 afectrlCore1_save = 0;
21870         u16 afectrlCore2_save = 0;
21871         u16 afectrlOverride1_save = 0;
21872         u16 afectrlOverride2_save = 0;
21873         u16 rfctrlOverrideAux0_save = 0;
21874         u16 rfctrlOverrideAux1_save = 0;
21875         u16 rfctrlMiscReg1_save = 0;
21876         u16 rfctrlMiscReg2_save = 0;
21877         u16 rfctrlcmd_save = 0;
21878         u16 rfctrloverride_save = 0;
21879         u16 rfctrlrssiothers1_save = 0;
21880         u16 rfctrlrssiothers2_save = 0;
21881         s8 tmp_buf[4];
21882         u8 ctr = 0, samp = 0;
21883         s32 rssi_out_val;
21884         u16 gpiosel_orig;
21885 
21886         afectrlCore1_save = read_phy_reg(pi, 0xa6);
21887         afectrlCore2_save = read_phy_reg(pi, 0xa7);
21888         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21889                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21890                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21891                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21892                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21893                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21894                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21895         } else {
21896                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21897                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21898                 rfctrloverride_save = read_phy_reg(pi, 0xec);
21899                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21900                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21901         }
21902 
21903         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21904 
21905         gpiosel_orig = read_phy_reg(pi, 0xca);
21906         if (NREV_LT(pi->pubpi.phy_rev, 2))
21907                 write_phy_reg(pi, 0xca, 5);
21908 
21909         for (ctr = 0; ctr < 4; ctr++)
21910                 rssi_buf[ctr] = 0;
21911 
21912         for (samp = 0; samp < nsamps; samp++) {
21913                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21914                         rssi0 = read_phy_reg(pi, 0x1c9);
21915                         rssi1 = read_phy_reg(pi, 0x1ca);
21916                 } else {
21917                         rssi0 = read_phy_reg(pi, 0x219);
21918                         rssi1 = read_phy_reg(pi, 0x21a);
21919                 }
21920 
21921                 ctr = 0;
21922                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21923                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21924                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21925                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21926 
21927                 for (ctr = 0; ctr < 4; ctr++)
21928                         rssi_buf[ctr] += tmp_buf[ctr];
21929 
21930         }
21931 
21932         rssi_out_val = rssi_buf[3] & 0xff;
21933         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21934         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21935         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21936 
21937         if (NREV_LT(pi->pubpi.phy_rev, 2))
21938                 write_phy_reg(pi, 0xca, gpiosel_orig);
21939 
21940         write_phy_reg(pi, 0xa6, afectrlCore1_save);
21941         write_phy_reg(pi, 0xa7, afectrlCore2_save);
21942         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21943                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21944                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21945                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21946                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21947                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21948                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21949         } else {
21950                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21951                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
21952                 write_phy_reg(pi, 0xec, rfctrloverride_save);
21953                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21954                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21955         }
21956 
21957         return rssi_out_val;
21958 }
21959 
21960 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21961 {
21962         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21963         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21964         u16 pwrdet_rxtx_core1_save;
21965         u16 pwrdet_rxtx_core2_save;
21966         u16 afectrlCore1_save;
21967         u16 afectrlCore2_save;
21968         u16 afectrlOverride_save;
21969         u16 afectrlOverride2_save;
21970         u16 pd_pll_ts_save;
21971         u16 gpioSel_save;
21972         s32 radio_temp[4];
21973         s32 radio_temp2[4];
21974         u16 syn_tempprocsense_save;
21975         s16 offset = 0;
21976 
21977         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21978                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21979                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21980                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21981                 s32 auxADC_Vl;
21982                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
21983                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
21984                 u16 RSSIMultCoef0QPowerDet_save;
21985                 u16 tempsense_Rcal;
21986 
21987                 syn_tempprocsense_save =
21988                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21989 
21990                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21991                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21992                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21993                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21994                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21995                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21996                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21997                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21998                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21999 
22000                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22001                                         &auxADC_Vmid_save);
22002                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22003                                         &auxADC_Av_save);
22004                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22005                                         &auxADC_rssi_ctrlL_save);
22006                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22007                                         &auxADC_rssi_ctrlH_save);
22008 
22009                 write_phy_reg(pi, 0x1ae, 0x0);
22010 
22011                 auxADC_rssi_ctrlL = 0x0;
22012                 auxADC_rssi_ctrlH = 0x20;
22013                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22014                                          &auxADC_rssi_ctrlL);
22015                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22016                                          &auxADC_rssi_ctrlH);
22017 
22018                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22019 
22020                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22021                                 tempsense_Rcal | 0x01);
22022 
22023                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22024                                                   1, 0, 0,
22025                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22026                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22027                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22028                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22029                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22030 
22031                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22032                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22033                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22034                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22035                 udelay(5);
22036                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22037                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22038                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22039                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22040                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22041                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22042                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22043                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22044                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22045                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22046 
22047                 auxADC_Vmid = 0xA3;
22048                 auxADC_Av = 0x0;
22049                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22050                                          &auxADC_Vmid);
22051                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22052                                          &auxADC_Av);
22053 
22054                 udelay(3);
22055 
22056                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22057                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22058                                 tempsense_Rcal | 0x03);
22059 
22060                 udelay(5);
22061                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22062 
22063                 auxADC_Av = 0x7;
22064                 if (radio_temp[1] + radio_temp2[1] < -30) {
22065                         auxADC_Vmid = 0x45;
22066                         auxADC_Vl = 263;
22067                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22068                         auxADC_Vmid = 0x200;
22069                         auxADC_Vl = 467;
22070                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22071                         auxADC_Vmid = 0x266;
22072                         auxADC_Vl = 634;
22073                 } else {
22074                         auxADC_Vmid = 0x2D5;
22075                         auxADC_Vl = 816;
22076                 }
22077 
22078                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22079                                          &auxADC_Vmid);
22080                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22081                                          &auxADC_Av);
22082 
22083                 udelay(3);
22084 
22085                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22086                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22087                                 tempsense_Rcal | 0x01);
22088 
22089                 udelay(5);
22090                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22091 
22092                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22093                                 syn_tempprocsense_save);
22094 
22095                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22096                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22097                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22098                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22099                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22100                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22101                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22102                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22103                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22104 
22105                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22106                                          &auxADC_Vmid_save);
22107                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22108                                          &auxADC_Av_save);
22109                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22110                                          &auxADC_rssi_ctrlL_save);
22111                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22112                                          &auxADC_rssi_ctrlH_save);
22113 
22114                 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22115                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22116                                          + 88 * (auxADC_Vl) - 27111 +
22117                                          128) / 256;
22118                 } else {
22119                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22120                                          + 82 * (auxADC_Vl) - 28861 +
22121                                          128) / 256;
22122                 }
22123 
22124                 offset = (s16) pi->phy_tempsense_offset;
22125 
22126         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22127                 syn_tempprocsense_save =
22128                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22129 
22130                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22131                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22132                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22133                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22134                 gpioSel_save = read_phy_reg(pi, 0xca);
22135 
22136                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22137 
22138                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22139                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22140                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22141 
22142                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22143                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22144                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22145                 else
22146                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22147 
22148                 radio_temp[0] =
22149                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22150 
22151                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22152                                 syn_tempprocsense_save);
22153 
22154                 write_phy_reg(pi, 0xca, gpioSel_save);
22155                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22156                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22157                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22158                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22159 
22160                 offset = (s16) pi->phy_tempsense_offset;
22161         } else {
22162 
22163                 pwrdet_rxtx_core1_save =
22164                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22165                 pwrdet_rxtx_core2_save =
22166                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22167                 core1_txrf_iqcal1_save =
22168                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22169                 core1_txrf_iqcal2_save =
22170                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22171                 core2_txrf_iqcal1_save =
22172                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22173                 core2_txrf_iqcal2_save =
22174                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22175                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22176 
22177                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22178                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22179                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22180                 gpioSel_save = read_phy_reg(pi, 0xca);
22181 
22182                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22183                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22184                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22185                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22186                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22187                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22188                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22189 
22190                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22191                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22192 
22193                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22194                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22195 
22196                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22197                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22198 
22199                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22200                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22201                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22202                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22203 
22204                 radio_temp[0] =
22205                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22206                          radio_temp[3]);
22207 
22208                 radio_temp[0] =
22209                         (radio_temp[0] +
22210                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22211 
22212                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22213 
22214                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22215                                 pwrdet_rxtx_core1_save);
22216                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22217                                 pwrdet_rxtx_core2_save);
22218                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22219                                 core1_txrf_iqcal1_save);
22220                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22221                                 core2_txrf_iqcal1_save);
22222                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22223                                 core1_txrf_iqcal2_save);
22224                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22225                                 core2_txrf_iqcal2_save);
22226                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22227 
22228                 write_phy_reg(pi, 0xca, gpioSel_save);
22229                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22230                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22231                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22232         }
22233 
22234         return (s16) radio_temp[0] + offset;
22235 }
22236 
22237 static void
22238 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22239 {
22240         u8 core;
22241 
22242         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22243                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22244                         if (core == PHY_CORE_0) {
22245                                 mod_radio_reg(pi,
22246                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22247                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22248                                               vcm_buf[2 *
22249                                                       core] <<
22250                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22251                                 mod_radio_reg(pi,
22252                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22253                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22254                                               vcm_buf[2 * core +
22255                                                       1] <<
22256                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22257                         } else {
22258                                 mod_radio_reg(pi,
22259                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22260                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22261                                               vcm_buf[2 *
22262                                                       core] <<
22263                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22264                                 mod_radio_reg(pi,
22265                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22266                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22267                                               vcm_buf[2 * core +
22268                                                       1] <<
22269                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22270                         }
22271                 } else {
22272                         if (core == PHY_CORE_0)
22273                                 mod_radio_reg(pi,
22274                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22275                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22276                                               vcm_buf[2 *
22277                                                       core] <<
22278                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22279                         else
22280                                 mod_radio_reg(pi,
22281                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22282                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22283                                               vcm_buf[2 *
22284                                                       core] <<
22285                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22286                 }
22287         }
22288 }
22289 
22290 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22291 {
22292         u16 classif_state;
22293         u16 clip_state[2];
22294         u16 clip_off[] = { 0xffff, 0xffff };
22295         s32 target_code;
22296         u8 vcm, min_vcm;
22297         u8 vcm_final = 0;
22298         u8 result_idx;
22299         s32 poll_results[8][4] = {
22300                 {0, 0, 0, 0},
22301                 {0, 0, 0, 0},
22302                 {0, 0, 0, 0},
22303                 {0, 0, 0, 0},
22304                 {0, 0, 0, 0},
22305                 {0, 0, 0, 0},
22306                 {0, 0, 0, 0},
22307                 {0, 0, 0, 0}
22308         };
22309         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22310         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22311         s32 fine_digital_offset[4];
22312         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22313         s32 min_poll;
22314         u8 vcm_level_max;
22315         u8 core;
22316         u8 wb_cnt;
22317         u8 rssi_type;
22318         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22319         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22320         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22321         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22322         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22323         u16 NPHY_RfctrlCmd_save;
22324         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22325         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22326         u8 rxcore_state;
22327         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22328         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22329         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22330         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22331 
22332         NPHY_REV7_RfctrlOverride3_save =
22333                 NPHY_REV7_RfctrlOverride4_save =
22334                 NPHY_REV7_RfctrlOverride5_save =
22335                 NPHY_REV7_RfctrlOverride6_save =
22336                 NPHY_REV7_RfctrlMiscReg3_save =
22337                 NPHY_REV7_RfctrlMiscReg4_save =
22338                 NPHY_REV7_RfctrlMiscReg5_save =
22339                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22340 
22341         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22342         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22343         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22344         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22345 
22346         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22347         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22348         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22349         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22350         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22351         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22352         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22353         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22354         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22355                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22356                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22357                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22358                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22359         }
22360         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22361         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22362         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22363         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22364         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22365         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22366                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22367                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22368                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22369                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22370         }
22371         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22372         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22373 
22374         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22375                                          RADIO_MIMO_CORESEL_ALLRXTX);
22376         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22377                                          RADIO_MIMO_CORESEL_ALLRXTX);
22378 
22379         if (NREV_GE(pi->pubpi.phy_rev, 7))
22380                 wlc_phy_rfctrl_override_1tomany_nphy(
22381                         pi,
22382                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22383                         0, 0, 0);
22384         else
22385                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22386 
22387         if (NREV_GE(pi->pubpi.phy_rev, 7))
22388                 wlc_phy_rfctrl_override_1tomany_nphy(
22389                         pi,
22390                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22391                         1, 0, 0);
22392         else
22393                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22394 
22395         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22396                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22397                                                   1, 0, 0,
22398                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22399                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22400                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22401         } else {
22402                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22403                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22404         }
22405 
22406         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22407                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22408                         wlc_phy_rfctrl_override_nphy_rev7(
22409                                 pi, (0x1 << 5),
22410                                 0, 0, 0,
22411                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412                         wlc_phy_rfctrl_override_nphy_rev7(
22413                                 pi, (0x1 << 4), 1, 0,
22414                                 0,
22415                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22416                 } else {
22417                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22418                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22419                 }
22420 
22421         } else {
22422                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22423                         wlc_phy_rfctrl_override_nphy_rev7(
22424                                 pi, (0x1 << 4),
22425                                 0, 0, 0,
22426                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427                         wlc_phy_rfctrl_override_nphy_rev7(
22428                                 pi, (0x1 << 5), 1, 0,
22429                                 0,
22430                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22431                 } else {
22432                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22433                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22434                 }
22435         }
22436 
22437         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22438                 (struct brcms_phy_pub *) pi);
22439 
22440         vcm_level_max = 8;
22441 
22442         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22443 
22444                 if ((rxcore_state & (1 << core)) == 0)
22445                         continue;
22446 
22447                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22448                                                core ==
22449                                                PHY_CORE_0 ?
22450                                                RADIO_MIMO_CORESEL_CORE1 :
22451                                                RADIO_MIMO_CORESEL_CORE2,
22452                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22453                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22454                                                core ==
22455                                                PHY_CORE_0 ?
22456                                                RADIO_MIMO_CORESEL_CORE1 :
22457                                                RADIO_MIMO_CORESEL_CORE2,
22458                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22459 
22460                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22461                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22462                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22463                                               RADIO_2057_NB_MASTER_CORE0 :
22464                                               RADIO_2057_NB_MASTER_CORE1,
22465                                               RADIO_2057_VCM_MASK, vcm);
22466                         else
22467                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22468                                               ((core ==
22469                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22470                                                RADIO_2056_RX1),
22471                                               RADIO_2056_VCM_MASK,
22472                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22473 
22474                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22475                                                &poll_results[vcm][0],
22476                                                NPHY_RSSICAL_NPOLL);
22477                 }
22478 
22479                 for (result_idx = 0; result_idx < 4; result_idx++) {
22480                         if ((core == result_idx / 2) &&
22481                             (result_idx % 2 == 0)) {
22482 
22483                                 min_d = NPHY_RSSICAL_MAXD;
22484                                 min_vcm = 0;
22485                                 min_poll =
22486                                         NPHY_RSSICAL_MAXREAD *
22487                                         NPHY_RSSICAL_NPOLL + 1;
22488                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22489                                         curr_d =
22490                                                 poll_results[vcm][result_idx] *
22491                                                 poll_results[vcm][result_idx] +
22492                                                 poll_results[vcm][result_idx +
22493                                                                   1] *
22494                                                 poll_results[vcm][result_idx +
22495                                                                   1];
22496                                         if (curr_d < min_d) {
22497                                                 min_d = curr_d;
22498                                                 min_vcm = vcm;
22499                                         }
22500                                         if (poll_results[vcm][result_idx] <
22501                                             min_poll)
22502                                                 min_poll =
22503                                                         poll_results[vcm]
22504                                                         [result_idx];
22505                                 }
22506                                 vcm_final = min_vcm;
22507                                 poll_results_min[result_idx] = min_poll;
22508                         }
22509                 }
22510 
22511                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22512                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22513                                       RADIO_2057_NB_MASTER_CORE0 :
22514                                       RADIO_2057_NB_MASTER_CORE1,
22515                                       RADIO_2057_VCM_MASK, vcm_final);
22516                 else
22517                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22518                                       ((core ==
22519                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22520                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22521                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22522 
22523                 for (result_idx = 0; result_idx < 4; result_idx++) {
22524                         if (core == result_idx / 2) {
22525                                 fine_digital_offset[result_idx] =
22526                                         (NPHY_RSSICAL_NB_TARGET *
22527                                          NPHY_RSSICAL_NPOLL) -
22528                                         poll_results[vcm_final][result_idx];
22529                                 if (fine_digital_offset[result_idx] < 0) {
22530                                         fine_digital_offset[result_idx] =
22531                                                 abs(fine_digital_offset
22532                                                     [result_idx]);
22533                                         fine_digital_offset[result_idx] +=
22534                                                 (NPHY_RSSICAL_NPOLL / 2);
22535                                         fine_digital_offset[result_idx] /=
22536                                                 NPHY_RSSICAL_NPOLL;
22537                                         fine_digital_offset[result_idx] =
22538                                                 -fine_digital_offset[
22539                                                                     result_idx];
22540                                 } else {
22541                                         fine_digital_offset[result_idx] +=
22542                                                 (NPHY_RSSICAL_NPOLL / 2);
22543                                         fine_digital_offset[result_idx] /=
22544                                                 NPHY_RSSICAL_NPOLL;
22545                                 }
22546 
22547                                 if (poll_results_min[result_idx] ==
22548                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22549                                         fine_digital_offset[result_idx] =
22550                                                 (NPHY_RSSICAL_NB_TARGET -
22551                                                  NPHY_RSSICAL_MAXREAD - 1);
22552 
22553                                 wlc_phy_scale_offset_rssi_nphy(
22554                                         pi, 0x0,
22555                                         (s8)
22556                                         fine_digital_offset
22557                                         [result_idx],
22558                                         (result_idx / 2 == 0) ?
22559                                         RADIO_MIMO_CORESEL_CORE1 :
22560                                         RADIO_MIMO_CORESEL_CORE2,
22561                                         (result_idx % 2 == 0) ?
22562                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22563                                         NPHY_RSSI_SEL_NB);
22564                         }
22565                 }
22566 
22567         }
22568 
22569         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22570 
22571                 if ((rxcore_state & (1 << core)) == 0)
22572                         continue;
22573 
22574                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22575                         if (wb_cnt == 0) {
22576                                 rssi_type = NPHY_RSSI_SEL_W1;
22577                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22578                         } else {
22579                                 rssi_type = NPHY_RSSI_SEL_W2;
22580                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22581                         }
22582 
22583                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22584                                                        core ==
22585                                                        PHY_CORE_0 ?
22586                                                        RADIO_MIMO_CORESEL_CORE1
22587                                                        :
22588                                                        RADIO_MIMO_CORESEL_CORE2,
22589                                                        NPHY_RAIL_I, rssi_type);
22590                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22591                                                        core ==
22592                                                        PHY_CORE_0 ?
22593                                                        RADIO_MIMO_CORESEL_CORE1
22594                                                        :
22595                                                        RADIO_MIMO_CORESEL_CORE2,
22596                                                        NPHY_RAIL_Q, rssi_type);
22597 
22598                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22599                                                NPHY_RSSICAL_NPOLL);
22600 
22601                         for (result_idx = 0; result_idx < 4; result_idx++) {
22602                                 if (core == result_idx / 2) {
22603                                         fine_digital_offset[result_idx] =
22604                                                 (target_code *
22605                                                  NPHY_RSSICAL_NPOLL) -
22606                                                 poll_result_core[result_idx];
22607                                         if (fine_digital_offset[result_idx] <
22608                                             0) {
22609                                                 fine_digital_offset[result_idx]
22610                                                         = abs(
22611                                                             fine_digital_offset
22612                                                             [result_idx]);
22613                                                 fine_digital_offset[result_idx]
22614                                                         += (NPHY_RSSICAL_NPOLL
22615                                                             / 2);
22616                                                 fine_digital_offset[result_idx]
22617                                                         /= NPHY_RSSICAL_NPOLL;
22618                                                 fine_digital_offset[result_idx]
22619                                                         = -fine_digital_offset
22620                                                                 [result_idx];
22621                                         } else {
22622                                                 fine_digital_offset[result_idx]
22623                                                         += (NPHY_RSSICAL_NPOLL
22624                                                             / 2);
22625                                                 fine_digital_offset[result_idx]
22626                                                         /= NPHY_RSSICAL_NPOLL;
22627                                         }
22628 
22629                                         wlc_phy_scale_offset_rssi_nphy(
22630                                                 pi, 0x0,
22631                                                 (s8)
22632                                                 fine_digital_offset
22633                                                 [core *
22634                                                  2],
22635                                                 (core == PHY_CORE_0) ?
22636                                                 RADIO_MIMO_CORESEL_CORE1 :
22637                                                 RADIO_MIMO_CORESEL_CORE2,
22638                                                 (result_idx % 2 == 0) ?
22639                                                 NPHY_RAIL_I :
22640                                                 NPHY_RAIL_Q,
22641                                                 rssi_type);
22642                                 }
22643                         }
22644 
22645                 }
22646         }
22647 
22648         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22649         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22650 
22651         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22652 
22653         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22654         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22655         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22656 
22657         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22658         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22659         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22660 
22661         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22662         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22663         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22664         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22665         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22666         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22667         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22668                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22669                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22670                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22671                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22672         }
22673         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22674         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22675         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22676         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22677         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22678         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22679                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22680                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22681                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22682                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22683         }
22684         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22685         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22686 
22687         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22688                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22689                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22690                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22691                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22692                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22693                 } else {
22694                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22695                                 read_radio_reg(pi,
22696                                                RADIO_2056_RX_RSSI_MISC |
22697                                                RADIO_2056_RX0);
22698                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22699                                 read_radio_reg(pi,
22700                                                RADIO_2056_RX_RSSI_MISC |
22701                                                RADIO_2056_RX1);
22702                 }
22703 
22704                 pi->rssical_cache.rssical_phyregs_2G[0] =
22705                         read_phy_reg(pi, 0x1a6);
22706                 pi->rssical_cache.rssical_phyregs_2G[1] =
22707                         read_phy_reg(pi, 0x1ac);
22708                 pi->rssical_cache.rssical_phyregs_2G[2] =
22709                         read_phy_reg(pi, 0x1b2);
22710                 pi->rssical_cache.rssical_phyregs_2G[3] =
22711                         read_phy_reg(pi, 0x1b8);
22712                 pi->rssical_cache.rssical_phyregs_2G[4] =
22713                         read_phy_reg(pi, 0x1a4);
22714                 pi->rssical_cache.rssical_phyregs_2G[5] =
22715                         read_phy_reg(pi, 0x1aa);
22716                 pi->rssical_cache.rssical_phyregs_2G[6] =
22717                         read_phy_reg(pi, 0x1b0);
22718                 pi->rssical_cache.rssical_phyregs_2G[7] =
22719                         read_phy_reg(pi, 0x1b6);
22720                 pi->rssical_cache.rssical_phyregs_2G[8] =
22721                         read_phy_reg(pi, 0x1a5);
22722                 pi->rssical_cache.rssical_phyregs_2G[9] =
22723                         read_phy_reg(pi, 0x1ab);
22724                 pi->rssical_cache.rssical_phyregs_2G[10] =
22725                         read_phy_reg(pi, 0x1b1);
22726                 pi->rssical_cache.rssical_phyregs_2G[11] =
22727                         read_phy_reg(pi, 0x1b7);
22728 
22729                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22730         } else {
22731                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22732                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22733                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22734                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22735                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22736                 } else {
22737                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22738                                 read_radio_reg(pi,
22739                                                RADIO_2056_RX_RSSI_MISC |
22740                                                RADIO_2056_RX0);
22741                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22742                                 read_radio_reg(pi,
22743                                                RADIO_2056_RX_RSSI_MISC |
22744                                                RADIO_2056_RX1);
22745                 }
22746 
22747                 pi->rssical_cache.rssical_phyregs_5G[0] =
22748                         read_phy_reg(pi, 0x1a6);
22749                 pi->rssical_cache.rssical_phyregs_5G[1] =
22750                         read_phy_reg(pi, 0x1ac);
22751                 pi->rssical_cache.rssical_phyregs_5G[2] =
22752                         read_phy_reg(pi, 0x1b2);
22753                 pi->rssical_cache.rssical_phyregs_5G[3] =
22754                         read_phy_reg(pi, 0x1b8);
22755                 pi->rssical_cache.rssical_phyregs_5G[4] =
22756                         read_phy_reg(pi, 0x1a4);
22757                 pi->rssical_cache.rssical_phyregs_5G[5] =
22758                         read_phy_reg(pi, 0x1aa);
22759                 pi->rssical_cache.rssical_phyregs_5G[6] =
22760                         read_phy_reg(pi, 0x1b0);
22761                 pi->rssical_cache.rssical_phyregs_5G[7] =
22762                         read_phy_reg(pi, 0x1b6);
22763                 pi->rssical_cache.rssical_phyregs_5G[8] =
22764                         read_phy_reg(pi, 0x1a5);
22765                 pi->rssical_cache.rssical_phyregs_5G[9] =
22766                         read_phy_reg(pi, 0x1ab);
22767                 pi->rssical_cache.rssical_phyregs_5G[10] =
22768                         read_phy_reg(pi, 0x1b1);
22769                 pi->rssical_cache.rssical_phyregs_5G[11] =
22770                         read_phy_reg(pi, 0x1b7);
22771 
22772                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22773         }
22774 
22775         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22776         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22777 }
22778 
22779 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22780 {
22781         s32 target_code;
22782         u16 classif_state;
22783         u16 clip_state[2];
22784         u16 rssi_ctrl_state[2], pd_state[2];
22785         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22786         u16 rfctrlintc_override_val;
22787         u16 clip_off[] = { 0xffff, 0xffff };
22788         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22789         u8 vcm, min_vcm, vcm_tmp[4];
22790         u8 vcm_final[4] = { 0, 0, 0, 0 };
22791         u8 result_idx, ctr;
22792         s32 poll_results[4][4] = {
22793                 {0, 0, 0, 0},
22794                 {0, 0, 0, 0},
22795                 {0, 0, 0, 0},
22796                 {0, 0, 0, 0}
22797         };
22798         s32 poll_miniq[4][2] = {
22799                 {0, 0},
22800                 {0, 0},
22801                 {0, 0},
22802                 {0, 0}
22803         };
22804         s32 min_d, curr_d;
22805         s32 fine_digital_offset[4];
22806         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22807         s32 min_poll;
22808 
22809         switch (rssi_type) {
22810         case NPHY_RSSI_SEL_NB:
22811                 target_code = NPHY_RSSICAL_NB_TARGET;
22812                 break;
22813         case NPHY_RSSI_SEL_W1:
22814                 target_code = NPHY_RSSICAL_W1_TARGET;
22815                 break;
22816         case NPHY_RSSI_SEL_W2:
22817                 target_code = NPHY_RSSICAL_W2_TARGET;
22818                 break;
22819         default:
22820                 return;
22821         }
22822 
22823         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22824         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22825         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22826         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22827 
22828         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22829         rfctrlintc_override_val =
22830                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22831 
22832         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22833         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22834         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22835         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22836 
22837         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22838         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22839         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22840         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22841 
22842         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22843                   RADIO_2055_WBRSSI_G2_PD;
22844         pd_state[0] =
22845                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22846         pd_state[1] =
22847                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22848         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22849         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22850         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22851                          RADIO_2055_WBRSSI_G2_SEL;
22852         rssi_ctrl_state[0] =
22853                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22854         rssi_ctrl_state[1] =
22855                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22856         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22857 
22858         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22859                                        NPHY_RAIL_I, rssi_type);
22860         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22861                                        NPHY_RAIL_Q, rssi_type);
22862 
22863         for (vcm = 0; vcm < 4; vcm++) {
22864 
22865                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22866                 if (rssi_type != NPHY_RSSI_SEL_W2)
22867                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22868 
22869                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22870                                        NPHY_RSSICAL_NPOLL);
22871 
22872                 if ((rssi_type == NPHY_RSSI_SEL_W1)
22873                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
22874                         for (ctr = 0; ctr < 2; ctr++)
22875                                 poll_miniq[vcm][ctr] =
22876                                         min(poll_results[vcm][ctr * 2 + 0],
22877                                             poll_results[vcm][ctr * 2 + 1]);
22878                 }
22879         }
22880 
22881         for (result_idx = 0; result_idx < 4; result_idx++) {
22882                 min_d = NPHY_RSSICAL_MAXD;
22883                 min_vcm = 0;
22884                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22885                 for (vcm = 0; vcm < 4; vcm++) {
22886                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22887                                       poll_results[vcm][result_idx] :
22888                                       poll_miniq[vcm][result_idx / 2]) -
22889                                      (target_code * NPHY_RSSICAL_NPOLL));
22890                         if (curr_d < min_d) {
22891                                 min_d = curr_d;
22892                                 min_vcm = vcm;
22893                         }
22894                         if (poll_results[vcm][result_idx] < min_poll)
22895                                 min_poll = poll_results[vcm][result_idx];
22896                 }
22897                 vcm_final[result_idx] = min_vcm;
22898                 poll_results_min[result_idx] = min_poll;
22899         }
22900 
22901         if (rssi_type != NPHY_RSSI_SEL_W2)
22902                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22903 
22904         for (result_idx = 0; result_idx < 4; result_idx++) {
22905                 fine_digital_offset[result_idx] =
22906                         (target_code * NPHY_RSSICAL_NPOLL) -
22907                         poll_results[vcm_final[result_idx]][result_idx];
22908                 if (fine_digital_offset[result_idx] < 0) {
22909                         fine_digital_offset[result_idx] =
22910                                 abs(fine_digital_offset[result_idx]);
22911                         fine_digital_offset[result_idx] +=
22912                                 (NPHY_RSSICAL_NPOLL / 2);
22913                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22914                         fine_digital_offset[result_idx] =
22915                                 -fine_digital_offset[result_idx];
22916                 } else {
22917                         fine_digital_offset[result_idx] +=
22918                                 (NPHY_RSSICAL_NPOLL / 2);
22919                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22920                 }
22921 
22922                 if (poll_results_min[result_idx] ==
22923                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22924                         fine_digital_offset[result_idx] =
22925                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22926 
22927                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22928                                                (s8)
22929                                                fine_digital_offset[result_idx],
22930                                                (result_idx / 2 ==
22931                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
22932                                                RADIO_MIMO_CORESEL_CORE2,
22933                                                (result_idx % 2 ==
22934                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22935                                                rssi_type);
22936         }
22937 
22938         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22939         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22940         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22941                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22942                                      NPHY_RSSI_SEL_NB);
22943         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22944                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22945                                      NPHY_RSSI_SEL_W1);
22946         else /* RADIO_2055_WBRSSI_G2_SEL */
22947                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22948                                      NPHY_RSSI_SEL_W2);
22949         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22950                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22951                                      NPHY_RSSI_SEL_NB);
22952         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22953                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22954                                      NPHY_RSSI_SEL_W1);
22955         else /* RADIO_2055_WBRSSI_G1_SEL */
22956                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22957                                      NPHY_RSSI_SEL_W2);
22958         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22959 
22960         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22961         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22962         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22963         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22964 
22965         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22966         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22967 
22968         wlc_phy_resetcca_nphy(pi);
22969 }
22970 
22971 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22972 {
22973         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22974                 wlc_phy_rssi_cal_nphy_rev3(pi);
22975         } else {
22976                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22977                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22978                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22979         }
22980 }
22981 
22982 int
22983 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22984 {
22985         s16 rxpwr, rxpwr0, rxpwr1;
22986         s16 phyRx0_l, phyRx2_l;
22987 
22988         rxpwr = 0;
22989         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22990         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22991 
22992         if (rxpwr0 > 127)
22993                 rxpwr0 -= 256;
22994         if (rxpwr1 > 127)
22995                 rxpwr1 -= 256;
22996 
22997         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
22998         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22999         if (phyRx2_l > 127)
23000                 phyRx2_l -= 256;
23001 
23002         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23003                 rxpwr0 = rxpwr1;
23004                 rxpwr1 = phyRx2_l;
23005         }
23006 
23007         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23008                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23009         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23010                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23011         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23012                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23013 
23014         return rxpwr;
23015 }
23016 
23017 static void
23018 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23019                              u16 num_samps)
23020 {
23021         u16 t;
23022         u32 *data_buf = NULL;
23023 
23024         data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23025         if (data_buf == NULL)
23026                 return;
23027 
23028         if (pi->phyhang_avoid)
23029                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23030 
23031         for (t = 0; t < num_samps; t++)
23032                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23033                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23034         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23035                                  data_buf);
23036 
23037         kfree(data_buf);
23038 
23039         if (pi->phyhang_avoid)
23040                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23041 }
23042 
23043 static u16
23044 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23045                               u8 dac_test_mode)
23046 {
23047         u8 phy_bw, is_phybw40;
23048         u16 num_samps, t, spur;
23049         s32 theta = 0, rot = 0;
23050         u32 tbl_len;
23051         struct cordic_iq *tone_buf = NULL;
23052 
23053         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23054         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23055         tbl_len = (phy_bw << 3);
23056 
23057         if (dac_test_mode == 1) {
23058                 spur = read_phy_reg(pi, 0x01);
23059                 spur = (spur >> 15) & 1;
23060                 phy_bw = (spur == 1) ? 82 : 80;
23061                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23062 
23063                 tbl_len = (phy_bw << 1);
23064         }
23065 
23066         tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23067                                  GFP_ATOMIC);
23068         if (tone_buf == NULL)
23069                 return 0;
23070 
23071         num_samps = (u16) tbl_len;
23072         rot = ((f_kHz * 36) / phy_bw) / 100;
23073         theta = 0;
23074 
23075         for (t = 0; t < num_samps; t++) {
23076 
23077                 tone_buf[t] = cordic_calc_iq(theta);
23078 
23079                 theta += rot;
23080 
23081                 tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23082                 tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23083         }
23084 
23085         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23086 
23087         kfree(tone_buf);
23088 
23089         return num_samps;
23090 }
23091 
23092 static void
23093 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23094                         u16 wait, u8 iqmode, u8 dac_test_mode,
23095                         bool modify_bbmult)
23096 {
23097         u16 bb_mult;
23098         u8 phy_bw, sample_cmd;
23099         u16 orig_RfseqCoreActv;
23100         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23101             lpf_bw_ctl_miscreg4;
23102 
23103         if (pi->phyhang_avoid)
23104                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23105 
23106         phy_bw = 20;
23107         if (CHSPEC_IS40(pi->radio_chanspec))
23108                 phy_bw = 40;
23109 
23110         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23111 
23112                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23113                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23114                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23115                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23116                                               (0x7 << 8);
23117                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23118                                               (0x7 << 8);
23119                 } else {
23120                         wlc_phy_rfctrl_override_nphy_rev7(
23121                                 pi,
23122                                 (0x1 << 7),
23123                                 wlc_phy_read_lpf_bw_ctl_nphy
23124                                         (pi,
23125                                         0), 0, 0,
23126                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23127 
23128                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23129 
23130                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23131                                               (0x7 << 8);
23132                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23133                                               (0x7 << 8);
23134                 }
23135         }
23136 
23137         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23138 
23139                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23140                                         &bb_mult);
23141                 pi->nphy_bb_mult_save =
23142                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23143         }
23144 
23145         if (modify_bbmult) {
23146                 bb_mult = (phy_bw == 20) ? 100 : 71;
23147                 bb_mult = (bb_mult << 8) + bb_mult;
23148                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23149                                          &bb_mult);
23150         }
23151 
23152         if (pi->phyhang_avoid)
23153                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23154 
23155         write_phy_reg(pi, 0xc6, num_samps - 1);
23156 
23157         if (loops != 0xffff)
23158                 write_phy_reg(pi, 0xc4, loops - 1);
23159         else
23160                 write_phy_reg(pi, 0xc4, loops);
23161 
23162         write_phy_reg(pi, 0xc5, wait);
23163 
23164         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23165         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23166         if (iqmode) {
23167 
23168                 and_phy_reg(pi, 0xc2, 0x7FFF);
23169 
23170                 or_phy_reg(pi, 0xc2, 0x8000);
23171         } else {
23172 
23173                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23174                 write_phy_reg(pi, 0xc3, sample_cmd);
23175         }
23176 
23177         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23178 
23179         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23180 }
23181 
23182 int
23183 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23184                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23185 {
23186         u16 num_samps;
23187         u16 loops = 0xffff;
23188         u16 wait = 0;
23189 
23190         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23191                                                   dac_test_mode);
23192         if (num_samps == 0)
23193                 return -EBADE;
23194 
23195         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23196                                 dac_test_mode, modify_bbmult);
23197 
23198         return 0;
23199 }
23200 
23201 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23202 {
23203         u16 playback_status;
23204         u16 bb_mult;
23205 
23206         if (pi->phyhang_avoid)
23207                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23208 
23209         playback_status = read_phy_reg(pi, 0xc7);
23210         if (playback_status & 0x1)
23211                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23212         else if (playback_status & 0x2)
23213                 and_phy_reg(pi, 0xc2,
23214                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23215 
23216         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23217 
23218         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23219 
23220                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23221                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23222                                          &bb_mult);
23223 
23224                 pi->nphy_bb_mult_save = 0;
23225         }
23226 
23227         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23228                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23229                         wlc_phy_rfctrl_override_nphy_rev7(
23230                                 pi,
23231                                 (0x1 << 7),
23232                                 0, 0, 1,
23233                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23234                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23235                 }
23236         }
23237 
23238         if (pi->phyhang_avoid)
23239                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23240 }
23241 
23242 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23243 {
23244         u32 *tx_pwrctrl_tbl = NULL;
23245         uint phyrev = pi->pubpi.phy_rev;
23246 
23247         if (PHY_IPA(pi)) {
23248                 tx_pwrctrl_tbl =
23249                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23250         } else {
23251                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23252                         if (NREV_IS(phyrev, 3))
23253                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23254                         else if (NREV_IS(phyrev, 4))
23255                                 tx_pwrctrl_tbl =
23256                                         (pi->srom_fem5g.extpagain == 3) ?
23257                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23258                                         nphy_tpc_5GHz_txgain_rev4;
23259                         else
23260                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23261                 } else {
23262                         if (NREV_GE(phyrev, 7)) {
23263                                 if (pi->pubpi.radiorev == 3)
23264                                         tx_pwrctrl_tbl =
23265                                                 nphy_tpc_txgain_epa_2057rev3;
23266                                 else if (pi->pubpi.radiorev == 5)
23267                                         tx_pwrctrl_tbl =
23268                                                 nphy_tpc_txgain_epa_2057rev5;
23269                         } else {
23270                                 if (NREV_GE(phyrev, 5) &&
23271                                    (pi->srom_fem2g.extpagain == 3))
23272                                         tx_pwrctrl_tbl =
23273                                                 nphy_tpc_txgain_HiPwrEPA;
23274                                 else
23275                                         tx_pwrctrl_tbl =
23276                                                 nphy_tpc_txgain_rev3;
23277                         }
23278                 }
23279         }
23280         return tx_pwrctrl_tbl;
23281 }
23282 
23283 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23284 {
23285         u16 base_idx[2], curr_gain[2];
23286         u8 core_no;
23287         struct nphy_txgains target_gain;
23288         u32 *tx_pwrctrl_tbl = NULL;
23289 
23290         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23291                 if (pi->phyhang_avoid)
23292                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23293 
23294                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23295                                         curr_gain);
23296 
23297                 if (pi->phyhang_avoid)
23298                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23299 
23300                 for (core_no = 0; core_no < 2; core_no++) {
23301                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23302                                 target_gain.ipa[core_no] =
23303                                         curr_gain[core_no] & 0x0007;
23304                                 target_gain.pad[core_no] =
23305                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23306                                 target_gain.pga[core_no] =
23307                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23308                                 target_gain.txgm[core_no] =
23309                                         ((curr_gain[core_no] & 0x7000) >> 12);
23310                                 target_gain.txlpf[core_no] =
23311                                         ((curr_gain[core_no] & 0x8000) >> 15);
23312                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23313                                 target_gain.ipa[core_no] =
23314                                         curr_gain[core_no] & 0x000F;
23315                                 target_gain.pad[core_no] =
23316                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23317                                 target_gain.pga[core_no] =
23318                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23319                                 target_gain.txgm[core_no] =
23320                                         ((curr_gain[core_no] & 0x7000) >> 12);
23321                         } else {
23322                                 target_gain.ipa[core_no] =
23323                                         curr_gain[core_no] & 0x0003;
23324                                 target_gain.pad[core_no] =
23325                                         ((curr_gain[core_no] & 0x000C) >> 2);
23326                                 target_gain.pga[core_no] =
23327                                         ((curr_gain[core_no] & 0x0070) >> 4);
23328                                 target_gain.txgm[core_no] =
23329                                         ((curr_gain[core_no] & 0x0380) >> 7);
23330                         }
23331                 }
23332         } else {
23333                 uint phyrev = pi->pubpi.phy_rev;
23334 
23335                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23336                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23337                 for (core_no = 0; core_no < 2; core_no++) {
23338                         if (NREV_GE(phyrev, 3)) {
23339                                 tx_pwrctrl_tbl =
23340                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23341                                 if (NREV_GE(phyrev, 7)) {
23342                                         target_gain.ipa[core_no] =
23343                                                 (tx_pwrctrl_tbl
23344                                                  [base_idx[core_no]]
23345                                                  >> 16) & 0x7;
23346                                         target_gain.pad[core_no] =
23347                                                 (tx_pwrctrl_tbl
23348                                                  [base_idx[core_no]]
23349                                                  >> 19) & 0x1f;
23350                                         target_gain.pga[core_no] =
23351                                                 (tx_pwrctrl_tbl
23352                                                  [base_idx[core_no]]
23353                                                  >> 24) & 0xf;
23354                                         target_gain.txgm[core_no] =
23355                                                 (tx_pwrctrl_tbl
23356                                                  [base_idx[core_no]]
23357                                                  >> 28) & 0x7;
23358                                         target_gain.txlpf[core_no] =
23359                                                 (tx_pwrctrl_tbl
23360                                                  [base_idx[core_no]]
23361                                                  >> 31) & 0x1;
23362                                 } else {
23363                                         target_gain.ipa[core_no] =
23364                                                 (tx_pwrctrl_tbl
23365                                                  [base_idx[core_no]]
23366                                                  >> 16) & 0xf;
23367                                         target_gain.pad[core_no] =
23368                                                 (tx_pwrctrl_tbl
23369                                                  [base_idx[core_no]]
23370                                                  >> 20) & 0xf;
23371                                         target_gain.pga[core_no] =
23372                                                 (tx_pwrctrl_tbl
23373                                                  [base_idx[core_no]]
23374                                                  >> 24) & 0xf;
23375                                         target_gain.txgm[core_no] =
23376                                                 (tx_pwrctrl_tbl
23377                                                 [base_idx[core_no]]
23378                                                  >> 28) & 0x7;
23379                                 }
23380                         } else {
23381                                 target_gain.ipa[core_no] =
23382                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23383                                          16) & 0x3;
23384                                 target_gain.pad[core_no] =
23385                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23386                                          18) & 0x3;
23387                                 target_gain.pga[core_no] =
23388                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23389                                          20) & 0x7;
23390                                 target_gain.txgm[core_no] =
23391                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23392                                          23) & 0x7;
23393                         }
23394                 }
23395         }
23396 
23397         return target_gain;
23398 }
23399 
23400 static void
23401 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23402                               struct nphy_txgains target_gain,
23403                               struct nphy_iqcal_params *params)
23404 {
23405         u8 k;
23406         int idx;
23407         u16 gain_index;
23408         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23409 
23410         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23411                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23412                         params->txlpf = target_gain.txlpf[core_no];
23413 
23414                 params->txgm = target_gain.txgm[core_no];
23415                 params->pga = target_gain.pga[core_no];
23416                 params->pad = target_gain.pad[core_no];
23417                 params->ipa = target_gain.ipa[core_no];
23418                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23419                         params->cal_gain =
23420                                 ((params->txlpf << 15) | (params->txgm << 12) |
23421                                  (params->pga << 8) |
23422                                  (params->pad << 3) | (params->ipa));
23423                 else
23424                         params->cal_gain =
23425                                 ((params->txgm << 12) | (params->pga << 8) |
23426                                  (params->pad << 4) | (params->ipa));
23427 
23428                 params->ncorr[0] = 0x79;
23429                 params->ncorr[1] = 0x79;
23430                 params->ncorr[2] = 0x79;
23431                 params->ncorr[3] = 0x79;
23432                 params->ncorr[4] = 0x79;
23433         } else {
23434 
23435                 gain_index = ((target_gain.pad[core_no] << 0) |
23436                               (target_gain.pga[core_no] << 4) |
23437                               (target_gain.txgm[core_no] << 8));
23438 
23439                 idx = -1;
23440                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23441                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23442                             gain_index) {
23443                                 idx = k;
23444                                 break;
23445                         }
23446                 }
23447 
23448                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23449                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23450                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23451                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23452                                     (params->pad << 2));
23453                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23454                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23455                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23456                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23457         }
23458 }
23459 
23460 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23461 {
23462         u16 jtag_core, core;
23463 
23464         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23465 
23466                 for (core = 0; core <= 1; core++) {
23467 
23468                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23469                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23470                                                 TX_SSI_MASTER);
23471 
23472                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23473                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23474                                                 IQCAL_VCM_HG);
23475 
23476                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23477                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23478                                                 IQCAL_IDAC);
23479 
23480                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23481                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23482                                                 TSSI_VCM);
23483 
23484                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23485 
23486                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23487                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23488                                                 TX_SSI_MUX);
23489 
23490                         if (pi->pubpi.radiorev != 5)
23491                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23492                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23493                                                         core,
23494                                                         TSSIA);
23495 
23496                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23497                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23498 
23499                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23500                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23501                                                 TSSI_MISC1);
23502 
23503                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23504                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23505                                                  TX_SSI_MASTER, 0x0a);
23506                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23507                                                  IQCAL_VCM_HG, 0x43);
23508                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23509                                                  IQCAL_IDAC, 0x55);
23510                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23511                                                  TSSI_VCM, 0x00);
23512                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23513                                                  TSSIG, 0x00);
23514                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23515                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23516                                                          core, TX_SSI_MUX, 0x4);
23517                                         if (!(pi->
23518                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23519                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23520                                                                  TX, core,
23521                                                                  TSSIA, 0x31);
23522                                         else
23523                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23524                                                                  TX, core,
23525                                                                  TSSIA, 0x21);
23526                                 }
23527                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23528                                                  TSSI_MISC1, 0x00);
23529                         } else {
23530                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23531                                                  TX_SSI_MASTER, 0x06);
23532                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23533                                                  IQCAL_VCM_HG, 0x43);
23534                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23535                                                  IQCAL_IDAC, 0x55);
23536                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23537                                                  TSSI_VCM, 0x00);
23538 
23539                                 if (pi->pubpi.radiorev != 5)
23540                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23541                                                          core, TSSIA, 0x00);
23542                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23543                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23544                                                          core, TX_SSI_MUX,
23545                                                          0x06);
23546                                         if (!(pi->
23547                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23548                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23549                                                                  TX, core,
23550                                                                  TSSIG, 0x31);
23551                                         else
23552                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23553                                                                  TX, core,
23554                                                                  TSSIG, 0x21);
23555                                 }
23556                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23557                                                  TSSI_MISC1, 0x00);
23558                         }
23559                 }
23560         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23561 
23562                 for (core = 0; core <= 1; core++) {
23563                         jtag_core =
23564                                 (core ==
23565                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23566 
23567                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23568                                 read_radio_reg(pi,
23569                                                RADIO_2056_TX_TX_SSI_MASTER |
23570                                                jtag_core);
23571 
23572                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23573                                 read_radio_reg(pi,
23574                                                RADIO_2056_TX_IQCAL_VCM_HG |
23575                                                jtag_core);
23576 
23577                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23578                                 read_radio_reg(pi,
23579                                                RADIO_2056_TX_IQCAL_IDAC |
23580                                                jtag_core);
23581 
23582                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23583                                 read_radio_reg(
23584                                         pi,
23585                                         RADIO_2056_TX_TSSI_VCM |
23586                                         jtag_core);
23587 
23588                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23589                                 read_radio_reg(pi,
23590                                                RADIO_2056_TX_TX_AMP_DET |
23591                                                jtag_core);
23592 
23593                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23594                                 read_radio_reg(pi,
23595                                                RADIO_2056_TX_TX_SSI_MUX |
23596                                                jtag_core);
23597 
23598                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23599                                 read_radio_reg(pi,
23600                                                RADIO_2056_TX_TSSIA | jtag_core);
23601 
23602                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23603                                 read_radio_reg(pi,
23604                                                RADIO_2056_TX_TSSIG | jtag_core);
23605 
23606                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23607                                 read_radio_reg(pi,
23608                                                RADIO_2056_TX_TSSI_MISC1 |
23609                                                jtag_core);
23610 
23611                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23612                                 read_radio_reg(pi,
23613                                                RADIO_2056_TX_TSSI_MISC2 |
23614                                                jtag_core);
23615 
23616                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23617                                 read_radio_reg(pi,
23618                                                RADIO_2056_TX_TSSI_MISC3 |
23619                                                jtag_core);
23620 
23621                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23622                                 write_radio_reg(pi,
23623                                                 RADIO_2056_TX_TX_SSI_MASTER |
23624                                                 jtag_core, 0x0a);
23625                                 write_radio_reg(pi,
23626                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23627                                                 jtag_core, 0x40);
23628                                 write_radio_reg(pi,
23629                                                 RADIO_2056_TX_IQCAL_IDAC |
23630                                                 jtag_core, 0x55);
23631                                 write_radio_reg(pi,
23632                                                 RADIO_2056_TX_TSSI_VCM |
23633                                                 jtag_core, 0x00);
23634                                 write_radio_reg(pi,
23635                                                 RADIO_2056_TX_TX_AMP_DET |
23636                                                 jtag_core, 0x00);
23637 
23638                                 if (PHY_IPA(pi)) {
23639                                         write_radio_reg(
23640                                                 pi,
23641                                                 RADIO_2056_TX_TX_SSI_MUX
23642                                                 | jtag_core, 0x4);
23643                                         write_radio_reg(pi,
23644                                                         RADIO_2056_TX_TSSIA |
23645                                                         jtag_core, 0x1);
23646                                 } else {
23647                                         write_radio_reg(
23648                                                 pi,
23649                                                 RADIO_2056_TX_TX_SSI_MUX
23650                                                 | jtag_core, 0x00);
23651                                         write_radio_reg(pi,
23652                                                         RADIO_2056_TX_TSSIA |
23653                                                         jtag_core, 0x2f);
23654                                 }
23655                                 write_radio_reg(pi,
23656                                                 RADIO_2056_TX_TSSIG | jtag_core,
23657                                                 0x00);
23658                                 write_radio_reg(pi,
23659                                                 RADIO_2056_TX_TSSI_MISC1 |
23660                                                 jtag_core, 0x00);
23661 
23662                                 write_radio_reg(pi,
23663                                                 RADIO_2056_TX_TSSI_MISC2 |
23664                                                 jtag_core, 0x00);
23665                                 write_radio_reg(pi,
23666                                                 RADIO_2056_TX_TSSI_MISC3 |
23667                                                 jtag_core, 0x00);
23668                         } else {
23669                                 write_radio_reg(pi,
23670                                                 RADIO_2056_TX_TX_SSI_MASTER |
23671                                                 jtag_core, 0x06);
23672                                 write_radio_reg(pi,
23673                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23674                                                 jtag_core, 0x40);
23675                                 write_radio_reg(pi,
23676                                                 RADIO_2056_TX_IQCAL_IDAC |
23677                                                 jtag_core, 0x55);
23678                                 write_radio_reg(pi,
23679                                                 RADIO_2056_TX_TSSI_VCM |
23680                                                 jtag_core, 0x00);
23681                                 write_radio_reg(pi,
23682                                                 RADIO_2056_TX_TX_AMP_DET |
23683                                                 jtag_core, 0x00);
23684                                 write_radio_reg(pi,
23685                                                 RADIO_2056_TX_TSSIA | jtag_core,
23686                                                 0x00);
23687 
23688                                 if (PHY_IPA(pi)) {
23689 
23690                                         write_radio_reg(
23691                                                 pi,
23692                                                 RADIO_2056_TX_TX_SSI_MUX
23693                                                 | jtag_core, 0x06);
23694                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23695                                                 write_radio_reg(
23696                                                         pi,
23697                                                         RADIO_2056_TX_TSSIG
23698                                                         | jtag_core,
23699                                                         0x11);
23700                                         else
23701                                                 write_radio_reg(
23702                                                         pi,
23703                                                         RADIO_2056_TX_TSSIG
23704                                                         | jtag_core,
23705                                                         0x1);
23706                                 } else {
23707                                         write_radio_reg(
23708                                                 pi,
23709                                                 RADIO_2056_TX_TX_SSI_MUX
23710                                                 | jtag_core, 0x00);
23711                                         write_radio_reg(pi,
23712                                                         RADIO_2056_TX_TSSIG |
23713                                                         jtag_core, 0x20);
23714                                 }
23715 
23716                                 write_radio_reg(pi,
23717                                                 RADIO_2056_TX_TSSI_MISC1 |
23718                                                 jtag_core, 0x00);
23719                                 write_radio_reg(pi,
23720                                                 RADIO_2056_TX_TSSI_MISC2 |
23721                                                 jtag_core, 0x00);
23722                                 write_radio_reg(pi,
23723                                                 RADIO_2056_TX_TSSI_MISC3 |
23724                                                 jtag_core, 0x00);
23725                         }
23726                 }
23727         } else {
23728 
23729                 pi->tx_rx_cal_radio_saveregs[0] =
23730                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23731                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23732                 pi->tx_rx_cal_radio_saveregs[1] =
23733                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23734                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23735 
23736                 pi->tx_rx_cal_radio_saveregs[2] =
23737                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23738                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23739                 pi->tx_rx_cal_radio_saveregs[3] =
23740                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23741                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23742 
23743                 pi->tx_rx_cal_radio_saveregs[4] =
23744                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23745                 pi->tx_rx_cal_radio_saveregs[5] =
23746                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23747 
23748                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23749                     0) {
23750 
23751                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23752                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23753                 } else {
23754 
23755                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23756                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23757                 }
23758 
23759                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23760 
23761                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23762                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23763                 } else {
23764 
23765                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23766                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23767                 }
23768         }
23769 }
23770 
23771 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23772 {
23773         u16 jtag_core, core;
23774 
23775         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23776                 for (core = 0; core <= 1; core++) {
23777 
23778                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23779                                          TX_SSI_MASTER,
23780                                          pi->
23781                                          tx_rx_cal_radio_saveregs[(core * 11) +
23782                                                                   0]);
23783 
23784                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23785                                          pi->
23786                                          tx_rx_cal_radio_saveregs[(core * 11) +
23787                                                                   1]);
23788 
23789                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23790                                          pi->
23791                                          tx_rx_cal_radio_saveregs[(core * 11) +
23792                                                                   2]);
23793 
23794                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23795                                          pi->
23796                                          tx_rx_cal_radio_saveregs[(core * 11) +
23797                                                                   3]);
23798 
23799                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23800                                          pi->
23801                                          tx_rx_cal_radio_saveregs[(core * 11) +
23802                                                                   5]);
23803 
23804                         if (pi->pubpi.radiorev != 5)
23805                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23806                                                  TSSIA,
23807                                                  pi->tx_rx_cal_radio_saveregs
23808                                                              [(core * 11) + 6]);
23809 
23810                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23811                                          pi->
23812                                          tx_rx_cal_radio_saveregs[(core * 11) +
23813                                                                   7]);
23814 
23815                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23816                                          pi->
23817                                          tx_rx_cal_radio_saveregs[(core * 11) +
23818                                                                   8]);
23819                 }
23820         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23821                 for (core = 0; core <= 1; core++) {
23822                         jtag_core = (core == PHY_CORE_0) ?
23823                                      RADIO_2056_TX0 : RADIO_2056_TX1;
23824 
23825                         write_radio_reg(pi,
23826                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23827                                         pi->
23828                                         tx_rx_cal_radio_saveregs[(core * 11) +
23829                                                                  0]);
23830 
23831                         write_radio_reg(pi,
23832                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23833                                         pi->
23834                                         tx_rx_cal_radio_saveregs[(core * 11) +
23835                                                                  1]);
23836 
23837                         write_radio_reg(pi,
23838                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23839                                         pi->
23840                                         tx_rx_cal_radio_saveregs[(core * 11) +
23841                                                                  2]);
23842 
23843                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23844                                         pi->
23845                                         tx_rx_cal_radio_saveregs[(core * 11) +
23846                                                                  3]);
23847 
23848                         write_radio_reg(pi,
23849                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23850                                         pi->
23851                                         tx_rx_cal_radio_saveregs[(core * 11) +
23852                                                                  4]);
23853 
23854                         write_radio_reg(pi,
23855                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23856                                         pi->
23857                                         tx_rx_cal_radio_saveregs[(core * 11) +
23858                                                                  5]);
23859 
23860                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23861                                         pi->
23862                                         tx_rx_cal_radio_saveregs[(core * 11) +
23863                                                                  6]);
23864 
23865                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23866                                         pi->
23867                                         tx_rx_cal_radio_saveregs[(core * 11) +
23868                                                                  7]);
23869 
23870                         write_radio_reg(pi,
23871                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23872                                         pi->
23873                                         tx_rx_cal_radio_saveregs[(core * 11) +
23874                                                                  8]);
23875 
23876                         write_radio_reg(pi,
23877                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23878                                         pi->
23879                                         tx_rx_cal_radio_saveregs[(core * 11) +
23880                                                                  9]);
23881 
23882                         write_radio_reg(pi,
23883                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23884                                         pi->
23885                                         tx_rx_cal_radio_saveregs[(core * 11) +
23886                                                                  10]);
23887                 }
23888         } else {
23889 
23890                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23891                                 pi->tx_rx_cal_radio_saveregs[0]);
23892                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23893                                 pi->tx_rx_cal_radio_saveregs[1]);
23894                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23895                                 pi->tx_rx_cal_radio_saveregs[2]);
23896                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23897                                 pi->tx_rx_cal_radio_saveregs[3]);
23898                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23899                                 pi->tx_rx_cal_radio_saveregs[4]);
23900                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23901                                 pi->tx_rx_cal_radio_saveregs[5]);
23902         }
23903 }
23904 
23905 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23906 {
23907         u16 val, mask;
23908 
23909         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23910                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23911                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23912 
23913                 mask = ((0x3 << 8) | (0x3 << 10));
23914                 val = (0x2 << 8);
23915                 val |= (0x2 << 10);
23916                 mod_phy_reg(pi, 0xa6, mask, val);
23917                 mod_phy_reg(pi, 0xa7, mask, val);
23918 
23919                 val = read_phy_reg(pi, 0x8f);
23920                 pi->tx_rx_cal_phy_saveregs[2] = val;
23921                 val |= ((0x1 << 9) | (0x1 << 10));
23922                 write_phy_reg(pi, 0x8f, val);
23923 
23924                 val = read_phy_reg(pi, 0xa5);
23925                 pi->tx_rx_cal_phy_saveregs[3] = val;
23926                 val |= ((0x1 << 9) | (0x1 << 10));
23927                 write_phy_reg(pi, 0xa5, val);
23928 
23929                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23930                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23931 
23932                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23933                                         &val);
23934                 pi->tx_rx_cal_phy_saveregs[5] = val;
23935                 val = 0;
23936                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23937                                          &val);
23938 
23939                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23940                                         &val);
23941                 pi->tx_rx_cal_phy_saveregs[6] = val;
23942                 val = 0;
23943                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23944                                          &val);
23945 
23946                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23947                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23948 
23949                 if (!(pi->use_int_tx_iqlo_cal_nphy))
23950                         wlc_phy_rfctrlintc_override_nphy(
23951                                 pi,
23952                                 NPHY_RfctrlIntc_override_PA,
23953                                 1,
23954                                 RADIO_MIMO_CORESEL_CORE1
23955                                 |
23956                                 RADIO_MIMO_CORESEL_CORE2);
23957                 else
23958                         wlc_phy_rfctrlintc_override_nphy(
23959                                 pi,
23960                                 NPHY_RfctrlIntc_override_PA,
23961                                 0,
23962                                 RADIO_MIMO_CORESEL_CORE1
23963                                 |
23964                                 RADIO_MIMO_CORESEL_CORE2);
23965 
23966                 wlc_phy_rfctrlintc_override_nphy(pi,
23967                                                  NPHY_RfctrlIntc_override_TRSW,
23968                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23969                 wlc_phy_rfctrlintc_override_nphy(pi,
23970                                                  NPHY_RfctrlIntc_override_TRSW,
23971                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23972 
23973                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23974                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23975                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23976                             0x29b, (0x1 << 0), (0) << 0);
23977 
23978                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23979                             0x29b, (0x1 << 0), (0) << 0);
23980 
23981                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23982                     || NREV_GE(pi->pubpi.phy_rev, 8))
23983                         wlc_phy_rfctrl_override_nphy_rev7(
23984                                 pi, (0x1 << 7),
23985                                 wlc_phy_read_lpf_bw_ctl_nphy
23986                                         (pi,
23987                                         0), 0, 0,
23988                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23989 
23990                 if (pi->use_int_tx_iqlo_cal_nphy
23991                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23992 
23993                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23994 
23995                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23996                                               1 << 4);
23997 
23998                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23999                                         mod_radio_reg(
24000                                                 pi,
24001                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24002                                                 1, 0);
24003                                         mod_radio_reg(
24004                                                 pi,
24005                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24006                                                 1, 0);
24007                                 } else {
24008                                         mod_radio_reg(
24009                                              pi,
24010                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24011                                              1, 0);
24012                                         mod_radio_reg(
24013                                              pi,
24014                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24015                                              1, 0);
24016                                 }
24017                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24018                                 wlc_phy_rfctrl_override_nphy_rev7(
24019                                         pi,
24020                                         (0x1 << 3), 0,
24021                                         0x3, 0,
24022                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24023                         }
24024                 }
24025         } else {
24026                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24027                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24028 
24029                 mask = ((0x3 << 12) | (0x3 << 14));
24030                 val = (0x2 << 12);
24031                 val |= (0x2 << 14);
24032                 mod_phy_reg(pi, 0xa6, mask, val);
24033                 mod_phy_reg(pi, 0xa7, mask, val);
24034 
24035                 val = read_phy_reg(pi, 0xa5);
24036                 pi->tx_rx_cal_phy_saveregs[2] = val;
24037                 val |= ((0x1 << 12) | (0x1 << 13));
24038                 write_phy_reg(pi, 0xa5, val);
24039 
24040                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24041                                         &val);
24042                 pi->tx_rx_cal_phy_saveregs[3] = val;
24043                 val |= 0x2000;
24044                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24045                                          &val);
24046 
24047                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24048                                         &val);
24049                 pi->tx_rx_cal_phy_saveregs[4] = val;
24050                 val |= 0x2000;
24051                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24052                                          &val);
24053 
24054                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24055                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24056                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24057                 write_phy_reg(pi, 0x91, val);
24058                 write_phy_reg(pi, 0x92, val);
24059         }
24060 }
24061 
24062 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24063 {
24064         u16 mask;
24065 
24066         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24067                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24068                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24069                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24070                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24071                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24072 
24073                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24074                                          &pi->tx_rx_cal_phy_saveregs[5]);
24075                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24076                                          &pi->tx_rx_cal_phy_saveregs[6]);
24077 
24078                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24079                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24080 
24081                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24082                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24083 
24084                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24085                     || NREV_GE(pi->pubpi.phy_rev, 8))
24086                         wlc_phy_rfctrl_override_nphy_rev7(
24087                                 pi, (0x1 << 7), 0, 0,
24088                                 1,
24089                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24090 
24091                 wlc_phy_resetcca_nphy(pi);
24092 
24093                 if (pi->use_int_tx_iqlo_cal_nphy
24094                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24095 
24096                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24097                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24098                                         mod_radio_reg(
24099                                                 pi,
24100                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24101                                                 1, 1);
24102                                         mod_radio_reg(
24103                                                 pi,
24104                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24105                                                 1, 1);
24106                                 } else {
24107                                         mod_radio_reg(
24108                                              pi,
24109                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24110                                              1, 1);
24111                                         mod_radio_reg(
24112                                              pi,
24113                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24114                                              1, 1);
24115                                 }
24116 
24117                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24118                                               0);
24119                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24120                                 wlc_phy_rfctrl_override_nphy_rev7(
24121                                         pi,
24122                                         (0x1 << 3), 0,
24123                                         0x3, 1,
24124                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24125                         }
24126                 }
24127         } else {
24128                 mask = ((0x3 << 12) | (0x3 << 14));
24129                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24130                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24131                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24132 
24133                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24134                                          &pi->tx_rx_cal_phy_saveregs[3]);
24135 
24136                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24137                                          &pi->tx_rx_cal_phy_saveregs[4]);
24138 
24139                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24140                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24141         }
24142 }
24143 
24144 void
24145 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24146 {
24147         u16 tssi_reg;
24148         s32 temp, pwrindex[2];
24149         s32 idle_tssi[2];
24150         s32 rssi_buf[4];
24151         s32 tssival[2];
24152         u8 tssi_type;
24153 
24154         tssi_reg = read_phy_reg(pi, 0x1e9);
24155 
24156         temp = (s32) (tssi_reg & 0x3f);
24157         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24158 
24159         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24160         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24161 
24162         tssi_type =
24163                 CHSPEC_IS5G(pi->radio_chanspec) ?
24164                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24165 
24166         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24167 
24168         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24169         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24170 
24171         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24172         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24173 
24174         if (pwrindex[0] < 0)
24175                 pwrindex[0] = 0;
24176         else if (pwrindex[0] > 63)
24177                 pwrindex[0] = 63;
24178 
24179         if (pwrindex[1] < 0)
24180                 pwrindex[1] = 0;
24181         else if (pwrindex[1] > 63)
24182                 pwrindex[1] = 63;
24183 
24184         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24185                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24186         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24187                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24188 }
24189 
24190 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24191 {
24192         int index;
24193         u32 bbmult_scale;
24194         u16 bbmult;
24195         u16 tblentry;
24196 
24197         static const struct nphy_txiqcal_ladder ladder_lo[] = {
24198                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24199                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24200                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24201         };
24202 
24203         static const struct nphy_txiqcal_ladder ladder_iq[] = {
24204                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24205                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24206                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24207         };
24208 
24209         bbmult = (core == PHY_CORE_0) ?
24210                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24211                  (pi->nphy_txcal_bbmult & 0xff);
24212 
24213         for (index = 0; index < 18; index++) {
24214                 bbmult_scale = ladder_lo[index].percent * bbmult;
24215                 bbmult_scale /= 100;
24216 
24217                 tblentry =
24218                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24219                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24220                                          &tblentry);
24221 
24222                 bbmult_scale = ladder_iq[index].percent * bbmult;
24223                 bbmult_scale /= 100;
24224 
24225                 tblentry =
24226                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24227                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24228                                          16, &tblentry);
24229         }
24230 }
24231 
24232 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24233 {
24234         u16 tmp;
24235         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24236 
24237         tmp = (tmp & (0x7f << 8)) >> 8;
24238         return (u8) tmp;
24239 }
24240 
24241 static void
24242 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24243 {
24244         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24245 
24246         if (NREV_GT(pi->pubpi.phy_rev, 1))
24247                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24248 }
24249 
24250 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24251 {
24252         u16 m0m1;
24253 
24254         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24255 
24256         return m0m1;
24257 }
24258 
24259 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24260 {
24261         u16 m0m1 = (u16) ((m0 << 8) | m1);
24262 
24263         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24264         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24265 }
24266 
24267 static void
24268 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24269                             struct nphy_papd_restore_state *state, u8 core)
24270 {
24271         s32 tone_freq;
24272         u8 off_core;
24273         u16 mixgain = 0;
24274 
24275         off_core = core ^ 0x1;
24276         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24277 
24278                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24279                     || NREV_GE(pi->pubpi.phy_rev, 8))
24280                         wlc_phy_rfctrl_override_nphy_rev7(
24281                                 pi, (0x1 << 7),
24282                                 wlc_phy_read_lpf_bw_ctl_nphy
24283                                         (pi,
24284                                         0), 0, 0,
24285                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24286 
24287                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24288                         if (pi->pubpi.radiorev == 5)
24289                                 mixgain = (core == 0) ? 0x20 : 0x00;
24290                         else if ((pi->pubpi.radiorev == 7)
24291                                  || (pi->pubpi.radiorev == 8))
24292                                 mixgain = 0x00;
24293                         else if ((pi->pubpi.radiorev <= 4)
24294                                  || (pi->pubpi.radiorev == 6))
24295                                 mixgain = 0x00;
24296                 } else {
24297                         if ((pi->pubpi.radiorev == 4) ||
24298                             (pi->pubpi.radiorev == 6))
24299                                 mixgain = 0x50;
24300                         else if ((pi->pubpi.radiorev == 3)
24301                                  || (pi->pubpi.radiorev == 7)
24302                                  || (pi->pubpi.radiorev == 8))
24303                                 mixgain = 0x0;
24304                 }
24305 
24306                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24307                                                   mixgain, (1 << core), 0,
24308                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24309 
24310                 wlc_phy_rfctrl_override_1tomany_nphy(
24311                         pi,
24312                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24313                         1, (1 << core), 0);
24314                 wlc_phy_rfctrl_override_1tomany_nphy(
24315                         pi,
24316                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24317                         0, (1 << off_core), 0);
24318 
24319                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24320                                                   0, 0x3, 0,
24321                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24322                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24323                                                   (1 << core), 0,
24324                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24325                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24326                                                   (1 << core), 0,
24327                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24328                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24329                                                   (1 << core), 0,
24330                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24331                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24332                                                   (1 << core), 0,
24333                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24334                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24335                                                   (1 << core), 0,
24336                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24337                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24338                                                   (1 << core), 0,
24339                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24340                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24341                                                   (1 << core), 0,
24342                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24343 
24344                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24345                                                   0, (1 << core), 0,
24346                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24347                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24348                                                   (1 << core), 0,
24349                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24350 
24351                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24352                                                     0xa6 : 0xa7);
24353                 state->afeoverride[core] =
24354                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24355                 state->afectrl[off_core] =
24356                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24357                 state->afeoverride[off_core] =
24358                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24359 
24360                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24361                             (0x1 << 2), 0);
24362                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24363                                  0xa5), (0x1 << 2), (0x1 << 2));
24364 
24365                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24366                             (0x1 << 2), (0x1 << 2));
24367                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24368                                  0x8f), (0x1 << 2), (0x1 << 2));
24369 
24370                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24371                         state->pwrup[core] =
24372                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24373                                                 TXRXCOUPLE_2G_PWRUP);
24374                         state->atten[core] =
24375                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24376                                                 TXRXCOUPLE_2G_ATTEN);
24377                         state->pwrup[off_core] =
24378                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24379                                                 TXRXCOUPLE_2G_PWRUP);
24380                         state->atten[off_core] =
24381                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24382                                                 TXRXCOUPLE_2G_ATTEN);
24383 
24384                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24385                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24386 
24387                         if ((pi->pubpi.radiorev == 3) ||
24388                             (pi->pubpi.radiorev == 4) ||
24389                             (pi->pubpi.radiorev == 6))
24390                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24391                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24392                         else if (pi->pubpi.radiorev == 5)
24393                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24394                                                  TXRXCOUPLE_2G_ATTEN,
24395                                                  (core == 0) ? 0xf7 : 0xf2);
24396                         else if ((pi->pubpi.radiorev == 7)
24397                                  || (pi->pubpi.radiorev == 8))
24398                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24399                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24400 
24401                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24402                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24403                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24404                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24405                 } else {
24406                         state->pwrup[core] =
24407                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24408                                                 TXRXCOUPLE_5G_PWRUP);
24409                         state->atten[core] =
24410                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24411                                                 TXRXCOUPLE_5G_ATTEN);
24412                         state->pwrup[off_core] =
24413                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24414                                                 TXRXCOUPLE_5G_PWRUP);
24415                         state->atten[off_core] =
24416                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24417                                                 TXRXCOUPLE_5G_ATTEN);
24418 
24419                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24420                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24421 
24422                         if ((pi->pubpi.radiorev == 7)
24423                             || (pi->pubpi.radiorev == 8))
24424                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24425                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24426 
24427                         else
24428                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24429                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24430 
24431                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24432                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24433                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24434                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24435                 }
24436 
24437                 tone_freq = 4000;
24438 
24439                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24440 
24441                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24442                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24443 
24444                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24445                             0x2a4, (0x1 << 13), (1) << 13);
24446 
24447                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24448                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24449 
24450                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24451                             0x2a4, (0x1 << 13), (0) << 13);
24452 
24453         } else {
24454 
24455                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24456 
24457                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24458 
24459                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24460 
24461                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24462                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24463 
24464                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24465                                                     0xa6 : 0xa7);
24466                 state->afeoverride[core] =
24467                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24468 
24469                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24470                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24471                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24472                                  0xa5),
24473                             (0x1 << 0) |
24474                             (0x1 << 1) |
24475                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24476 
24477                 state->vga_master[core] =
24478                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24479                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24480                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24481                         state->fbmix[core] =
24482                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24483                                                 TXFBMIX_G);
24484                         state->intpa_master[core] =
24485                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24486                                                 INTPAG_MASTER);
24487 
24488                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24489                                          0x03);
24490                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24491                                          INTPAG_MASTER, 0x04);
24492                 } else {
24493                         state->fbmix[core] =
24494                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24495                                                 TXFBMIX_A);
24496                         state->intpa_master[core] =
24497                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24498                                                 INTPAA_MASTER);
24499 
24500                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24501                                          0x03);
24502                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24503                                          INTPAA_MASTER, 0x04);
24504 
24505                 }
24506 
24507                 tone_freq = 4000;
24508 
24509                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24510 
24511                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24512                             0x29b, (0x1 << 0), (1) << 0);
24513 
24514                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24515                             0x29b, (0x1 << 0), (0) << 0);
24516 
24517                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24518         }
24519 }
24520 
24521 static void
24522 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24523                               struct nphy_papd_restore_state *state)
24524 {
24525         u8 core;
24526 
24527         wlc_phy_stopplayback_nphy(pi);
24528 
24529         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24530 
24531                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24532 
24533                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24534                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24535                                                  TXRXCOUPLE_2G_PWRUP, 0);
24536                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24537                                                  TXRXCOUPLE_2G_ATTEN,
24538                                                  state->atten[core]);
24539                         } else {
24540                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24541                                                  TXRXCOUPLE_5G_PWRUP, 0);
24542                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24543                                                  TXRXCOUPLE_5G_ATTEN,
24544                                                  state->atten[core]);
24545                         }
24546                 }
24547 
24548                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24549                         wlc_phy_rfctrl_override_nphy_rev7(
24550                                 pi, (0x1 << 2),
24551                                 1, 0x3, 0,
24552                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24553                 else
24554                         wlc_phy_rfctrl_override_nphy_rev7(
24555                                 pi, (0x1 << 2),
24556                                 0, 0x3, 1,
24557                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24558 
24559                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24560                                                   0, 0x3, 1,
24561                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24562                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24563                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24564                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24565                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24566                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24567                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24569                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24570                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24571                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24572                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24573                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24574                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24575                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24576                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24577                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24578                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24579                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24580                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24581                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24582                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24583                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24584                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24585                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24586                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24587                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24588                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24589                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24590                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24591                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24592 
24593                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24594 
24595                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24596                                       0xa6 : 0xa7, state->afectrl[core]);
24597                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24598                                       0xa5, state->afeoverride[core]);
24599                 }
24600 
24601                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24602                                             (state->mm & 0xff));
24603 
24604                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24605                     || NREV_GE(pi->pubpi.phy_rev, 8))
24606                         wlc_phy_rfctrl_override_nphy_rev7(
24607                                 pi, (0x1 << 7), 0, 0,
24608                                 1,
24609                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24610         } else {
24611                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24612                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24613                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24614 
24615                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24616                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24617 
24618                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24619 
24620                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24621                                          state->vga_master[core]);
24622                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24623                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24624                                                  TXFBMIX_G, state->fbmix[core]);
24625                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24626                                                  INTPAG_MASTER,
24627                                                  state->intpa_master[core]);
24628                         } else {
24629                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24630                                                  TXFBMIX_A, state->fbmix[core]);
24631                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24632                                                  INTPAA_MASTER,
24633                                                  state->intpa_master[core]);
24634                         }
24635 
24636                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24637                                       0xa6 : 0xa7, state->afectrl[core]);
24638                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24639                                       0xa5, state->afeoverride[core]);
24640                 }
24641 
24642                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24643                                             (state->mm & 0xff));
24644 
24645                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24646         }
24647 }
24648 
24649 static void
24650 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24651                 u32 end)
24652 {
24653         u32 *buf, *src, *dst, sz;
24654 
24655         sz = end - start + 1;
24656 
24657         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24658         if (NULL == buf)
24659                 return;
24660 
24661         src = buf;
24662         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24663 
24664         wlc_phy_table_read_nphy(pi,
24665                                 (core ==
24666                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24667                                  NPHY_TBL_ID_EPSILONTBL1),
24668                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24669 
24670         do {
24671                 u32 phy_a1, phy_a2;
24672                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24673 
24674                 phy_a1 = end - min(end, (winsz >> 1));
24675                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24676                                end + (winsz >> 1));
24677                 phy_a3 = phy_a2 - phy_a1 + 1;
24678                 phy_a6 = 0;
24679                 phy_a7 = 0;
24680 
24681                 do {
24682                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24683                                                     &phy_a5);
24684                         phy_a6 += phy_a4;
24685                         phy_a7 += phy_a5;
24686                 } while (phy_a2-- != phy_a1);
24687 
24688                 phy_a6 /= phy_a3;
24689                 phy_a7 /= phy_a3;
24690                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24691         } while (end-- != start);
24692 
24693         wlc_phy_table_write_nphy(pi,
24694                                  (core ==
24695                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24696                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24697 
24698         kfree(buf);
24699 }
24700 
24701 static void
24702 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24703                 enum phy_cal_mode cal_mode, u8 core)
24704 {
24705         u16 phy_a1, phy_a2, phy_a3;
24706         u16 phy_a4, phy_a5;
24707         bool phy_a6;
24708         u8 phy_a7, m[2];
24709         u32 phy_a8 = 0;
24710         struct nphy_txgains phy_a9;
24711 
24712         if (NREV_LT(pi->pubpi.phy_rev, 3))
24713                 return;
24714 
24715         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24716 
24717         phy_a6 = ((cal_mode == CAL_GCTRL)
24718                   || (cal_mode == CAL_SOFT)) ? true : false;
24719 
24720         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24721 
24722                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24723 
24724                 if (CHSPEC_IS2G(pi->radio_chanspec))
24725                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24726                                   (phy_a9.txgm[core] << 12) |
24727                                   (phy_a9.pga[core] << 8) |
24728                                   (txgains->gains.pad[core] << 3) |
24729                                   (phy_a9.ipa[core]));
24730                 else
24731                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24732                                   (phy_a9.txgm[core] << 12) |
24733                                   (txgains->gains.pga[core] << 8) |
24734                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24735 
24736                 wlc_phy_rfctrl_override_1tomany_nphy(
24737                         pi,
24738                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24739                         phy_a5, (1 << core), 0);
24740 
24741                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24742                         if ((pi->pubpi.radiorev <= 4)
24743                             || (pi->pubpi.radiorev == 6))
24744                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24745                                           60 : 79;
24746                         else
24747                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24748                                           45 : 64;
24749                 } else {
24750                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24751                 }
24752 
24753                 m[phy_a7] = 0;
24754                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24755 
24756                 phy_a2 = 63;
24757 
24758                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24759                         if ((pi->pubpi.radiorev == 4)
24760                             || (pi->pubpi.radiorev == 6)) {
24761                                 phy_a1 = 30;
24762                                 phy_a3 = 30;
24763                         } else {
24764                                 phy_a1 = 25;
24765                                 phy_a3 = 25;
24766                         }
24767                 } else {
24768                         if ((pi->pubpi.radiorev == 5)
24769                             || (pi->pubpi.radiorev == 7)
24770                             || (pi->pubpi.radiorev == 8)) {
24771                                 phy_a1 = 25;
24772                                 phy_a3 = 25;
24773                         } else {
24774                                 phy_a1 = 35;
24775                                 phy_a3 = 35;
24776                         }
24777                 }
24778 
24779                 if (cal_mode == CAL_GCTRL) {
24780                         if ((pi->pubpi.radiorev == 5)
24781                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24782                                 phy_a1 = 55;
24783                         else if (((pi->pubpi.radiorev == 7) &&
24784                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24785                                  ((pi->pubpi.radiorev == 8) &&
24786                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24787                                 phy_a1 = 60;
24788                         else
24789                                 phy_a1 = 63;
24790 
24791                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24792 
24793                         phy_a1 = 35;
24794                         phy_a3 = 35;
24795                 }
24796 
24797                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24798                             0x29b, (0x1 << 0), (1) << 0);
24799 
24800                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24801                             0x29b, (0x1 << 0), (0) << 0);
24802 
24803                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24804                             0x2a4, (0x1 << 13), (1) << 13);
24805 
24806                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24807                             0x2a4, (0x1 << 13), (0) << 13);
24808 
24809                 write_phy_reg(pi, 0x2a1, 0x80);
24810                 write_phy_reg(pi, 0x2a2, 0x100);
24811 
24812                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24813                             0x2a4, (0x7 << 4), (11) << 4);
24814 
24815                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24816                             0x2a4, (0x7 << 8), (11) << 8);
24817 
24818                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24819                             0x2a4, (0x7 << 0), (0x3) << 0);
24820 
24821                 write_phy_reg(pi, 0x2e5, 0x20);
24822 
24823                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24824 
24825                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24826 
24827                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24828 
24829                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24830                                                   1, ((core == 0) ? 1 : 2), 0,
24831                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24832                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24833                                                   0, ((core == 0) ? 2 : 1), 0,
24834                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24835 
24836                 write_phy_reg(pi, 0x2be, 1);
24837                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24838 
24839                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24840                                                   0, 0x3, 0,
24841                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24842 
24843                 wlc_phy_table_write_nphy(pi,
24844                                          (core ==
24845                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24846                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24847                                          32, &phy_a8);
24848 
24849                 if (cal_mode != CAL_GCTRL) {
24850                         if (CHSPEC_IS5G(pi->radio_chanspec))
24851                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24852                 }
24853 
24854                 wlc_phy_rfctrl_override_1tomany_nphy(
24855                         pi,
24856                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24857                         phy_a5, (1 << core), 1);
24858 
24859         } else {
24860 
24861                 if (txgains) {
24862                         if (txgains->useindex) {
24863                                 phy_a4 = 15 - ((txgains->index) >> 3);
24864                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24865                                         if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24866                                             pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24867                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24868                                         } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24869                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
24870                                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24871                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24872                                         } else {
24873                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
24874                                         }
24875                                 } else {
24876                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
24877                                 }
24878                                 wlc_phy_rfctrl_override_nphy(pi,
24879                                                              (0x1 << 13),
24880                                                              phy_a5,
24881                                                              (1 << core), 0);
24882                         } else {
24883                                 wlc_phy_rfctrl_override_nphy(pi,
24884                                                              (0x1 << 13),
24885                                                              0x5bf7,
24886                                                              (1 << core), 0);
24887                         }
24888                 }
24889 
24890                 if (CHSPEC_IS2G(pi->radio_chanspec))
24891                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24892                 else
24893                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24894 
24895                 m[phy_a7] = 0;
24896                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24897 
24898                 phy_a2 = 63;
24899 
24900                 if (cal_mode == CAL_FULL) {
24901                         phy_a1 = 25;
24902                         phy_a3 = 25;
24903                 } else if (cal_mode == CAL_SOFT) {
24904                         phy_a1 = 25;
24905                         phy_a3 = 25;
24906                 } else if (cal_mode == CAL_GCTRL) {
24907                         phy_a1 = 63;
24908                         phy_a3 = 25;
24909                 } else {
24910 
24911                         phy_a1 = 25;
24912                         phy_a3 = 25;
24913                 }
24914 
24915                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24916                             0x29b, (0x1 << 0), (1) << 0);
24917 
24918                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24919                             0x29b, (0x1 << 0), (0) << 0);
24920 
24921                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24922                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24923                                     0x2a4, (0x1 << 13), (1) << 13);
24924 
24925                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24926                                     0x2a4, (0x1 << 13), (0) << 13);
24927 
24928                         write_phy_reg(pi, 0x2a1, 0x20);
24929                         write_phy_reg(pi, 0x2a2, 0x60);
24930 
24931                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24932                                     0x2a4, (0xf << 4), (9) << 4);
24933 
24934                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24935                                     0x2a4, (0xf << 8), (9) << 8);
24936 
24937                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24938                                     0x2a4, (0xf << 0), (0x2) << 0);
24939 
24940                         write_phy_reg(pi, 0x2e5, 0x20);
24941                 } else {
24942                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24943                                     0x2a4, (0x1 << 11), (1) << 11);
24944 
24945                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24946                                     0x2a4, (0x1 << 11), (0) << 11);
24947 
24948                         write_phy_reg(pi, 0x2a1, 0x80);
24949                         write_phy_reg(pi, 0x2a2, 0x600);
24950 
24951                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24952                                     0x2a4, (0x7 << 4), (0) << 4);
24953 
24954                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24955                                     0x2a4, (0x7 << 8), (0) << 8);
24956 
24957                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24958                                     0x2a4, (0x7 << 0), (0x3) << 0);
24959 
24960                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24961 
24962                 }
24963 
24964                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24965 
24966                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24967 
24968                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24969 
24970                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24971 
24972                 write_phy_reg(pi, 0x2be, 1);
24973                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24974 
24975                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24976 
24977                 wlc_phy_table_write_nphy(pi,
24978                                          (core ==
24979                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24980                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24981                                          32, &phy_a8);
24982 
24983                 if (cal_mode != CAL_GCTRL)
24984                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24985         }
24986 }
24987 
24988 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24989 {
24990         int phy_a1;
24991         int phy_a2;
24992         bool phy_a3;
24993         struct nphy_ipa_txcalgains phy_a4;
24994         bool phy_a5 = false;
24995         bool phy_a6 = true;
24996         s32 phy_a7, phy_a8;
24997         u32 phy_a9;
24998         int phy_a10;
24999         bool phy_a11 = false;
25000         int phy_a12;
25001         u8 phy_a13 = 0;
25002         u8 phy_a14;
25003         u8 *phy_a15 = NULL;
25004 
25005         phy_a4.useindex = true;
25006         phy_a12 = start_gain;
25007 
25008         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25009 
25010                 phy_a2 = 20;
25011                 phy_a1 = 1;
25012 
25013                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25014                         if (pi->pubpi.radiorev == 5) {
25015 
25016                                 phy_a15 = pad_gain_codes_used_2057rev5;
25017                                 phy_a13 =
25018                                         ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25019 
25020                         } else if ((pi->pubpi.radiorev == 7)
25021                                    || (pi->pubpi.radiorev == 8)) {
25022 
25023                                 phy_a15 = pad_gain_codes_used_2057rev7;
25024                                 phy_a13 =
25025                                         ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25026 
25027                         } else {
25028 
25029                                 phy_a15 = pad_all_gain_codes_2057;
25030                                 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25031                                           1;
25032                         }
25033 
25034                 } else {
25035 
25036                         phy_a15 = pga_all_gain_codes_2057;
25037                         phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25038                 }
25039 
25040                 phy_a14 = 0;
25041 
25042                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25043                         if (CHSPEC_IS2G(pi->radio_chanspec))
25044                                 phy_a4.gains.pad[core] =
25045                                         (u16) phy_a15[phy_a12];
25046                         else
25047                                 phy_a4.gains.pga[core] =
25048                                         (u16) phy_a15[phy_a12];
25049 
25050                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25051 
25052                         wlc_phy_table_read_nphy(pi,
25053                                                 (core ==
25054                                                  PHY_CORE_0 ?
25055                                                  NPHY_TBL_ID_EPSILONTBL0 :
25056                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25057                                                 63, 32, &phy_a9);
25058 
25059                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25060 
25061                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25062                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25063 
25064                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25065                                 if (!phy_a3)
25066                                         phy_a12 -= (u8) phy_a1;
25067 
25068                                 phy_a11 = true;
25069                                 break;
25070                         }
25071 
25072                         if (phy_a3)
25073                                 phy_a12 += (u8) phy_a1;
25074                         else
25075                                 phy_a12 -= (u8) phy_a1;
25076 
25077                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25078                                 if (phy_a12 < phy_a14)
25079                                         phy_a12 = phy_a14;
25080                                 else
25081                                         phy_a12 = phy_a13;
25082 
25083                                 phy_a11 = true;
25084                                 break;
25085                         }
25086 
25087                         phy_a6 = false;
25088                         phy_a5 = phy_a3;
25089                 }
25090 
25091         } else {
25092                 phy_a2 = 10;
25093                 phy_a1 = 8;
25094                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25095                         phy_a4.index = (u8) phy_a12;
25096                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25097 
25098                         wlc_phy_table_read_nphy(pi,
25099                                                 (core ==
25100                                                  PHY_CORE_0 ?
25101                                                  NPHY_TBL_ID_EPSILONTBL0 :
25102                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25103                                                 63, 32, &phy_a9);
25104 
25105                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25106 
25107                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25108                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25109 
25110                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25111                                 if (!phy_a3)
25112                                         phy_a12 -= (u8) phy_a1;
25113 
25114                                 phy_a11 = true;
25115                                 break;
25116                         }
25117 
25118                         if (phy_a3)
25119                                 phy_a12 += (u8) phy_a1;
25120                         else
25121                                 phy_a12 -= (u8) phy_a1;
25122 
25123                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25124                                 if (phy_a12 < 0)
25125                                         phy_a12 = 0;
25126                                 else
25127                                         phy_a12 = 127;
25128 
25129                                 phy_a11 = true;
25130                                 break;
25131                         }
25132 
25133                         phy_a6 = false;
25134                         phy_a5 = phy_a3;
25135                 }
25136 
25137         }
25138 
25139         if (NREV_GE(pi->pubpi.phy_rev, 7))
25140                 return (u8) phy_a15[phy_a12];
25141         else
25142                 return (u8) phy_a12;
25143 
25144 }
25145 
25146 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25147 {
25148         struct nphy_ipa_txcalgains phy_b1[2];
25149         struct nphy_papd_restore_state phy_b2;
25150         bool phy_b3;
25151         u8 phy_b4;
25152         u8 phy_b5;
25153         s16 phy_b6, phy_b7, phy_b8;
25154         u16 phy_b9;
25155         s16 phy_b10, phy_b11, phy_b12;
25156 
25157         phy_b11 = 0;
25158         phy_b12 = 0;
25159         phy_b7 = 0;
25160         phy_b8 = 0;
25161         phy_b6 = 0;
25162 
25163         if (pi->nphy_papd_skip == 1)
25164                 return;
25165 
25166         phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25167                         MCTL_EN_MAC));
25168         if (!phy_b3)
25169                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25170 
25171         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25172 
25173         pi->nphy_force_papd_cal = false;
25174 
25175         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25176                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25177                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25178 
25179         pi->nphy_papd_last_cal = pi->sh->now;
25180         pi->nphy_papd_recal_counter++;
25181 
25182         phy_b4 = pi->nphy_txpwrctrl;
25183         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25184 
25185         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25186                                  nphy_papd_scaltbl);
25187         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25188                                  nphy_papd_scaltbl);
25189 
25190         phy_b9 = read_phy_reg(pi, 0x01);
25191         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25192 
25193         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25194                 s32 i, val = 0;
25195                 for (i = 0; i < 64; i++)
25196                         wlc_phy_table_write_nphy(pi,
25197                                                  ((phy_b5 ==
25198                                                    PHY_CORE_0) ?
25199                                                   NPHY_TBL_ID_EPSILONTBL0 :
25200                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25201                                                  i, 32, &val);
25202         }
25203 
25204         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25205 
25206         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25207         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25208                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25209 
25210                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25211                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25212                                 if ((pi->pubpi.radiorev == 3)
25213                                     || (pi->pubpi.radiorev == 4)
25214                                     || (pi->pubpi.radiorev == 6)) {
25215                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25216                                                 23;
25217                                 } else if (pi->pubpi.radiorev == 5) {
25218                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25219                                                 0;
25220                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25221                                                 wlc_phy_a3_nphy(
25222                                                         pi,
25223                                                         pi->
25224                                                         nphy_papd_cal_gain_index
25225                                                         [phy_b5],
25226                                                         phy_b5);
25227 
25228                                 } else if ((pi->pubpi.radiorev == 7)
25229                                            || (pi->pubpi.radiorev == 8)) {
25230 
25231                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25232                                                 0;
25233                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25234                                                 wlc_phy_a3_nphy(
25235                                                         pi,
25236                                                         pi->
25237                                                         nphy_papd_cal_gain_index
25238                                                         [phy_b5],
25239                                                         phy_b5);
25240 
25241                                 }
25242 
25243                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25244                                         pi->nphy_papd_cal_gain_index[phy_b5];
25245 
25246                         } else {
25247                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25248                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25249                                         wlc_phy_a3_nphy(
25250                                                 pi,
25251                                                 pi->
25252                                                 nphy_papd_cal_gain_index
25253                                                 [phy_b5], phy_b5);
25254                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25255                                         pi->nphy_papd_cal_gain_index[phy_b5];
25256                         }
25257                 } else {
25258                         phy_b1[phy_b5].useindex = true;
25259                         phy_b1[phy_b5].index = 16;
25260                         phy_b1[phy_b5].index =
25261                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25262                                                 phy_b5);
25263 
25264                         pi->nphy_papd_cal_gain_index[phy_b5] =
25265                                 15 - ((phy_b1[phy_b5].index) >> 3);
25266                 }
25267 
25268                 switch (pi->nphy_papd_cal_type) {
25269                 case 0:
25270                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25271                         break;
25272                 case 1:
25273                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25274                         break;
25275                 }
25276 
25277                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25278                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25279         }
25280 
25281         if (NREV_LT(pi->pubpi.phy_rev, 7))
25282                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25283 
25284         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25285                 int eps_offset = 0;
25286 
25287                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25288                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25289                                 if (pi->pubpi.radiorev == 3)
25290                                         eps_offset = -2;
25291                                 else if (pi->pubpi.radiorev == 5)
25292                                         eps_offset = 3;
25293                                 else
25294                                         eps_offset = -1;
25295                         } else {
25296                                 eps_offset = 2;
25297                         }
25298 
25299                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25300                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25301                                 phy_b10 = 0;
25302                                 if ((pi->pubpi.radiorev == 3) ||
25303                                     (pi->pubpi.radiorev == 4) ||
25304                                     (pi->pubpi.radiorev == 6)) {
25305                                         phy_b12 = -(
25306                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25307                                                              [phy_b8] + 1) / 2;
25308                                         phy_b10 = -1;
25309                                 } else if (pi->pubpi.radiorev == 5) {
25310                                         phy_b12 = -(
25311                                             nphy_papd_padgain_dlt_2g_2057rev5
25312                                                              [phy_b8] + 1) / 2;
25313                                 } else if ((pi->pubpi.radiorev == 7) ||
25314                                            (pi->pubpi.radiorev == 8)) {
25315                                         phy_b12 = -(
25316                                             nphy_papd_padgain_dlt_2g_2057rev7
25317                                                              [phy_b8] + 1) / 2;
25318                                 }
25319                         } else {
25320                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25321                                 if ((pi->pubpi.radiorev == 3) ||
25322                                     (pi->pubpi.radiorev == 4) ||
25323                                     (pi->pubpi.radiorev == 6))
25324                                         phy_b11 =
25325                                                 -(nphy_papd_pgagain_dlt_5g_2057
25326                                                   [phy_b7]
25327                                                   + 1) / 2;
25328                                 else if ((pi->pubpi.radiorev == 7)
25329                                          || (pi->pubpi.radiorev == 8))
25330                                         phy_b11 = -(
25331                                               nphy_papd_pgagain_dlt_5g_2057rev7
25332                                                              [phy_b7] + 1) / 2;
25333 
25334                                 phy_b10 = -9;
25335                         }
25336 
25337                         if (CHSPEC_IS2G(pi->radio_chanspec))
25338                                 phy_b6 =
25339                                         -60 + 27 + eps_offset + phy_b12 +
25340                                         phy_b10;
25341                         else
25342                                 phy_b6 =
25343                                         -60 + 27 + eps_offset + phy_b11 +
25344                                         phy_b10;
25345 
25346                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25347                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25348 
25349                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25350                 } else {
25351                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25352                                 eps_offset = 4;
25353                         else
25354                                 eps_offset = 2;
25355 
25356                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25357 
25358                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25359                                 phy_b11 =
25360                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25361                                                   phy_b7] +
25362                                           1) / 2;
25363                                 phy_b10 = 0;
25364                         } else {
25365                                 phy_b11 =
25366                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25367                                                   phy_b7] +
25368                                           1) / 2;
25369                                 phy_b10 = -9;
25370                         }
25371 
25372                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25373 
25374                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25375                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25376 
25377                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25378                 }
25379         }
25380 
25381         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25382                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25383 
25384         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25385                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25386 
25387         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25388                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25389                             0x2a4, (0x1 << 13), (0) << 13);
25390 
25391                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25392                             0x2a4, (0x1 << 13), (0) << 13);
25393 
25394         } else {
25395                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25396                             0x2a4, (0x1 << 11), (0) << 11);
25397 
25398                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25399                             0x2a4, (0x1 << 11), (0) << 11);
25400 
25401         }
25402         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25403 
25404         write_phy_reg(pi, 0x01, phy_b9);
25405 
25406         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25407 
25408         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25409         if (phy_b4 == PHY_TPC_HW_OFF) {
25410                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25411                                          (s8) (pi->nphy_txpwrindex[0].
25412                                                index_internal), false);
25413                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25414                                          (s8) (pi->nphy_txpwrindex[1].
25415                                                index_internal), false);
25416         }
25417 
25418         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25419 
25420         if (!phy_b3)
25421                 wlapi_enable_mac(pi->sh->physhim);
25422 }
25423 
25424 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25425 {
25426         struct nphy_txgains target_gain;
25427         u8 tx_pwr_ctrl_state;
25428         bool fullcal = true;
25429         bool restore_tx_gain = false;
25430         bool mphase;
25431 
25432         if (PHY_MUTED(pi))
25433                 return;
25434 
25435         if (caltype == PHY_PERICAL_AUTO)
25436                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25437         else if (caltype == PHY_PERICAL_PARTIAL)
25438                 fullcal = false;
25439 
25440         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25441                 fullcal =
25442                         (pi->cal_type_override ==
25443                          PHY_PERICAL_FULL) ? true : false;
25444 
25445         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25446                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25447                         wlc_phy_cal_perical_mphase_restart(pi);
25448         }
25449 
25450         if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25451                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25452 
25453         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25454 
25455         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25456 
25457         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25458             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25459                 pi->nphy_cal_orig_pwr_idx[0] =
25460                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25461                 pi->nphy_cal_orig_pwr_idx[1] =
25462                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25463 
25464                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25465                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25466                                                 0x110, 16,
25467                                                 pi->nphy_cal_orig_tx_gain);
25468                 } else {
25469                         pi->nphy_cal_orig_tx_gain[0] = 0;
25470                         pi->nphy_cal_orig_tx_gain[1] = 0;
25471                 }
25472         }
25473         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25474         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25475         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25476 
25477         if (pi->antsel_type == ANTSEL_2x3)
25478                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25479 
25480         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25481         if (!mphase) {
25482 
25483                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25484                         wlc_phy_precal_txgain_nphy(pi);
25485                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25486                         restore_tx_gain = true;
25487 
25488                         target_gain = pi->nphy_cal_target_gain;
25489                 }
25490                 if (0 ==
25491                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25492                                             mphase)) {
25493                         if (PHY_IPA(pi))
25494                                 wlc_phy_a4(pi, true);
25495 
25496                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25497                         wlapi_enable_mac(pi->sh->physhim);
25498                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25499                                              10000);
25500                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25501                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25502 
25503                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25504                                         (pi->first_cal_after_assoc ||
25505                                         (pi->cal_type_override ==
25506                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25507                                 wlc_phy_savecal_nphy(pi);
25508 
25509                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25510 
25511                                 pi->nphy_perical_last = pi->sh->now;
25512                         }
25513                 }
25514                 if (caltype != PHY_PERICAL_AUTO)
25515                         wlc_phy_rssi_cal_nphy(pi);
25516 
25517                 if (pi->first_cal_after_assoc
25518                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25519                         pi->first_cal_after_assoc = false;
25520                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25521                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25522                 }
25523 
25524                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25525                         wlc_phy_radio205x_vcocal_nphy(pi);
25526         } else {
25527                 switch (pi->mphase_cal_phase_id) {
25528                 case MPHASE_CAL_STATE_INIT:
25529                         pi->nphy_perical_last = pi->sh->now;
25530                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25531 
25532                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25533                                 wlc_phy_precal_txgain_nphy(pi);
25534 
25535                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25536                         pi->mphase_cal_phase_id++;
25537                         break;
25538 
25539                 case MPHASE_CAL_STATE_TXPHASE0:
25540                 case MPHASE_CAL_STATE_TXPHASE1:
25541                 case MPHASE_CAL_STATE_TXPHASE2:
25542                 case MPHASE_CAL_STATE_TXPHASE3:
25543                 case MPHASE_CAL_STATE_TXPHASE4:
25544                 case MPHASE_CAL_STATE_TXPHASE5:
25545                         if ((pi->radar_percal_mask & 0x10) != 0)
25546                                 pi->nphy_rxcal_active = true;
25547 
25548                         if (wlc_phy_cal_txiqlo_nphy
25549                                     (pi, pi->nphy_cal_target_gain, fullcal,
25550                                     true) != 0) {
25551 
25552                                 wlc_phy_cal_perical_mphase_reset(pi);
25553                                 break;
25554                         }
25555 
25556                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25557                             (pi->mphase_cal_phase_id ==
25558                              MPHASE_CAL_STATE_TXPHASE4))
25559                                 pi->mphase_cal_phase_id += 2;
25560                         else
25561                                 pi->mphase_cal_phase_id++;
25562                         break;
25563 
25564                 case MPHASE_CAL_STATE_PAPDCAL:
25565                         if ((pi->radar_percal_mask & 0x2) != 0)
25566                                 pi->nphy_rxcal_active = true;
25567 
25568                         if (PHY_IPA(pi))
25569                                 wlc_phy_a4(pi, true);
25570 
25571                         pi->mphase_cal_phase_id++;
25572                         break;
25573 
25574                 case MPHASE_CAL_STATE_RXCAL:
25575                         if ((pi->radar_percal_mask & 0x1) != 0)
25576                                 pi->nphy_rxcal_active = true;
25577                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25578                                                   (pi->first_cal_after_assoc ||
25579                                                    (pi->cal_type_override ==
25580                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25581                                                   false) == 0)
25582                                 wlc_phy_savecal_nphy(pi);
25583 
25584                         pi->mphase_cal_phase_id++;
25585                         break;
25586 
25587                 case MPHASE_CAL_STATE_RSSICAL:
25588                         if ((pi->radar_percal_mask & 0x4) != 0)
25589                                 pi->nphy_rxcal_active = true;
25590                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25591                         wlc_phy_rssi_cal_nphy(pi);
25592 
25593                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25594                                 wlc_phy_radio205x_vcocal_nphy(pi);
25595 
25596                         restore_tx_gain = true;
25597 
25598                         if (pi->first_cal_after_assoc)
25599                                 pi->mphase_cal_phase_id++;
25600                         else
25601                                 wlc_phy_cal_perical_mphase_reset(pi);
25602 
25603                         break;
25604 
25605                 case MPHASE_CAL_STATE_IDLETSSI:
25606                         if ((pi->radar_percal_mask & 0x8) != 0)
25607                                 pi->nphy_rxcal_active = true;
25608 
25609                         if (pi->first_cal_after_assoc) {
25610                                 pi->first_cal_after_assoc = false;
25611                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25612                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25613                         }
25614 
25615                         wlc_phy_cal_perical_mphase_reset(pi);
25616                         break;
25617 
25618                 default:
25619                         wlc_phy_cal_perical_mphase_reset(pi);
25620                         break;
25621                 }
25622         }
25623 
25624         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25625                 if (restore_tx_gain) {
25626                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25627 
25628                                 wlc_phy_txpwr_index_nphy(pi, 1,
25629                                                          pi->
25630                                                          nphy_cal_orig_pwr_idx
25631                                                          [0], false);
25632                                 wlc_phy_txpwr_index_nphy(pi, 2,
25633                                                          pi->
25634                                                          nphy_cal_orig_pwr_idx
25635                                                          [1], false);
25636 
25637                                 pi->nphy_txpwrindex[0].index = -1;
25638                                 pi->nphy_txpwrindex[1].index = -1;
25639                         } else {
25640                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25641                                                          (s8) (pi->
25642                                                                nphy_txpwrindex
25643                                                                [0].
25644                                                                index_internal),
25645                                                          false);
25646                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25647                                                          (s8) (pi->
25648                                                                nphy_txpwrindex
25649                                                                [1].
25650                                                                index_internal),
25651                                                          false);
25652                         }
25653                 }
25654         }
25655 
25656         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25657         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25658         wlapi_enable_mac(pi->sh->physhim);
25659 }
25660 
25661 int
25662 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25663                         bool fullcal, bool mphase)
25664 {
25665         u16 val;
25666         u16 tbl_buf[11];
25667         u8 cal_cnt;
25668         u16 cal_cmd;
25669         u8 num_cals, max_cal_cmds;
25670         u16 core_no, cal_type;
25671         u16 diq_start = 0;
25672         u8 phy_bw;
25673         u16 max_val;
25674         u16 tone_freq;
25675         u16 gain_save[2];
25676         u16 cal_gain[2];
25677         struct nphy_iqcal_params cal_params[2];
25678         u32 tbl_len;
25679         const void *tbl_ptr;
25680         bool ladder_updated[2];
25681         u8 mphase_cal_lastphase = 0;
25682         int bcmerror = 0;
25683         bool phyhang_avoid_state = false;
25684 
25685         static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25686                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25687                 0x1902,
25688                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25689                 0x6407
25690         };
25691 
25692         static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25693                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25694                 0x3200,
25695                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25696                 0x6407
25697         };
25698 
25699         static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25700                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25701                 0x1202,
25702                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25703                 0x4707
25704         };
25705 
25706         static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25707                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25708                 0x2300,
25709                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25710                 0x4707
25711         };
25712 
25713         static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25714                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25715                 0x0000
25716         };
25717 
25718         static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25719                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25720                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25721         };
25722 
25723         static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25724                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25725                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25726         };
25727 
25728         static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25729                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25730                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25731                 0x0000
25732         };
25733 
25734         static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25735                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25736                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25737         };
25738 
25739         static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25740                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25741                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25742         };
25743 
25744         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25745 
25746         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25747                 phyhang_avoid_state = pi->phyhang_avoid;
25748                 pi->phyhang_avoid = false;
25749         }
25750 
25751         if (CHSPEC_IS40(pi->radio_chanspec))
25752                 phy_bw = 40;
25753         else
25754                 phy_bw = 20;
25755 
25756         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25757 
25758         for (core_no = 0; core_no <= 1; core_no++) {
25759                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25760                                               &cal_params[core_no]);
25761                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25762         }
25763 
25764         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25765 
25766         wlc_phy_txcal_radio_setup_nphy(pi);
25767 
25768         wlc_phy_txcal_physetup_nphy(pi);
25769 
25770         ladder_updated[0] = ladder_updated[1] = false;
25771         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25772               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25773                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25774 
25775                 if (phy_bw == 40) {
25776                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25777                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25778                 } else {
25779                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25780                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25781                 }
25782                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25783                                          16, tbl_ptr);
25784 
25785                 if (phy_bw == 40) {
25786                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25787                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25788                 } else {
25789                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25790                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25791                 }
25792                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25793                                          16, tbl_ptr);
25794         }
25795 
25796         if (NREV_GE(pi->pubpi.phy_rev, 7))
25797                 write_phy_reg(pi, 0xc2, 0x8ad9);
25798         else
25799                 write_phy_reg(pi, 0xc2, 0x8aa9);
25800 
25801         max_val = 250;
25802         tone_freq = (phy_bw == 20) ? 2500 : 5000;
25803 
25804         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25805                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25806                 bcmerror = 0;
25807         } else {
25808                 bcmerror =
25809                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25810                                              false);
25811         }
25812 
25813         if (bcmerror == 0) {
25814 
25815                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25816                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
25817                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25818                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25819                                 tbl_len -= 2;
25820                 } else {
25821                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25822 
25823                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25824                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25825                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25826                                         tbl_len -= 2;
25827                         } else {
25828 
25829                                 fullcal = true;
25830 
25831                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25832                                         tbl_ptr =
25833                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25834                                         tbl_len = ARRAY_SIZE(
25835                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25836                                 } else {
25837                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25838                                         tbl_len = ARRAY_SIZE(
25839                                                     tbl_tx_iqlo_cal_startcoefs);
25840                                 }
25841                         }
25842                 }
25843                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25844                                          16, tbl_ptr);
25845 
25846                 if (fullcal) {
25847                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25848                                        ARRAY_SIZE(
25849                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25850                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25851                 } else {
25852                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25853                                        ARRAY_SIZE(
25854                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25855                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25856                 }
25857 
25858                 if (mphase) {
25859                         cal_cnt = pi->mphase_txcal_cmdidx;
25860                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25861                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25862                         else
25863                                 num_cals = max_cal_cmds;
25864                 } else {
25865                         cal_cnt = 0;
25866                         num_cals = max_cal_cmds;
25867                 }
25868 
25869                 for (; cal_cnt < num_cals; cal_cnt++) {
25870 
25871                         if (fullcal) {
25872                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25873                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25874                                           [cal_cnt] :
25875                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25876                         } else {
25877                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25878                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25879                                         cal_cnt]
25880                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25881                         }
25882 
25883                         core_no = ((cal_cmd & 0x3000) >> 12);
25884                         cal_type = ((cal_cmd & 0x0F00) >> 8);
25885 
25886                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25887                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
25888                              PHY_IPA(pi)
25889                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25890                                 if (!ladder_updated[core_no]) {
25891                                         wlc_phy_update_txcal_ladder_nphy(
25892                                                 pi,
25893                                                 core_no);
25894                                         ladder_updated[core_no] = true;
25895                                 }
25896                         }
25897 
25898                         val =
25899                                 (cal_params[core_no].
25900                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
25901                         write_phy_reg(pi, 0xc1, val);
25902 
25903                         if ((cal_type == 1) || (cal_type == 3)
25904                             || (cal_type == 4)) {
25905 
25906                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25907                                                         1, 69 + core_no, 16,
25908                                                         tbl_buf);
25909 
25910                                 diq_start = tbl_buf[0];
25911 
25912                                 tbl_buf[0] = 0;
25913                                 wlc_phy_table_write_nphy(pi,
25914                                                          NPHY_TBL_ID_IQLOCAL, 1,
25915                                                          69 + core_no, 16,
25916                                                          tbl_buf);
25917                         }
25918 
25919                         write_phy_reg(pi, 0xc0, cal_cmd);
25920 
25921                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25922                                  20000);
25923                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25924                                  "HW error: txiq calib"))
25925                                 return -EIO;
25926 
25927                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25928                                                 tbl_len, 96, 16, tbl_buf);
25929                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25930                                                  tbl_len, 64, 16, tbl_buf);
25931 
25932                         if ((cal_type == 1) || (cal_type == 3)
25933                             || (cal_type == 4)) {
25934 
25935                                 tbl_buf[0] = diq_start;
25936 
25937                         }
25938 
25939                 }
25940 
25941                 if (mphase) {
25942                         pi->mphase_txcal_cmdidx = num_cals;
25943                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25944                                 pi->mphase_txcal_cmdidx = 0;
25945                 }
25946 
25947                 mphase_cal_lastphase =
25948                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25949                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25950 
25951                 if (!mphase
25952                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25953 
25954                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25955                                                 16, tbl_buf);
25956                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25957                                                  16, tbl_buf);
25958 
25959                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25960 
25961                                 tbl_buf[0] = 0;
25962                                 tbl_buf[1] = 0;
25963                                 tbl_buf[2] = 0;
25964                                 tbl_buf[3] = 0;
25965 
25966                         }
25967                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25968                                                  16, tbl_buf);
25969 
25970                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25971                                                 16, tbl_buf);
25972                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25973                                                  16, tbl_buf);
25974 
25975                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25976                                                  16, tbl_buf);
25977 
25978                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25979                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25980                                 tbl_len -= 2;
25981 
25982                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25983                                                 tbl_len, 96, 16,
25984                                                 pi->nphy_txiqlocal_bestc);
25985 
25986                         pi->nphy_txiqlocal_coeffsvalid = true;
25987                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25988                 } else {
25989                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25990                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25991                                 tbl_len -= 2;
25992 
25993                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25994                                                 tbl_len, 96, 16,
25995                                                 pi->mphase_txcal_bestcoeffs);
25996                 }
25997 
25998                 wlc_phy_stopplayback_nphy(pi);
25999 
26000                 write_phy_reg(pi, 0xc2, 0x0000);
26001 
26002         }
26003 
26004         wlc_phy_txcal_phycleanup_nphy(pi);
26005 
26006         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26007                                  gain_save);
26008 
26009         wlc_phy_txcal_radio_cleanup_nphy(pi);
26010 
26011         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26012                 if (!mphase
26013                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26014                         wlc_phy_tx_iq_war_nphy(pi);
26015         }
26016 
26017         if (NREV_GE(pi->pubpi.phy_rev, 4))
26018                 pi->phyhang_avoid = phyhang_avoid_state;
26019 
26020         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26021 
26022         return bcmerror;
26023 }
26024 
26025 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26026 {
26027         u16 tbl_buf[7];
26028 
26029         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26030             (pi->nphy_txiqlocal_coeffsvalid)) {
26031                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26032                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26033 
26034                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26035                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26036                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26037                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26038 
26039                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26040                                                  16, pi->nphy_txiqlocal_bestc);
26041 
26042                         tbl_buf[0] = 0;
26043                         tbl_buf[1] = 0;
26044                         tbl_buf[2] = 0;
26045                         tbl_buf[3] = 0;
26046                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26047                                                  16, tbl_buf);
26048 
26049                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26050                                                  16,
26051                                                  &pi->nphy_txiqlocal_bestc[5]);
26052 
26053                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26054                                                  16,
26055                                                  &pi->nphy_txiqlocal_bestc[5]);
26056                 }
26057         }
26058 }
26059 
26060 void
26061 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26062                           struct nphy_iq_comp *pcomp)
26063 {
26064         if (write) {
26065                 write_phy_reg(pi, 0x9a, pcomp->a0);
26066                 write_phy_reg(pi, 0x9b, pcomp->b0);
26067                 write_phy_reg(pi, 0x9c, pcomp->a1);
26068                 write_phy_reg(pi, 0x9d, pcomp->b1);
26069         } else {
26070                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26071                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26072                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26073                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26074         }
26075 }
26076 
26077 void
26078 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26079                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26080 {
26081         u8 core;
26082 
26083         write_phy_reg(pi, 0x12b, num_samps);
26084         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26085         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26086                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26087 
26088         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26089 
26090         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26091                  10000);
26092         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26093                  "HW error: rxiq est"))
26094                 return;
26095 
26096         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26097                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26098                         est[core].i_pwr =
26099                                 (read_phy_reg(pi,
26100                                               NPHY_IqestipwrAccHi(core)) << 16)
26101                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26102                         est[core].q_pwr =
26103                                 (read_phy_reg(pi,
26104                                               NPHY_IqestqpwrAccHi(core)) << 16)
26105                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26106                         est[core].iq_prod =
26107                                 (read_phy_reg(pi,
26108                                               NPHY_IqestIqAccHi(core)) << 16) |
26109                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26110                 }
26111         }
26112 }
26113 
26114 #define CAL_RETRY_CNT 2
26115 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26116 {
26117         u8 curr_core;
26118         struct phy_iq_est est[PHY_CORE_MAX];
26119         struct nphy_iq_comp old_comp, new_comp;
26120         s32 iq = 0;
26121         u32 ii = 0, qq = 0;
26122         s16 iq_nbits, qq_nbits, brsh, arsh;
26123         s32 a, b, temp;
26124         int bcmerror = 0;
26125         uint cal_retry = 0;
26126 
26127         if (core_mask == 0x0)
26128                 return;
26129 
26130         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26131         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26132         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26133 
26134 cal_try:
26135         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26136 
26137         new_comp = old_comp;
26138 
26139         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26140 
26141                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26142                         iq = est[curr_core].iq_prod;
26143                         ii = est[curr_core].i_pwr;
26144                         qq = est[curr_core].q_pwr;
26145                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26146                         iq = est[curr_core].iq_prod;
26147                         ii = est[curr_core].i_pwr;
26148                         qq = est[curr_core].q_pwr;
26149                 } else {
26150                         continue;
26151                 }
26152 
26153                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26154                         bcmerror = -EBADE;
26155                         break;
26156                 }
26157 
26158                 iq_nbits = wlc_phy_nbits(iq);
26159                 qq_nbits = wlc_phy_nbits(qq);
26160 
26161                 arsh = 10 - (30 - iq_nbits);
26162                 if (arsh >= 0) {
26163                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26164                         temp = (s32) (ii >> arsh);
26165                         if (temp == 0) {
26166                                 bcmerror = -EBADE;
26167                                 break;
26168                         }
26169                 } else {
26170                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26171                         temp = (s32) (ii << -arsh);
26172                         if (temp == 0) {
26173                                 bcmerror = -EBADE;
26174                                 break;
26175                         }
26176                 }
26177 
26178                 a /= temp;
26179 
26180                 brsh = qq_nbits - 31 + 20;
26181                 if (brsh >= 0) {
26182                         b = (qq << (31 - qq_nbits));
26183                         temp = (s32) (ii >> brsh);
26184                         if (temp == 0) {
26185                                 bcmerror = -EBADE;
26186                                 break;
26187                         }
26188                 } else {
26189                         b = (qq << (31 - qq_nbits));
26190                         temp = (s32) (ii << -brsh);
26191                         if (temp == 0) {
26192                                 bcmerror = -EBADE;
26193                                 break;
26194                         }
26195                 }
26196                 b /= temp;
26197                 b -= a * a;
26198                 b = (s32) int_sqrt((unsigned long) b);
26199                 b -= (1 << 10);
26200 
26201                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26202                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26203                                 new_comp.a0 = (s16) a & 0x3ff;
26204                                 new_comp.b0 = (s16) b & 0x3ff;
26205                         } else {
26206 
26207                                 new_comp.a0 = (s16) b & 0x3ff;
26208                                 new_comp.b0 = (s16) a & 0x3ff;
26209                         }
26210                 }
26211                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26212                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26213                                 new_comp.a1 = (s16) a & 0x3ff;
26214                                 new_comp.b1 = (s16) b & 0x3ff;
26215                         } else {
26216 
26217                                 new_comp.a1 = (s16) b & 0x3ff;
26218                                 new_comp.b1 = (s16) a & 0x3ff;
26219                         }
26220                 }
26221         }
26222 
26223         if (bcmerror != 0) {
26224                 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26225 
26226                 if (cal_retry < CAL_RETRY_CNT) {
26227                         cal_retry++;
26228                         goto cal_try;
26229                 }
26230 
26231                 new_comp = old_comp;
26232         }
26233 
26234         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26235 }
26236 
26237 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26238 {
26239         u16 offtune_val;
26240         u16 bias_g = 0;
26241         u16 bias_a = 0;
26242 
26243         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26244                 if (rx_core == PHY_CORE_0) {
26245                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26246                                 pi->tx_rx_cal_radio_saveregs[0] =
26247                                         read_radio_reg(pi,
26248                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26249                                 pi->tx_rx_cal_radio_saveregs[1] =
26250                                         read_radio_reg(pi,
26251                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26252 
26253                                 write_radio_reg(pi,
26254                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26255                                         0x3);
26256                                 write_radio_reg(pi,
26257                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26258                                         0xaf);
26259 
26260                         } else {
26261                                 pi->tx_rx_cal_radio_saveregs[0] =
26262                                         read_radio_reg(pi,
26263                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26264                                 pi->tx_rx_cal_radio_saveregs[1] =
26265                                         read_radio_reg(pi,
26266                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26267 
26268                                 write_radio_reg(
26269                                         pi,
26270                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26271                                         0x3);
26272                                 write_radio_reg(
26273                                         pi,
26274                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26275                                         0x7f);
26276                         }
26277 
26278                 } else {
26279                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26280                                 pi->tx_rx_cal_radio_saveregs[0] =
26281                                         read_radio_reg(pi,
26282                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26283                                 pi->tx_rx_cal_radio_saveregs[1] =
26284                                         read_radio_reg(pi,
26285                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26286 
26287                                 write_radio_reg(
26288                                         pi,
26289                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26290                                         0x3);
26291                                 write_radio_reg(
26292                                         pi,
26293                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26294                                         0xaf);
26295 
26296                         } else {
26297                                 pi->tx_rx_cal_radio_saveregs[0] =
26298                                         read_radio_reg(pi,
26299                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26300                                 pi->tx_rx_cal_radio_saveregs[1] =
26301                                         read_radio_reg(pi,
26302                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26303 
26304                                 write_radio_reg(pi,
26305                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26306                                         0x3);
26307                                 write_radio_reg(pi,
26308                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26309                                         0x7f);
26310                         }
26311                 }
26312 
26313         } else {
26314                 if (rx_core == PHY_CORE_0) {
26315                         pi->tx_rx_cal_radio_saveregs[0] =
26316                                 read_radio_reg(pi,
26317                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26318                                                RADIO_2056_TX1);
26319                         pi->tx_rx_cal_radio_saveregs[1] =
26320                                 read_radio_reg(pi,
26321                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26322                                                RADIO_2056_RX0);
26323 
26324                         if (pi->pubpi.radiorev >= 5) {
26325                                 pi->tx_rx_cal_radio_saveregs[2] =
26326                                         read_radio_reg(pi,
26327                                                        RADIO_2056_RX_RXSPARE2 |
26328                                                        RADIO_2056_RX0);
26329                                 pi->tx_rx_cal_radio_saveregs[3] =
26330                                         read_radio_reg(pi,
26331                                                        RADIO_2056_TX_TXSPARE2 |
26332                                                        RADIO_2056_TX1);
26333                         }
26334 
26335                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26336 
26337                                 if (pi->pubpi.radiorev >= 5) {
26338                                         pi->tx_rx_cal_radio_saveregs[4] =
26339                                                 read_radio_reg(pi,
26340                                                       RADIO_2056_RX_LNAA_MASTER
26341                                                       | RADIO_2056_RX0);
26342 
26343                                         write_radio_reg(
26344                                                 pi,
26345                                                 RADIO_2056_RX_LNAA_MASTER
26346                                                 | RADIO_2056_RX0, 0x40);
26347 
26348                                         write_radio_reg(pi,
26349                                                 RADIO_2056_TX_TXSPARE2 |
26350                                                 RADIO_2056_TX1, bias_a);
26351 
26352                                         write_radio_reg(pi,
26353                                                 RADIO_2056_RX_RXSPARE2 |
26354                                                 RADIO_2056_RX0, bias_a);
26355                                 } else {
26356                                         pi->tx_rx_cal_radio_saveregs[4] =
26357                                                 read_radio_reg(pi,
26358                                                         RADIO_2056_RX_LNAA_TUNE
26359                                                         | RADIO_2056_RX0);
26360 
26361                                         offtune_val =
26362                                                 (pi->tx_rx_cal_radio_saveregs
26363                                                  [2] & 0xF0) >> 8;
26364                                         offtune_val =
26365                                                 (offtune_val <= 0x7) ? 0xF : 0;
26366 
26367                                         mod_radio_reg(pi,
26368                                                       RADIO_2056_RX_LNAA_TUNE |
26369                                                       RADIO_2056_RX0, 0xF0,
26370                                                       (offtune_val << 8));
26371                                 }
26372 
26373                                 write_radio_reg(pi,
26374                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26375                                                 RADIO_2056_TX1, 0x9);
26376                                 write_radio_reg(pi,
26377                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26378                                                 RADIO_2056_RX0, 0x9);
26379                         } else {
26380                                 if (pi->pubpi.radiorev >= 5) {
26381                                         pi->tx_rx_cal_radio_saveregs[4] =
26382                                                 read_radio_reg(
26383                                                       pi,
26384                                                       RADIO_2056_RX_LNAG_MASTER
26385                                                     | RADIO_2056_RX0);
26386 
26387                                         write_radio_reg(
26388                                                 pi,
26389                                                 RADIO_2056_RX_LNAG_MASTER
26390                                                 | RADIO_2056_RX0, 0x40);
26391 
26392                                         write_radio_reg(
26393                                                 pi,
26394                                                 RADIO_2056_TX_TXSPARE2
26395                                                 |
26396                                                 RADIO_2056_TX1, bias_g);
26397 
26398                                         write_radio_reg(
26399                                                 pi,
26400                                                 RADIO_2056_RX_RXSPARE2
26401                                                 |
26402                                                 RADIO_2056_RX0, bias_g);
26403 
26404                                 } else {
26405                                         pi->tx_rx_cal_radio_saveregs[4] =
26406                                                 read_radio_reg(
26407                                                         pi,
26408                                                         RADIO_2056_RX_LNAG_TUNE
26409                                                         | RADIO_2056_RX0);
26410 
26411                                         offtune_val =
26412                                                 (pi->
26413                                                  tx_rx_cal_radio_saveregs[2] &
26414                                                  0xF0) >> 8;
26415                                         offtune_val =
26416                                                 (offtune_val <= 0x7) ? 0xF : 0;
26417 
26418                                         mod_radio_reg(pi,
26419                                                       RADIO_2056_RX_LNAG_TUNE |
26420                                                       RADIO_2056_RX0, 0xF0,
26421                                                       (offtune_val << 8));
26422                                 }
26423 
26424                                 write_radio_reg(pi,
26425                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26426                                                 RADIO_2056_TX1, 0x6);
26427                                 write_radio_reg(pi,
26428                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26429                                                 RADIO_2056_RX0, 0x6);
26430                         }
26431 
26432                 } else {
26433                         pi->tx_rx_cal_radio_saveregs[0] =
26434                                 read_radio_reg(pi,
26435                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26436                                                RADIO_2056_TX0);
26437                         pi->tx_rx_cal_radio_saveregs[1] =
26438                                 read_radio_reg(pi,
26439                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26440                                                RADIO_2056_RX1);
26441 
26442                         if (pi->pubpi.radiorev >= 5) {
26443                                 pi->tx_rx_cal_radio_saveregs[2] =
26444                                         read_radio_reg(pi,
26445                                                        RADIO_2056_RX_RXSPARE2 |
26446                                                        RADIO_2056_RX1);
26447                                 pi->tx_rx_cal_radio_saveregs[3] =
26448                                         read_radio_reg(pi,
26449                                                        RADIO_2056_TX_TXSPARE2 |
26450                                                        RADIO_2056_TX0);
26451                         }
26452 
26453                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26454 
26455                                 if (pi->pubpi.radiorev >= 5) {
26456                                         pi->tx_rx_cal_radio_saveregs[4] =
26457                                                 read_radio_reg(
26458                                                        pi,
26459                                                        RADIO_2056_RX_LNAA_MASTER
26460                                                        | RADIO_2056_RX1);
26461 
26462                                         write_radio_reg(
26463                                                 pi,
26464                                                 RADIO_2056_RX_LNAA_MASTER |
26465                                                 RADIO_2056_RX1, 0x40);
26466 
26467                                         write_radio_reg(
26468                                                 pi,
26469                                                 RADIO_2056_TX_TXSPARE2
26470                                                 |
26471                                                 RADIO_2056_TX0, bias_a);
26472 
26473                                         write_radio_reg(
26474                                                 pi,
26475                                                 RADIO_2056_RX_RXSPARE2
26476                                                 |
26477                                                 RADIO_2056_RX1, bias_a);
26478                                 } else {
26479                                         pi->tx_rx_cal_radio_saveregs[4] =
26480                                                 read_radio_reg(
26481                                                         pi,
26482                                                         RADIO_2056_RX_LNAA_TUNE
26483                                                         | RADIO_2056_RX1);
26484 
26485                                         offtune_val =
26486                                                 (pi->
26487                                                  tx_rx_cal_radio_saveregs[2] &
26488                                                  0xF0) >> 8;
26489                                         offtune_val =
26490                                                 (offtune_val <= 0x7) ? 0xF : 0;
26491 
26492                                         mod_radio_reg(pi,
26493                                                       RADIO_2056_RX_LNAA_TUNE |
26494                                                       RADIO_2056_RX1, 0xF0,
26495                                                       (offtune_val << 8));
26496                                 }
26497 
26498                                 write_radio_reg(pi,
26499                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26500                                                 RADIO_2056_TX0, 0x9);
26501                                 write_radio_reg(pi,
26502                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26503                                                 RADIO_2056_RX1, 0x9);
26504                         } else {
26505                                 if (pi->pubpi.radiorev >= 5) {
26506                                         pi->tx_rx_cal_radio_saveregs[4] =
26507                                                 read_radio_reg(
26508                                                       pi,
26509                                                       RADIO_2056_RX_LNAG_MASTER
26510                                                     | RADIO_2056_RX1);
26511 
26512                                         write_radio_reg(
26513                                                 pi,
26514                                                 RADIO_2056_RX_LNAG_MASTER
26515                                                 | RADIO_2056_RX1, 0x40);
26516 
26517                                         write_radio_reg(
26518                                                 pi,
26519                                                 RADIO_2056_TX_TXSPARE2
26520                                                 |
26521                                                 RADIO_2056_TX0, bias_g);
26522 
26523                                         write_radio_reg(
26524                                                 pi,
26525                                                 RADIO_2056_RX_RXSPARE2
26526                                                 |
26527                                                 RADIO_2056_RX1, bias_g);
26528                                 } else {
26529                                         pi->tx_rx_cal_radio_saveregs[4] =
26530                                                 read_radio_reg(
26531                                                         pi,
26532                                                         RADIO_2056_RX_LNAG_TUNE
26533                                                         | RADIO_2056_RX1);
26534 
26535                                         offtune_val =
26536                                                 (pi->
26537                                                  tx_rx_cal_radio_saveregs[2] &
26538                                                  0xF0) >> 8;
26539                                         offtune_val =
26540                                                 (offtune_val <= 0x7) ? 0xF : 0;
26541 
26542                                         mod_radio_reg(pi,
26543                                                       RADIO_2056_RX_LNAG_TUNE |
26544                                                       RADIO_2056_RX1, 0xF0,
26545                                                       (offtune_val << 8));
26546                                 }
26547 
26548                                 write_radio_reg(pi,
26549                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26550                                                 RADIO_2056_TX0, 0x6);
26551                                 write_radio_reg(pi,
26552                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26553                                                 RADIO_2056_RX1, 0x6);
26554                         }
26555                 }
26556         }
26557 }
26558 
26559 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26560 {
26561         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26562                 if (rx_core == PHY_CORE_0) {
26563                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26564                                 write_radio_reg(
26565                                         pi,
26566                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26567                                         pi->
26568                                         tx_rx_cal_radio_saveregs[0]);
26569                                 write_radio_reg(
26570                                         pi,
26571                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26572                                         pi->
26573                                         tx_rx_cal_radio_saveregs[1]);
26574 
26575                         } else {
26576                                 write_radio_reg(
26577                                         pi,
26578                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26579                                         pi->
26580                                         tx_rx_cal_radio_saveregs[0]);
26581                                 write_radio_reg(
26582                                         pi,
26583                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26584                                         pi->
26585                                         tx_rx_cal_radio_saveregs[1]);
26586                         }
26587 
26588                 } else {
26589                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26590                                 write_radio_reg(
26591                                         pi,
26592                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26593                                         pi->
26594                                         tx_rx_cal_radio_saveregs[0]);
26595                                 write_radio_reg(
26596                                         pi,
26597                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26598                                         pi->
26599                                         tx_rx_cal_radio_saveregs[1]);
26600 
26601                         } else {
26602                                 write_radio_reg(
26603                                         pi,
26604                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26605                                         pi->
26606                                         tx_rx_cal_radio_saveregs[0]);
26607                                 write_radio_reg(
26608                                         pi,
26609                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26610                                         pi->
26611                                         tx_rx_cal_radio_saveregs[1]);
26612                         }
26613                 }
26614 
26615         } else {
26616                 if (rx_core == PHY_CORE_0) {
26617                         write_radio_reg(pi,
26618                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26619                                         RADIO_2056_TX1,
26620                                         pi->tx_rx_cal_radio_saveregs[0]);
26621 
26622                         write_radio_reg(pi,
26623                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26624                                         RADIO_2056_RX0,
26625                                         pi->tx_rx_cal_radio_saveregs[1]);
26626 
26627                         if (pi->pubpi.radiorev >= 5) {
26628                                 write_radio_reg(pi,
26629                                                 RADIO_2056_RX_RXSPARE2 |
26630                                                 RADIO_2056_RX0,
26631                                                 pi->
26632                                                 tx_rx_cal_radio_saveregs[2]);
26633 
26634                                 write_radio_reg(pi,
26635                                                 RADIO_2056_TX_TXSPARE2 |
26636                                                 RADIO_2056_TX1,
26637                                                 pi->
26638                                                 tx_rx_cal_radio_saveregs[3]);
26639                         }
26640 
26641                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26642                                 if (pi->pubpi.radiorev >= 5)
26643                                         write_radio_reg(
26644                                                 pi,
26645                                                 RADIO_2056_RX_LNAA_MASTER
26646                                                 | RADIO_2056_RX0,
26647                                                 pi->
26648                                                 tx_rx_cal_radio_saveregs
26649                                                 [4]);
26650                                 else
26651                                         write_radio_reg(
26652                                                 pi,
26653                                                 RADIO_2056_RX_LNAA_TUNE
26654                                                 | RADIO_2056_RX0,
26655                                                 pi->
26656                                                 tx_rx_cal_radio_saveregs
26657                                                 [4]);
26658                         } else {
26659                                 if (pi->pubpi.radiorev >= 5)
26660                                         write_radio_reg(
26661                                                 pi,
26662                                                 RADIO_2056_RX_LNAG_MASTER
26663                                                 | RADIO_2056_RX0,
26664                                                 pi->
26665                                                 tx_rx_cal_radio_saveregs
26666                                                 [4]);
26667                                 else
26668                                         write_radio_reg(
26669                                                 pi,
26670                                                 RADIO_2056_RX_LNAG_TUNE
26671                                                 | RADIO_2056_RX0,
26672                                                 pi->
26673                                                 tx_rx_cal_radio_saveregs
26674                                                 [4]);
26675                         }
26676 
26677                 } else {
26678                         write_radio_reg(pi,
26679                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26680                                         RADIO_2056_TX0,
26681                                         pi->tx_rx_cal_radio_saveregs[0]);
26682 
26683                         write_radio_reg(pi,
26684                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26685                                         RADIO_2056_RX1,
26686                                         pi->tx_rx_cal_radio_saveregs[1]);
26687 
26688                         if (pi->pubpi.radiorev >= 5) {
26689                                 write_radio_reg(pi,
26690                                                 RADIO_2056_RX_RXSPARE2 |
26691                                                 RADIO_2056_RX1,
26692                                                 pi->
26693                                                 tx_rx_cal_radio_saveregs[2]);
26694 
26695                                 write_radio_reg(pi,
26696                                                 RADIO_2056_TX_TXSPARE2 |
26697                                                 RADIO_2056_TX0,
26698                                                 pi->
26699                                                 tx_rx_cal_radio_saveregs[3]);
26700                         }
26701 
26702                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26703                                 if (pi->pubpi.radiorev >= 5)
26704                                         write_radio_reg(
26705                                                 pi,
26706                                                 RADIO_2056_RX_LNAA_MASTER
26707                                                 | RADIO_2056_RX1,
26708                                                 pi->
26709                                                 tx_rx_cal_radio_saveregs
26710                                                 [4]);
26711                                 else
26712                                         write_radio_reg(
26713                                                 pi,
26714                                                 RADIO_2056_RX_LNAA_TUNE
26715                                                 | RADIO_2056_RX1,
26716                                                 pi->
26717                                                 tx_rx_cal_radio_saveregs
26718                                                 [4]);
26719                         } else {
26720                                 if (pi->pubpi.radiorev >= 5)
26721                                         write_radio_reg(
26722                                                 pi,
26723                                                 RADIO_2056_RX_LNAG_MASTER
26724                                                 | RADIO_2056_RX1,
26725                                                 pi->
26726                                                 tx_rx_cal_radio_saveregs
26727                                                 [4]);
26728                                 else
26729                                         write_radio_reg(
26730                                                 pi,
26731                                                 RADIO_2056_RX_LNAG_TUNE
26732                                                 | RADIO_2056_RX1,
26733                                                 pi->
26734                                                 tx_rx_cal_radio_saveregs
26735                                                 [4]);
26736                         }
26737                 }
26738         }
26739 }
26740 
26741 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26742 {
26743         u8 tx_core;
26744         u16 rx_antval, tx_antval;
26745 
26746         if (NREV_GE(pi->pubpi.phy_rev, 7))
26747                 tx_core = rx_core;
26748         else
26749                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26750 
26751         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26752         pi->tx_rx_cal_phy_saveregs[1] =
26753                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26754         pi->tx_rx_cal_phy_saveregs[2] =
26755                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26756         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26757         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26758         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26759         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26760         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26761         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26762         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26763                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26764                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26765                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26766                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26767         }
26768 
26769         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26770         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26771         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26772                     0x29b, (0x1 << 0), (0) << 0);
26773 
26774         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26775                     0x29b, (0x1 << 0), (0) << 0);
26776 
26777         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26778 
26779                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26780 
26781                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26782 
26783         } else {
26784 
26785                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26786                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26787                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26788                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26789         }
26790 
26791         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26792         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26793                     (0x1 << 2), (0x1 << 2));
26794         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26795                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26796                             (0x1 << 0) | (0x1 << 1), 0);
26797                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26798                             0x8f : 0xa5,
26799                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26800         }
26801 
26802         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26803                                          RADIO_MIMO_CORESEL_CORE1 |
26804                                          RADIO_MIMO_CORESEL_CORE2);
26805 
26806         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26807                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26808                                                   0, 0, 0,
26809                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26810                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26811                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26812                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26813                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26814                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26815                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26816                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26817                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26818                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26819                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26820                 if (CHSPEC_IS40(pi->radio_chanspec))
26821                         wlc_phy_rfctrl_override_nphy_rev7(
26822                                 pi,
26823                                 (0x1 << 7),
26824                                 2, 0, 0,
26825                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26826                 else
26827                         wlc_phy_rfctrl_override_nphy_rev7(
26828                                 pi,
26829                                 (0x1 << 7),
26830                                 0, 0, 0,
26831                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26832 
26833                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26834                                                   0, 0, 0,
26835                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26836                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26837                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26838         } else {
26839                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26840         }
26841 
26842         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26843 
26844         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26845 
26846                 wlc_phy_rfctrlintc_override_nphy(pi,
26847                                                  NPHY_RfctrlIntc_override_TRSW,
26848                                                  0x1, rx_core + 1);
26849         } else {
26850 
26851                 if (rx_core == PHY_CORE_0) {
26852                         rx_antval = 0x1;
26853                         tx_antval = 0x8;
26854                 } else {
26855                         rx_antval = 0x4;
26856                         tx_antval = 0x2;
26857                 }
26858 
26859                 wlc_phy_rfctrlintc_override_nphy(pi,
26860                                                  NPHY_RfctrlIntc_override_TRSW,
26861                                                  rx_antval, rx_core + 1);
26862                 wlc_phy_rfctrlintc_override_nphy(pi,
26863                                                  NPHY_RfctrlIntc_override_TRSW,
26864                                                  tx_antval, tx_core + 1);
26865         }
26866 }
26867 
26868 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26869 {
26870 
26871         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26872         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26873                       pi->tx_rx_cal_phy_saveregs[1]);
26874         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26875                       pi->tx_rx_cal_phy_saveregs[2]);
26876         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26877         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26878 
26879         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26880         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26881         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26882         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26883         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26884                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26885                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26886                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26887                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26888         }
26889 
26890         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26891         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26892 }
26893 
26894 static void
26895 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26896                                  u16 *rxgain, u8 cal_type)
26897 {
26898 
26899         u16 num_samps;
26900         struct phy_iq_est est[PHY_CORE_MAX];
26901         u8 tx_core;
26902         struct nphy_iq_comp save_comp, zero_comp;
26903         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26904             thresh_pwr = 10000;
26905         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26906         bool gainctrl_done = false;
26907         u8 mix_tia_gain = 3;
26908         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26909         s8 curr_gaintbl_index = 3;
26910         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26911         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26912         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26913         int fine_gain_idx;
26914         s8 txpwrindex;
26915         u16 nphy_rxcal_txgain[2];
26916 
26917         if (NREV_GE(pi->pubpi.phy_rev, 7))
26918                 tx_core = rx_core;
26919         else
26920                 tx_core = 1 - rx_core;
26921 
26922         num_samps = 1024;
26923         desired_log2_pwr = 13;
26924 
26925         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26926         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26927         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26928 
26929         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26930                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26931                         mix_tia_gain = 3;
26932                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26933                         mix_tia_gain = 4;
26934                 else
26935                         mix_tia_gain = 6;
26936                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26937                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26938                 else
26939                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26940         } else {
26941                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26942                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26943                 else
26944                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26945         }
26946 
26947         do {
26948 
26949                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26950                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26951                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26952                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26953                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26954                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26955                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26956 
26957                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26958                         wlc_phy_rfctrl_override_1tomany_nphy(
26959                                 pi,
26960                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26961                                 ((lpf_biq1 << 12) |
26962                                  (lpf_biq0 << 8) |
26963                                  (mix_tia_gain << 4) | (lna2 << 2)
26964                                  | lna1), 0x3, 0);
26965                 else
26966                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26967                                                      ((hpvga << 12) |
26968                                                       (lpf_biq1 << 10) |
26969                                                       (lpf_biq0 << 8) |
26970                                                       (mix_tia_gain << 4) |
26971                                                       (lna2 << 2) | lna1), 0x3,
26972                                                      0);
26973 
26974                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26975 
26976                 if (txpwrindex == -1) {
26977                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26978                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26979                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26980                                                  2, 0x110, 16,
26981                                                  nphy_rxcal_txgain);
26982                 } else {
26983                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26984                                                  false);
26985                 }
26986 
26987                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26988                                      NPHY_RXCAL_TONEFREQ_40MHz :
26989                                      NPHY_RXCAL_TONEFREQ_20MHz,
26990                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26991 
26992                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26993                 i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26994                 q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26995                 curr_pwr = i_pwr + q_pwr;
26996 
26997                 switch (gainctrl_dirn) {
26998                 case NPHY_RXCAL_GAIN_INIT:
26999                         if (curr_pwr > thresh_pwr) {
27000                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27001                                 prev_gaintbl_index = curr_gaintbl_index;
27002                                 curr_gaintbl_index--;
27003                         } else {
27004                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27005                                 prev_gaintbl_index = curr_gaintbl_index;
27006                                 curr_gaintbl_index++;
27007                         }
27008                         break;
27009 
27010                 case NPHY_RXCAL_GAIN_UP:
27011                         if (curr_pwr > thresh_pwr) {
27012                                 gainctrl_done = true;
27013                                 optim_pwr = prev_pwr;
27014                                 optim_gaintbl_index = prev_gaintbl_index;
27015                         } else {
27016                                 prev_gaintbl_index = curr_gaintbl_index;
27017                                 curr_gaintbl_index++;
27018                         }
27019                         break;
27020 
27021                 case NPHY_RXCAL_GAIN_DOWN:
27022                         if (curr_pwr > thresh_pwr) {
27023                                 prev_gaintbl_index = curr_gaintbl_index;
27024                                 curr_gaintbl_index--;
27025                         } else {
27026                                 gainctrl_done = true;
27027                                 optim_pwr = curr_pwr;
27028                                 optim_gaintbl_index = curr_gaintbl_index;
27029                         }
27030                         break;
27031 
27032                 default:
27033                         break;
27034                 }
27035 
27036                 if ((curr_gaintbl_index < 0) ||
27037                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27038                         gainctrl_done = true;
27039                         optim_pwr = curr_pwr;
27040                         optim_gaintbl_index = prev_gaintbl_index;
27041                 } else {
27042                         prev_pwr = curr_pwr;
27043                 }
27044 
27045                 wlc_phy_stopplayback_nphy(pi);
27046         } while (!gainctrl_done);
27047 
27048         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27049         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27050         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27051         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27052         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27053         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27054 
27055         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27056         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27057 
27058         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27059                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27060 
27061                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27062                         lpf_biq1 = 10 - lpf_biq0;
27063                 else
27064                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27065 
27066                 wlc_phy_rfctrl_override_1tomany_nphy(
27067                         pi,
27068                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27069                         ((lpf_biq1 << 12) |
27070                          (lpf_biq0 << 8) |
27071                          (mix_tia_gain << 4) |
27072                          (lna2 << 2) | lna1), 0x3,
27073                         0);
27074         } else {
27075                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27076                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27077                                              ((hpvga << 12) |
27078                                               (lpf_biq1 << 10) |
27079                                               (lpf_biq0 << 8) |
27080                                               (mix_tia_gain << 4) |
27081                                               (lna2 << 2) |
27082                                               lna1), 0x3, 0);
27083         }
27084 
27085         if (rxgain != NULL) {
27086                 *rxgain++ = lna1;
27087                 *rxgain++ = lna2;
27088                 *rxgain++ = mix_tia_gain;
27089                 *rxgain++ = lpf_biq0;
27090                 *rxgain++ = lpf_biq1;
27091                 *rxgain = hpvga;
27092         }
27093 
27094         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27095 }
27096 
27097 static void
27098 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27099                             u8 cal_type)
27100 {
27101         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27102 }
27103 
27104 static u8
27105 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27106 {
27107         u32 target_bws[2] = { 9500, 21000 };
27108         u32 ref_tones[2] = { 3000, 6000 };
27109         u32 target_bw, ref_tone;
27110 
27111         u32 target_pwr_ratios[2] = { 28606, 18468 };
27112         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27113 
27114         u16 start_rccal_ovr_val = 128;
27115         u16 txlpf_rccal_lpc_ovr_val = 128;
27116         u16 rxlpf_rccal_hpc_ovr_val = 159;
27117 
27118         u16 orig_txlpf_rccal_lpc_ovr_val;
27119         u16 orig_rxlpf_rccal_hpc_ovr_val;
27120         u16 radio_addr_offset_rx;
27121         u16 radio_addr_offset_tx;
27122         u16 orig_dcBypass;
27123         u16 orig_RxStrnFilt40Num[6];
27124         u16 orig_RxStrnFilt40Den[4];
27125         u16 orig_rfctrloverride[2];
27126         u16 orig_rfctrlauxreg[2];
27127         u16 orig_rfctrlrssiothers;
27128         u16 tx_lpf_bw = 4;
27129 
27130         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27131         u16 lpf_hpc = 7, hpvga_hpc = 7;
27132 
27133         s8 rccal_stepsize;
27134         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27135         u32 ref_iq_vals = 0, target_iq_vals = 0;
27136         u16 num_samps, log_num_samps = 10;
27137         struct phy_iq_est est[PHY_CORE_MAX];
27138 
27139         if (NREV_GE(pi->pubpi.phy_rev, 7))
27140                 return 0;
27141 
27142         num_samps = (1 << log_num_samps);
27143 
27144         if (CHSPEC_IS40(pi->radio_chanspec)) {
27145                 target_bw = target_bws[1];
27146                 target_pwr_ratio = target_pwr_ratios[1];
27147                 ref_tone = ref_tones[1];
27148                 rx_lpf_bw = rx_lpf_bws[1];
27149         } else {
27150                 target_bw = target_bws[0];
27151                 target_pwr_ratio = target_pwr_ratios[0];
27152                 ref_tone = ref_tones[0];
27153                 rx_lpf_bw = rx_lpf_bws[0];
27154         }
27155 
27156         if (core_idx == 0) {
27157                 radio_addr_offset_rx = RADIO_2056_RX0;
27158                 radio_addr_offset_tx =
27159                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27160         } else {
27161                 radio_addr_offset_rx = RADIO_2056_RX1;
27162                 radio_addr_offset_tx =
27163                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27164         }
27165 
27166         orig_txlpf_rccal_lpc_ovr_val =
27167                 read_radio_reg(pi,
27168                                (RADIO_2056_TX_TXLPF_RCCAL |
27169                                 radio_addr_offset_tx));
27170         orig_rxlpf_rccal_hpc_ovr_val =
27171                 read_radio_reg(pi,
27172                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27173                                 radio_addr_offset_rx));
27174 
27175         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27176 
27177         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27178         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27179         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27180         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27181         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27182         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27183         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27184         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27185         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27186         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27187 
27188         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27189         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27190         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27191         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27192         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27193 
27194         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27195                         txlpf_rccal_lpc_ovr_val);
27196 
27197         write_radio_reg(pi,
27198                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27199                         rxlpf_rccal_hpc_ovr_val);
27200 
27201         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27202 
27203         write_phy_reg(pi, 0x267, 0x02d4);
27204         write_phy_reg(pi, 0x268, 0x0000);
27205         write_phy_reg(pi, 0x269, 0x0000);
27206         write_phy_reg(pi, 0x26a, 0x0000);
27207         write_phy_reg(pi, 0x26b, 0x0000);
27208         write_phy_reg(pi, 0x26c, 0x02d4);
27209         write_phy_reg(pi, 0x26d, 0x0000);
27210         write_phy_reg(pi, 0x26e, 0x0000);
27211         write_phy_reg(pi, 0x26f, 0x0000);
27212         write_phy_reg(pi, 0x270, 0x0000);
27213 
27214         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27215         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27216         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27217         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27218 
27219         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27220                     (0x7 << 10), (tx_lpf_bw << 10));
27221         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27222                     (0x7 << 0), (hpvga_hpc << 0));
27223         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27224                     (0x7 << 4), (lpf_hpc << 4));
27225         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27226                     (0x7 << 8), (rx_lpf_bw << 8));
27227 
27228         rccal_stepsize = 16;
27229         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27230 
27231         while (rccal_stepsize >= 0) {
27232                 write_radio_reg(pi,
27233                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27234                                  radio_addr_offset_rx), rccal_val);
27235 
27236                 if (rccal_stepsize == 16) {
27237 
27238                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27239                                              0, 1, false);
27240                         udelay(2);
27241 
27242                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27243 
27244                         if (core_idx == 0)
27245                                 ref_iq_vals =
27246                                         max_t(u32, (est[0].i_pwr +
27247                                                     est[0].q_pwr) >>
27248                                               (log_num_samps + 1),
27249                                               1);
27250                         else
27251                                 ref_iq_vals =
27252                                         max_t(u32, (est[1].i_pwr +
27253                                                     est[1].q_pwr) >>
27254                                               (log_num_samps + 1),
27255                                               1);
27256 
27257                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27258                                              0, 1, false);
27259                         udelay(2);
27260                 }
27261 
27262                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27263 
27264                 if (core_idx == 0)
27265                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27266                                          (log_num_samps + 1);
27267                 else
27268                         target_iq_vals =
27269                                 (est[1].i_pwr +
27270                                  est[1].q_pwr) >> (log_num_samps + 1);
27271 
27272                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27273 
27274                 if (rccal_stepsize == 0)
27275                         rccal_stepsize--;
27276                 else if (rccal_stepsize == 1) {
27277                         last_rccal_val = rccal_val;
27278                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27279                         last_pwr_ratio = pwr_ratio;
27280                         rccal_stepsize--;
27281                 } else {
27282                         rccal_stepsize = (rccal_stepsize >> 1);
27283                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27284                                       rccal_stepsize : (-rccal_stepsize));
27285                 }
27286 
27287                 if (rccal_stepsize == -1) {
27288                         best_rccal_val =
27289                                 (abs((int)last_pwr_ratio -
27290                                      (int)target_pwr_ratio) <
27291                                  abs((int)pwr_ratio -
27292                                      (int)target_pwr_ratio)) ? last_rccal_val :
27293                                 rccal_val;
27294 
27295                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27296                                 if ((best_rccal_val > 140)
27297                                     || (best_rccal_val < 135))
27298                                         best_rccal_val = 138;
27299                         } else {
27300                                 if ((best_rccal_val > 142)
27301                                     || (best_rccal_val < 137))
27302                                         best_rccal_val = 140;
27303                         }
27304 
27305                         write_radio_reg(pi,
27306                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27307                                          radio_addr_offset_rx), best_rccal_val);
27308                 }
27309         }
27310 
27311         wlc_phy_stopplayback_nphy(pi);
27312 
27313         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27314                         orig_txlpf_rccal_lpc_ovr_val);
27315         write_radio_reg(pi,
27316                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27317                         orig_rxlpf_rccal_hpc_ovr_val);
27318 
27319         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27320 
27321         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27322         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27323         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27324         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27325         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27326         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27327         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27328         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27329         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27330         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27331 
27332         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27333         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27334         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27335         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27336         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27337 
27338         pi->nphy_anarxlpf_adjusted = false;
27339 
27340         return best_rccal_val - 0x80;
27341 }
27342 
27343 #define WAIT_FOR_SCOPE  4000
27344 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27345                                       struct nphy_txgains target_gain,
27346                                       u8 cal_type, bool debug)
27347 {
27348         u16 orig_BBConfig;
27349         u8 core_no, rx_core;
27350         u8 best_rccal[2];
27351         u16 gain_save[2];
27352         u16 cal_gain[2];
27353         struct nphy_iqcal_params cal_params[2];
27354         u8 rxcore_state;
27355         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27356         s8 txlpf_idac;
27357         bool phyhang_avoid_state = false;
27358         bool skip_rxiqcal = false;
27359 
27360         orig_BBConfig = read_phy_reg(pi, 0x01);
27361         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27362 
27363         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27364 
27365         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27366                 phyhang_avoid_state = pi->phyhang_avoid;
27367                 pi->phyhang_avoid = false;
27368         }
27369 
27370         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27371 
27372         for (core_no = 0; core_no <= 1; core_no++) {
27373                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27374                                               &cal_params[core_no]);
27375                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27376         }
27377 
27378         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27379 
27380         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27381                 (struct brcms_phy_pub *) pi);
27382 
27383         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27384 
27385                 skip_rxiqcal =
27386                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27387 
27388                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27389 
27390                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27391 
27392                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27393 
27394                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27395 
27396                         wlc_phy_tx_tone_nphy(pi,
27397                                              (CHSPEC_IS40(
27398                                                       pi->radio_chanspec)) ?
27399                                              NPHY_RXCAL_TONEFREQ_40MHz :
27400                                              NPHY_RXCAL_TONEFREQ_20MHz,
27401                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27402                                              false);
27403 
27404                         if (debug)
27405                                 mdelay(WAIT_FOR_SCOPE);
27406 
27407                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27408                         wlc_phy_stopplayback_nphy(pi);
27409                 }
27410 
27411                 if (((cal_type == 1) || (cal_type == 2))
27412                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27413 
27414                         if (rx_core == PHY_CORE_1) {
27415 
27416                                 if (rxcore_state == 1)
27417                                         wlc_phy_rxcore_setstate_nphy(
27418                                                 (struct brcms_phy_pub *) pi, 3);
27419 
27420                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27421                                                             1);
27422 
27423                                 best_rccal[rx_core] =
27424                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27425                                 pi->nphy_rccal_value = best_rccal[rx_core];
27426 
27427                                 if (rxcore_state == 1)
27428                                         wlc_phy_rxcore_setstate_nphy(
27429                                                 (struct brcms_phy_pub *) pi,
27430                                                 rxcore_state);
27431                         }
27432                 }
27433 
27434                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27435 
27436                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27437                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27438         }
27439 
27440         if ((cal_type == 1) || (cal_type == 2)) {
27441 
27442                 best_rccal[0] = best_rccal[1];
27443                 write_radio_reg(pi,
27444                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27445                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27446 
27447                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27448                         rxlpf_rccal_hpc =
27449                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27450                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27451 
27452                         if (PHY_IPA(pi)) {
27453                                 txlpf_rccal_lpc +=
27454                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27455                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27456                                              0x0e : 0x13;
27457                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27458                                                  TXLPF_IDAC_4, txlpf_idac);
27459                         }
27460 
27461                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27462                                               0);
27463                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27464                                               0);
27465 
27466                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27467                                              ((rx_core ==
27468                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27469                                               RADIO_2056_RX1)),
27470                                         (rxlpf_rccal_hpc | 0x80));
27471 
27472                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27473                                              ((rx_core ==
27474                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27475                                               RADIO_2056_TX1)),
27476                                         (txlpf_rccal_lpc | 0x80));
27477                 }
27478         }
27479 
27480         write_phy_reg(pi, 0x01, orig_BBConfig);
27481 
27482         wlc_phy_resetcca_nphy(pi);
27483 
27484         if (NREV_GE(pi->pubpi.phy_rev, 7))
27485                 wlc_phy_rfctrl_override_1tomany_nphy(
27486                         pi,
27487                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27488                         0, 0x3, 1);
27489         else
27490                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27491 
27492         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27493 
27494         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27495                                  gain_save);
27496 
27497         if (NREV_GE(pi->pubpi.phy_rev, 4))
27498                 pi->phyhang_avoid = phyhang_avoid_state;
27499 
27500         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27501 
27502         return 0;
27503 }
27504 
27505 static int
27506 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27507                            struct nphy_txgains target_gain, bool debug)
27508 {
27509         struct phy_iq_est est[PHY_CORE_MAX];
27510         u8 core_num, rx_core, tx_core;
27511         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27512         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27513         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27514         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27515         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27516         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27517         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27518         u16 num_samps;
27519         u32 i_pwr, q_pwr, tot_pwr[3];
27520         u8 gain_pass, use_hpf_num;
27521         u16 mask, val1, val2;
27522         u16 core_no;
27523         u16 gain_save[2];
27524         u16 cal_gain[2];
27525         struct nphy_iqcal_params cal_params[2];
27526         u8 phy_bw;
27527         int bcmerror = 0;
27528         bool first_playtone = true;
27529 
27530         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27531 
27532         if (NREV_LT(pi->pubpi.phy_rev, 2))
27533                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27534 
27535         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27536 
27537         for (core_no = 0; core_no <= 1; core_no++) {
27538                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27539                                               &cal_params[core_no]);
27540                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27541         }
27542 
27543         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27544 
27545         num_samps = 1024;
27546         desired_log2_pwr = 13;
27547 
27548         for (core_num = 0; core_num < 2; core_num++) {
27549 
27550                 rx_core = core_num;
27551                 tx_core = 1 - core_num;
27552 
27553                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27554                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27555                                                 0xa6 : 0xa7);
27556                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27557                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27558                                                  0x91 : 0x92);
27559                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27560                                                  0x91 : 0x92);
27561 
27562                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27563                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27564 
27565                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27566                            ((0x1 << 1) | (0x1 << 2)));
27567                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27568 
27569                 if (((pi->nphy_rxcalparams) & 0xff000000))
27570                         write_phy_reg(pi,
27571                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27572                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27573                                         0x140 : 0x110));
27574                 else
27575                         write_phy_reg(pi,
27576                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27577                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27578                                        0x180 : 0x120));
27579 
27580                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27581                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27582                                0x114));
27583 
27584                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27585                 if (rx_core == PHY_CORE_0) {
27586                         val1 = RADIO_2055_COUPLE_RX_MASK;
27587                         val2 = RADIO_2055_COUPLE_TX_MASK;
27588                 } else {
27589                         val1 = RADIO_2055_COUPLE_TX_MASK;
27590                         val2 = RADIO_2055_COUPLE_RX_MASK;
27591                 }
27592 
27593                 if ((pi->nphy_rxcalparams & 0x10000)) {
27594                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27595                                       val1);
27596                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27597                                       val2);
27598                 }
27599 
27600                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27601 
27602                         if (debug)
27603                                 mdelay(WAIT_FOR_SCOPE);
27604 
27605                         if (gain_pass < 3) {
27606                                 curr_lna = lna_vals[gain_pass];
27607                                 curr_hpf1 = hpf1_vals[gain_pass];
27608                                 curr_hpf2 = hpf2_vals[gain_pass];
27609                         } else {
27610 
27611                                 if (tot_pwr[1] > 10000) {
27612                                         curr_lna = lna_vals[2];
27613                                         curr_hpf1 = hpf1_vals[2];
27614                                         curr_hpf2 = hpf2_vals[2];
27615                                         use_hpf_num = 1;
27616                                         curr_hpf = curr_hpf1;
27617                                         actual_log2_pwr =
27618                                                 wlc_phy_nbits(tot_pwr[2]);
27619                                 } else {
27620                                         if (tot_pwr[0] > 10000) {
27621                                                 curr_lna = lna_vals[1];
27622                                                 curr_hpf1 = hpf1_vals[1];
27623                                                 curr_hpf2 = hpf2_vals[1];
27624                                                 use_hpf_num = 1;
27625                                                 curr_hpf = curr_hpf1;
27626                                                 actual_log2_pwr =
27627                                                         wlc_phy_nbits(
27628                                                                 tot_pwr[1]);
27629                                         } else {
27630                                                 curr_lna = lna_vals[0];
27631                                                 curr_hpf1 = hpf1_vals[0];
27632                                                 curr_hpf2 = hpf2_vals[0];
27633                                                 use_hpf_num = 2;
27634                                                 curr_hpf = curr_hpf2;
27635                                                 actual_log2_pwr =
27636                                                         wlc_phy_nbits(
27637                                                                 tot_pwr[0]);
27638                                         }
27639                                 }
27640 
27641                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27642                                 curr_hpf += hpf_change;
27643                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27644                                 if (use_hpf_num == 1)
27645                                         curr_hpf1 = curr_hpf;
27646                                 else
27647                                         curr_hpf2 = curr_hpf;
27648                         }
27649 
27650                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27651                                                      ((curr_hpf2 << 8) |
27652                                                       (curr_hpf1 << 4) |
27653                                                       (curr_lna << 2)), 0x3, 0);
27654                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27655 
27656                         wlc_phy_stopplayback_nphy(pi);
27657 
27658                         if (first_playtone) {
27659                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27660                                                 (u16) (pi->nphy_rxcalparams &
27661                                                        0xffff), 0, 0, true);
27662                                 first_playtone = false;
27663                         } else {
27664                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27665                                           40 : 20;
27666                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27667                                                         0, 0, 0, true);
27668                         }
27669 
27670                         if (bcmerror == 0) {
27671                                 if (gain_pass < 3) {
27672 
27673                                         wlc_phy_rx_iq_est_nphy(pi, est,
27674                                                                num_samps, 32,
27675                                                                0);
27676                                         i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27677                                                                          num_samps);
27678                                         q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27679                                                                          num_samps);
27680                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27681                                 } else {
27682 
27683                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27684                                                                      (1 <<
27685                                                                       rx_core));
27686                                 }
27687 
27688                                 wlc_phy_stopplayback_nphy(pi);
27689                         }
27690 
27691                         if (bcmerror != 0)
27692                                 break;
27693                 }
27694 
27695                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27696                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27697 
27698                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27699                               0x92, orig_RfctrlIntcTx);
27700                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27701                               0x92, orig_RfctrlIntcRx);
27702                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27703                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27704                               0xa7, orig_AfectrlCore);
27705                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27706 
27707                 if (bcmerror != 0)
27708                         break;
27709         }
27710 
27711         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27712         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27713 
27714         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27715                                  gain_save);
27716 
27717         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27718 
27719         return bcmerror;
27720 }
27721 
27722 int
27723 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27724                       u8 cal_type, bool debug)
27725 {
27726         if (NREV_GE(pi->pubpi.phy_rev, 7))
27727                 cal_type = 0;
27728 
27729         if (NREV_GE(pi->pubpi.phy_rev, 3))
27730                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27731                                                   debug);
27732         else
27733                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27734 }
27735 
27736 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27737 {
27738         uint core;
27739         u32 txgain;
27740         u16 rad_gain, dac_gain, bbmult, m1m2;
27741         u8 txpi[2], chan_freq_range;
27742         s32 rfpwr_offset;
27743 
27744         if (pi->phyhang_avoid)
27745                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27746 
27747         if (pi->sh->sromrev < 4) {
27748                 txpi[0] = txpi[1] = 72;
27749         } else {
27750 
27751                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27752                 switch (chan_freq_range) {
27753                 case WL_CHAN_FREQ_RANGE_2G:
27754                 case WL_CHAN_FREQ_RANGE_5GL:
27755                 case WL_CHAN_FREQ_RANGE_5GM:
27756                 case WL_CHAN_FREQ_RANGE_5GH:
27757                         txpi[0] = 0;
27758                         txpi[1] = 0;
27759                         break;
27760                 default:
27761                         txpi[0] = txpi[1] = 91;
27762                         break;
27763                 }
27764         }
27765 
27766         if (NREV_GE(pi->pubpi.phy_rev, 7))
27767                 txpi[0] = txpi[1] = 30;
27768         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27769                 txpi[0] = txpi[1] = 40;
27770 
27771         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27772 
27773                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27774                     (txpi[1] < 40) || (txpi[1] > 100))
27775                         txpi[0] = txpi[1] = 91;
27776         }
27777 
27778         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27779         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27780         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27781         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27782 
27783         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27784                 uint phyrev = pi->pubpi.phy_rev;
27785 
27786                 if (NREV_GE(phyrev, 3)) {
27787                         if (PHY_IPA(pi)) {
27788                                 u32 *tx_gaintbl =
27789                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
27790                                 txgain = tx_gaintbl[txpi[core]];
27791                         } else {
27792                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27793                                         if (NREV_IS(phyrev, 3)) {
27794                                                 txgain =
27795                                                       nphy_tpc_5GHz_txgain_rev3
27796                                                                    [txpi[core]];
27797                                         } else if (NREV_IS(phyrev, 4)) {
27798                                                 txgain = (
27799                                                   pi->srom_fem5g.extpagain ==
27800                                                   3) ?
27801                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
27802                                                  [txpi[core]] :
27803                                                  nphy_tpc_5GHz_txgain_rev4
27804                                                  [txpi[core]];
27805                                         } else {
27806                                                 txgain =
27807                                                       nphy_tpc_5GHz_txgain_rev5
27808                                                                    [txpi[core]];
27809                                         }
27810                                 } else {
27811                                         if (NREV_GE(phyrev, 5) &&
27812                                             (pi->srom_fem2g.extpagain == 3)) {
27813                                                 txgain =
27814                                                         nphy_tpc_txgain_HiPwrEPA
27815                                                         [txpi[core]];
27816                                         } else {
27817                                                 txgain = nphy_tpc_txgain_rev3
27818                                                          [txpi[core]];
27819                                         }
27820                                 }
27821                         }
27822                 } else {
27823                         txgain = nphy_tpc_txgain[txpi[core]];
27824                 }
27825 
27826                 if (NREV_GE(phyrev, 3))
27827                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27828                 else
27829                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27830 
27831                 if (NREV_GE(phyrev, 7))
27832                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27833                 else
27834                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27835 
27836                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27837 
27838                 if (NREV_GE(phyrev, 3))
27839                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27840                                          0xa5), (0x1 << 8), (0x1 << 8));
27841                 else
27842                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27843 
27844                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27845 
27846                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27847                                          &rad_gain);
27848 
27849                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27850                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27851                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27852                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27853 
27854                 if (PHY_IPA(pi)) {
27855                         wlc_phy_table_read_nphy(pi,
27856                                                 (core ==
27857                                                  PHY_CORE_0 ?
27858                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27859                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27860                                                 576 + txpi[core], 32,
27861                                                 &rfpwr_offset);
27862 
27863                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27864                                     0x29b, (0x1ff << 4),
27865                                     ((s16) rfpwr_offset) << 4);
27866 
27867                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27868                                     0x29b, (0x1 << 2), (1) << 2);
27869 
27870                 }
27871         }
27872 
27873         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27874 
27875         if (pi->phyhang_avoid)
27876                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27877 }
27878 
27879 static void
27880 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27881                                 u8 tmp_max_pwr, u8 rate_start,
27882                                 u8 rate_end)
27883 {
27884         u8 rate;
27885         u8 word_num, nibble_num;
27886         u8 tmp_nibble;
27887 
27888         for (rate = rate_start; rate <= rate_end; rate++) {
27889                 word_num = (rate - rate_start) >> 2;
27890                 nibble_num = (rate - rate_start) & 0x3;
27891                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27892 
27893                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27894         }
27895 }
27896 
27897 static void
27898 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27899                             u8 rate_start, u8 rate_end)
27900 {
27901         u8 rate;
27902 
27903         for (rate = rate_start; rate <= rate_end; rate++)
27904                 srom_max[rate] -= 2 * pwr_offset;
27905 }
27906 
27907 void
27908 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27909                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27910 {
27911         u8 rate1, rate2;
27912 
27913         rate2 = rate_ofdm_start;
27914         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27915                 power[rate1] = power[rate2];
27916                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27917         }
27918         power[rate_mcs_end] = power[rate_mcs_end - 1];
27919 }
27920 
27921 void
27922 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27923                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27924 {
27925         u8 rate1, rate2;
27926 
27927         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27928              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27929                 power[rate1] = power[rate2];
27930                 if (rate1 == rate_ofdm_start)
27931                         power[++rate1] = power[rate2];
27932         }
27933 }
27934 
27935 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27936 {
27937         uint rate1, rate2, band_num;
27938         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27939         u8 tmp_max_pwr = 0;
27940         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27941         u8 *tx_srom_max_rate = NULL;
27942 
27943         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27944              band_num++) {
27945                 switch (band_num) {
27946                 case 0:
27947 
27948                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27949                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27950 
27951                         pwr_offsets1[0] = pi->cck2gpo;
27952                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27953                                                         pwr_offsets1,
27954                                                         tmp_max_pwr,
27955                                                         TXP_FIRST_CCK,
27956                                                         TXP_LAST_CCK);
27957 
27958                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27959                         pwr_offsets1[1] =
27960                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27961 
27962                         pwr_offsets2 = pi->mcs2gpo;
27963 
27964                         tmp_cddpo = pi->cdd2gpo;
27965                         tmp_stbcpo = pi->stbc2gpo;
27966                         tmp_bw40po = pi->bw402gpo;
27967 
27968                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27969                         break;
27970                 case 1:
27971 
27972                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27973                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27974 
27975                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27976                         pwr_offsets1[1] =
27977                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27978 
27979                         pwr_offsets2 = pi->mcs5gpo;
27980 
27981                         tmp_cddpo = pi->cdd5gpo;
27982                         tmp_stbcpo = pi->stbc5gpo;
27983                         tmp_bw40po = pi->bw405gpo;
27984 
27985                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27986                         break;
27987                 case 2:
27988 
27989                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27990                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27991 
27992                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27993                         pwr_offsets1[1] =
27994                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27995 
27996                         pwr_offsets2 = pi->mcs5glpo;
27997 
27998                         tmp_cddpo = pi->cdd5glpo;
27999                         tmp_stbcpo = pi->stbc5glpo;
28000                         tmp_bw40po = pi->bw405glpo;
28001 
28002                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28003                         break;
28004                 case 3:
28005 
28006                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28007                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28008 
28009                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28010                         pwr_offsets1[1] =
28011                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28012 
28013                         pwr_offsets2 = pi->mcs5ghpo;
28014 
28015                         tmp_cddpo = pi->cdd5ghpo;
28016                         tmp_stbcpo = pi->stbc5ghpo;
28017                         tmp_bw40po = pi->bw405ghpo;
28018 
28019                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28020                         break;
28021                 }
28022 
28023                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28024                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28025                                                 TXP_LAST_OFDM);
28026 
28027                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28028                                                 TXP_FIRST_MCS_20_SISO,
28029                                                 TXP_LAST_MCS_20_SISO,
28030                                                 TXP_FIRST_OFDM);
28031 
28032                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28033                                                 tmp_max_pwr,
28034                                                 TXP_FIRST_MCS_20_CDD,
28035                                                 TXP_LAST_MCS_20_CDD);
28036 
28037                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28038                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28039                                                     TXP_FIRST_MCS_20_CDD,
28040                                                     TXP_LAST_MCS_20_CDD);
28041 
28042                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28043                                                 TXP_FIRST_OFDM_20_CDD,
28044                                                 TXP_LAST_OFDM_20_CDD,
28045                                                 TXP_FIRST_MCS_20_CDD);
28046 
28047                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28048                                                 tmp_max_pwr,
28049                                                 TXP_FIRST_MCS_20_STBC,
28050                                                 TXP_LAST_MCS_20_STBC);
28051 
28052                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28053                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28054                                                     tmp_stbcpo,
28055                                                     TXP_FIRST_MCS_20_STBC,
28056                                                     TXP_LAST_MCS_20_STBC);
28057 
28058                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28059                                                 &pwr_offsets2[2], tmp_max_pwr,
28060                                                 TXP_FIRST_MCS_20_SDM,
28061                                                 TXP_LAST_MCS_20_SDM);
28062 
28063                 if (NPHY_IS_SROM_REINTERPRET) {
28064 
28065                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28066                                                         &pwr_offsets2[4],
28067                                                         tmp_max_pwr,
28068                                                         TXP_FIRST_MCS_40_SISO,
28069                                                         TXP_LAST_MCS_40_SISO);
28070 
28071                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28072                                                         TXP_FIRST_OFDM_40_SISO,
28073                                                         TXP_LAST_OFDM_40_SISO,
28074                                                         TXP_FIRST_MCS_40_SISO);
28075 
28076                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28077                                                         &pwr_offsets2[4],
28078                                                         tmp_max_pwr,
28079                                                         TXP_FIRST_MCS_40_CDD,
28080                                                         TXP_LAST_MCS_40_CDD);
28081 
28082                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28083                                                     TXP_FIRST_MCS_40_CDD,
28084                                                     TXP_LAST_MCS_40_CDD);
28085 
28086                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28087                                                         TXP_FIRST_OFDM_40_CDD,
28088                                                         TXP_LAST_OFDM_40_CDD,
28089                                                         TXP_FIRST_MCS_40_CDD);
28090 
28091                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28092                                                         &pwr_offsets2[4],
28093                                                         tmp_max_pwr,
28094                                                         TXP_FIRST_MCS_40_STBC,
28095                                                         TXP_LAST_MCS_40_STBC);
28096 
28097                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28098                                                     tmp_stbcpo,
28099                                                     TXP_FIRST_MCS_40_STBC,
28100                                                     TXP_LAST_MCS_40_STBC);
28101 
28102                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28103                                                         &pwr_offsets2[6],
28104                                                         tmp_max_pwr,
28105                                                         TXP_FIRST_MCS_40_SDM,
28106                                                         TXP_LAST_MCS_40_SDM);
28107                 } else {
28108 
28109                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28110                                      TXP_FIRST_OFDM;
28111                              rate1 <= TXP_LAST_MCS_40_SDM;
28112                              rate1++, rate2++)
28113                                 tx_srom_max_rate[rate1] =
28114                                         tx_srom_max_rate[rate2];
28115                 }
28116 
28117                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28118                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28119                                                     tmp_bw40po,
28120                                                     TXP_FIRST_OFDM_40_SISO,
28121                                                     TXP_LAST_MCS_40_SDM);
28122 
28123                 tx_srom_max_rate[TXP_MCS_32] =
28124                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28125         }
28126 
28127         return;
28128 }
28129 
28130 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28131 {
28132         u8 tx_pwr_ctrl_state;
28133         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28134         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28135 
28136         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28137 
28138         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28139                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28140                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28141                 udelay(1);
28142         }
28143 
28144         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28145 
28146         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28147                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28148 }
28149 
28150 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28151 {
28152         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28153                                             (0x1 << 14) | (0x1 << 13));
28154 }
28155 
28156 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28157 {
28158         u16 tmp;
28159         u16 pwr_idx[2];
28160 
28161         if (wlc_phy_txpwr_ison_nphy(pi)) {
28162                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28163                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28164 
28165                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28166         } else {
28167                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28168                         << 8) |
28169                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28170         }
28171 
28172         return tmp;
28173 }
28174 
28175 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28176 {
28177         if (PHY_IPA(pi)
28178             && (pi->nphy_force_papd_cal
28179                 || (wlc_phy_txpwr_ison_nphy(pi)
28180                     &&
28181                     (((u32)
28182                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28183                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28184                      || ((u32)
28185                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28186                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28187                 wlc_phy_a4(pi, true);
28188 }
28189 
28190 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28191 {
28192         u16 mask = 0, val = 0, ishw = 0;
28193         u8 ctr;
28194         uint core;
28195         u32 tbl_offset;
28196         u32 tbl_len;
28197         u16 regval[84];
28198 
28199         if (pi->phyhang_avoid)
28200                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28201 
28202         switch (ctrl_type) {
28203         case PHY_TPC_HW_OFF:
28204         case PHY_TPC_HW_ON:
28205                 pi->nphy_txpwrctrl = ctrl_type;
28206                 break;
28207         default:
28208                 break;
28209         }
28210 
28211         if (ctrl_type == PHY_TPC_HW_OFF) {
28212                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28213 
28214                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28215                                 for (core = 0; core < pi->pubpi.phy_corenum;
28216                                      core++)
28217                                         pi->nphy_txpwr_idx[core] =
28218                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28219                                                         pi,
28220                                                         (u8) core);
28221                         }
28222 
28223                 }
28224 
28225                 tbl_len = 84;
28226                 tbl_offset = 64;
28227                 for (ctr = 0; ctr < tbl_len; ctr++)
28228                         regval[ctr] = 0;
28229                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28230                                          regval);
28231                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28232                                          regval);
28233 
28234                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28235                         and_phy_reg(pi, 0x1e7,
28236                                     (u16) (~((0x1 << 15) |
28237                                              (0x1 << 14) | (0x1 << 13))));
28238                 else
28239                         and_phy_reg(pi, 0x1e7,
28240                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28241 
28242                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28243                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28244                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28245                 } else {
28246                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28247                 }
28248 
28249                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28250                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28251                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28252                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28253 
28254                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28255                     pi->bw == WL_CHANSPEC_BW_40)
28256                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28257                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28258 
28259         } else {
28260 
28261                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28262                                          8, pi->adj_pwr_tbl_nphy);
28263                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28264                                          8, pi->adj_pwr_tbl_nphy);
28265 
28266                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28267                 mask = (0x1 << 14) | (0x1 << 13);
28268                 val = (ishw << 14) | (ishw << 13);
28269 
28270                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28271                         mask |= (0x1 << 15);
28272                         val |= (ishw << 15);
28273                 }
28274 
28275                 mod_phy_reg(pi, 0x1e7, mask, val);
28276 
28277                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28278                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28279                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28280                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28281                         } else {
28282                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28283                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28284                                         mod_phy_reg(pi, 0x222,
28285                                                     (0xff << 0), 0x64);
28286                         }
28287                 }
28288 
28289                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28290                         if ((pi->nphy_txpwr_idx[0] != 128)
28291                             && (pi->nphy_txpwr_idx[1] != 128))
28292                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28293                                                                pi->
28294                                                                nphy_txpwr_idx
28295                                                                [0],
28296                                                                pi->
28297                                                                nphy_txpwr_idx
28298                                                                [1]);
28299                 }
28300 
28301                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28302                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28303                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28304                 } else {
28305                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28306                 }
28307 
28308                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28309                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28310                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28311                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28312 
28313                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28314                     pi->bw == WL_CHANSPEC_BW_40)
28315                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28316                                        0x0, BRCM_BAND_ALL);
28317 
28318                 if (PHY_IPA(pi)) {
28319                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28320                                     0x29b, (0x1 << 2), (0) << 2);
28321 
28322                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28323                                     0x29b, (0x1 << 2), (0) << 2);
28324 
28325                 }
28326 
28327         }
28328 
28329         if (pi->phyhang_avoid)
28330                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28331 }
28332 
28333 void
28334 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28335                          bool restore_cals)
28336 {
28337         u8 core, txpwrctl_tbl;
28338         u16 tx_ind0, iq_ind0, lo_ind0;
28339         u16 m1m2;
28340         u32 txgain;
28341         u16 rad_gain, dac_gain;
28342         u8 bbmult;
28343         u32 iqcomp;
28344         u16 iqcomp_a, iqcomp_b;
28345         u32 locomp;
28346         u16 tmpval;
28347         u8 tx_pwr_ctrl_state;
28348         s32 rfpwr_offset;
28349         u16 regval[2];
28350 
28351         if (pi->phyhang_avoid)
28352                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28353 
28354         tx_ind0 = 192;
28355         iq_ind0 = 320;
28356         lo_ind0 = 448;
28357 
28358         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28359 
28360                 if ((core_mask & (1 << core)) == 0)
28361                         continue;
28362 
28363                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28364 
28365                 if (txpwrindex < 0) {
28366                         if (pi->nphy_txpwrindex[core].index < 0)
28367                                 continue;
28368 
28369                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28370                                 mod_phy_reg(pi, 0x8f,
28371                                             (0x1 << 8),
28372                                             pi->nphy_txpwrindex[core].
28373                                             AfectrlOverride);
28374                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28375                                             pi->nphy_txpwrindex[core].
28376                                             AfectrlOverride);
28377                         } else {
28378                                 mod_phy_reg(pi, 0xa5,
28379                                             (0x1 << 14),
28380                                             pi->nphy_txpwrindex[core].
28381                                             AfectrlOverride);
28382                         }
28383 
28384                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28385                                       0xaa : 0xab,
28386                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28387 
28388                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28389                                                  &pi->nphy_txpwrindex[core].
28390                                                  rad_gain);
28391 
28392                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28393                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28394                         m1m2 |= ((core == PHY_CORE_0) ?
28395                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28396                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28397                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28398 
28399                         if (restore_cals) {
28400                                 wlc_phy_table_write_nphy(
28401                                         pi, 15, 2, (80 + 2 * core), 16,
28402                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28403                                 wlc_phy_table_write_nphy(
28404                                         pi, 15, 1, (85 + core), 16,
28405                                         &pi->nphy_txpwrindex[core].locomp);
28406                                 wlc_phy_table_write_nphy(
28407                                         pi, 15, 1, (93 + core), 16,
28408                                         &pi->nphy_txpwrindex[core].locomp);
28409                         }
28410 
28411                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28412 
28413                         pi->nphy_txpwrindex[core].index_internal =
28414                                 pi->nphy_txpwrindex[core].index_internal_save;
28415                 } else {
28416 
28417                         if (pi->nphy_txpwrindex[core].index < 0) {
28418 
28419                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28420                                         mod_phy_reg(pi, 0x8f,
28421                                                     (0x1 << 8),
28422                                                     pi->nphy_txpwrindex[core].
28423                                                     AfectrlOverride);
28424                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28425                                                     pi->nphy_txpwrindex[core].
28426                                                     AfectrlOverride);
28427                                 } else {
28428                                         pi->nphy_txpwrindex[core].
28429                                         AfectrlOverride =
28430                                                 read_phy_reg(pi, 0xa5);
28431                                 }
28432 
28433                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28434                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28435                                                          0xaa : 0xab);
28436 
28437                                 wlc_phy_table_read_nphy(pi, 7, 1,
28438                                                         (0x110 + core), 16,
28439                                                         &pi->
28440                                                         nphy_txpwrindex[core].
28441                                                         rad_gain);
28442 
28443                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28444                                                         &tmpval);
28445                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28446                                 tmpval &= 0xff;
28447                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28448 
28449                                 wlc_phy_table_read_nphy(pi, 15, 2,
28450                                                         (80 + 2 * core), 16,
28451                                                         &pi->
28452                                                         nphy_txpwrindex[core].
28453                                                         iqcomp_a);
28454 
28455                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28456                                                         16,
28457                                                         &pi->
28458                                                         nphy_txpwrindex[core].
28459                                                         locomp);
28460 
28461                                 pi->nphy_txpwrindex[core].index_internal_save =
28462                                         pi->nphy_txpwrindex[core].
28463                                         index_internal;
28464                         }
28465 
28466                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28467                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28468 
28469                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28470                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28471 
28472                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28473                                                 (tx_ind0 + txpwrindex), 32,
28474                                                 &txgain);
28475 
28476                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28477                                 rad_gain = (txgain >> 16) &
28478                                            ((1 << (32 - 16 + 1)) - 1);
28479                         else
28480                                 rad_gain = (txgain >> 16) &
28481                                            ((1 << (28 - 16 + 1)) - 1);
28482 
28483                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28484                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28485 
28486                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28487                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28488                                                  0xa5), (0x1 << 8), (0x1 << 8));
28489                         else
28490                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28491 
28492                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28493                                       0xaa : 0xab, dac_gain);
28494 
28495                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28496                                                  &rad_gain);
28497 
28498                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28499                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28500                         m1m2 |= ((core == PHY_CORE_0) ?
28501                                 (bbmult << 8) : (bbmult << 0));
28502 
28503                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28504 
28505                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28506                                                 (iq_ind0 + txpwrindex), 32,
28507                                                 &iqcomp);
28508                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28509                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28510 
28511                         if (restore_cals) {
28512                                 regval[0] = (u16) iqcomp_a;
28513                                 regval[1] = (u16) iqcomp_b;
28514                                 wlc_phy_table_write_nphy(pi, 15, 2,
28515                                                          (80 + 2 * core), 16,
28516                                                          regval);
28517                         }
28518 
28519                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28520                                                 (lo_ind0 + txpwrindex), 32,
28521                                                 &locomp);
28522                         if (restore_cals)
28523                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28524                                                          16, &locomp);
28525 
28526                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28527                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28528 
28529                         if (PHY_IPA(pi)) {
28530                                 wlc_phy_table_read_nphy(pi,
28531                                                 (core == PHY_CORE_0 ?
28532                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28533                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28534                                                 1, 576 + txpwrindex, 32,
28535                                                 &rfpwr_offset);
28536 
28537                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28538                                             0x29b, (0x1ff << 4),
28539                                             ((s16) rfpwr_offset) << 4);
28540 
28541                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28542                                             0x29b, (0x1 << 2), (1) << 2);
28543 
28544                         }
28545 
28546                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28547                 }
28548 
28549                 pi->nphy_txpwrindex[core].index = txpwrindex;
28550         }
28551 
28552         if (pi->phyhang_avoid)
28553                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28554 }
28555 
28556 void
28557 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28558                                    u8 txp_rate_idx)
28559 {
28560         u8 chan_freq_range;
28561 
28562         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28563         switch (chan_freq_range) {
28564         case WL_CHAN_FREQ_RANGE_2G:
28565                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28566                 break;
28567         case WL_CHAN_FREQ_RANGE_5GM:
28568                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28569                 break;
28570         case WL_CHAN_FREQ_RANGE_5GL:
28571                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28572                 break;
28573         case WL_CHAN_FREQ_RANGE_5GH:
28574                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28575                 break;
28576         default:
28577                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28578                 break;
28579         }
28580 
28581         return;
28582 }
28583 
28584 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28585 {
28586         u16 clip_off[] = { 0xffff, 0xffff };
28587 
28588         if (enable) {
28589                 if (pi->nphy_deaf_count == 0) {
28590                         pi->classifier_state =
28591                                 wlc_phy_classifier_nphy(pi, 0, 0);
28592                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28593                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28594                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28595                 }
28596 
28597                 pi->nphy_deaf_count++;
28598 
28599                 wlc_phy_resetcca_nphy(pi);
28600 
28601         } else {
28602                 pi->nphy_deaf_count--;
28603 
28604                 if (pi->nphy_deaf_count == 0) {
28605                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28606                                                 pi->classifier_state);
28607                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28608                 }
28609         }
28610 }
28611 
28612 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28613 {
28614         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28615 
28616         if (mode) {
28617                 if (pi->nphy_deaf_count == 0)
28618                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28619         } else if (pi->nphy_deaf_count > 0) {
28620                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28621         }
28622 
28623         wlapi_enable_mac(pi->sh->physhim);
28624 }

/* [<][>][^][v][top][bottom][index][help] */