1 /* 2 * Copyright 2016-2017 NXP 3 * 4 * Redistribution and use in source and binary forms, with or without modification, 5 * are permitted provided that the following conditions are met: 6 * 7 * o Redistributions of source code must retain the above copyright notice, this list 8 * of conditions and the following disclaimer. 9 * 10 * o Redistributions in binary form must reproduce the above copyright notice, this 11 * list of conditions and the following disclaimer in the documentation and/or 12 * other materials provided with the distribution. 13 * 14 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from this 16 * software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 #include "fsl_xcvr.h" 31 32 /******************************************************************************* 33 * Definitions 34 ******************************************************************************/ 35 36 /******************************************************************************* 37 * Prototypes 38 ******************************************************************************/ 39 40 /******************************************************************************* 41 * Variables 42 ******************************************************************************/ 43 44 /******************************************************************************* 45 * Code 46 ******************************************************************************/ 47 /* MODE only configuration */ 48 const xcvr_mode_config_t gfsk_bt_0p5_h_1p0_mode_config = 49 { 50 .radio_mode = GFSK_BT_0p5_h_1p0, 51 .scgc5_clock_ena_bits = SIM_SCGC5_PHYDIG_MASK | SIM_SCGC5_GEN_FSK_MASK, 52 53 /* XCVR_MISC configs */ 54 .xcvr_ctrl.mask = XCVR_CTRL_XCVR_CTRL_PROTOCOL_MASK | 55 XCVR_CTRL_XCVR_CTRL_TGT_PWR_SRC_MASK | 56 XCVR_CTRL_XCVR_CTRL_DEMOD_SEL_MASK, 57 .xcvr_ctrl.init = XCVR_CTRL_XCVR_CTRL_PROTOCOL(8) | 58 XCVR_CTRL_XCVR_CTRL_TGT_PWR_SRC(7) | 59 XCVR_CTRL_XCVR_CTRL_DEMOD_SEL(1), 60 61 /* XCVR_PHY configs */ 62 .phy_pre_ref0_init = 0xF38B5273, 63 .phy_pre_ref1_init = 0x8CEF9CE6, 64 .phy_pre_ref2_init = 0x00009D2D, 65 66 .phy_cfg1_init = XCVR_PHY_CFG1_AA_PLAYBACK(1) | 67 XCVR_PHY_CFG1_AA_OUTPUT_SEL(1) | 68 XCVR_PHY_CFG1_FSK_BIT_INVERT(0) | 69 XCVR_PHY_CFG1_BSM_EN_BLE(0) | 70 XCVR_PHY_CFG1_DEMOD_CLK_MODE(0) | 71 XCVR_PHY_CFG1_CTS_THRESH(0xb0) | 72 XCVR_PHY_CFG1_FSK_FTS_TIMEOUT(2), 73 74 .phy_el_cfg_init = XCVR_PHY_EL_CFG_EL_ENABLE(1) 75 #if !RADIO_IS_GEN_2P1 76 | XCVR_PHY_EL_CFG_EL_ZB_ENABLE(0) 77 #endif /* !RADIO_IS_GEN_2P1 */ 78 , 79 /* XCVR_RX_DIG configs */ 80 .rx_dig_ctrl_init_26mhz = XCVR_RX_DIG_RX_DIG_CTRL_RX_FSK_ZB_SEL(0) | /* Depends on protocol */ 81 XCVR_RX_DIG_RX_DIG_CTRL_RX_DC_RESID_EN(1) | /* Depends on protocol */ 82 XCVR_RX_DIG_RX_DIG_CTRL_RX_SRC_RATE(0), 83 84 .rx_dig_ctrl_init_32mhz = XCVR_RX_DIG_RX_DIG_CTRL_RX_FSK_ZB_SEL(0) | /* Depends on protocol */ 85 XCVR_RX_DIG_RX_DIG_CTRL_RX_DC_RESID_EN(1), /* Depends on protocol */ 86 87 .agc_ctrl_0_init = XCVR_RX_DIG_AGC_CTRL_0_AGC_DOWN_RSSI_THRESH(0xFF), 88 89 /* XCVR_TSM configs */ 90 #if (DATA_PADDING_EN) 91 .tsm_timing_35_init = B0(TX_DIG_EN_ASSERT + TX_DIG_EN_TX_HI_ADJ), 92 #else 93 .tsm_timing_35_init = B0(TX_DIG_EN_ASSERT), 94 #endif /* (DATA_PADDING_EN) */ 95 96 /* XCVR_TX_DIG configs */ 97 .tx_gfsk_ctrl = XCVR_TX_DIG_GFSK_CTRL_GFSK_MULTIPLY_TABLE_MANUAL(0x4000) | 98 XCVR_TX_DIG_GFSK_CTRL_GFSK_MI(3) | 99 XCVR_TX_DIG_GFSK_CTRL_GFSK_MLD(0) | 100 XCVR_TX_DIG_GFSK_CTRL_GFSK_FLD(0) | 101 XCVR_TX_DIG_GFSK_CTRL_GFSK_MOD_INDEX_SCALING(0) | 102 XCVR_TX_DIG_GFSK_CTRL_TX_IMAGE_FILTER_OVRD_EN(0) | 103 XCVR_TX_DIG_GFSK_CTRL_TX_IMAGE_FILTER_0_OVRD(0) | 104 XCVR_TX_DIG_GFSK_CTRL_TX_IMAGE_FILTER_1_OVRD(0) | 105 XCVR_TX_DIG_GFSK_CTRL_TX_IMAGE_FILTER_2_OVRD(0), 106 .tx_gfsk_coeff1_26mhz = 0, 107 .tx_gfsk_coeff2_26mhz = 0, 108 .tx_gfsk_coeff1_32mhz = 0, 109 .tx_gfsk_coeff2_32mhz = 0, 110 }; 111 112 /* MODE & DATA RATE combined configuration */ 113 const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_1mbps_config = 114 { 115 .radio_mode = GFSK_BT_0p5_h_1p0, 116 .data_rate = DR_1MBPS, 117 118 .ana_sy_ctrl2.mask = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM_MASK, 119 .ana_sy_ctrl2.init = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM(1), /* VCO KVM */ 120 .ana_rx_bba.mask = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL_MASK | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL_MASK, 121 .ana_rx_bba.init = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL(3) | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL(3), /* BBA_BW_SEL and BBA2_BW_SEL */ 122 .ana_rx_tza.mask = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL_MASK, 123 .ana_rx_tza.init = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL(3), /* TZA_BW_SEL */ 124 125 .phy_cfg2_init = XCVR_PHY_CFG2_PHY_FIFO_PRECHG(8) | 126 XCVR_PHY_CFG2_X2_DEMOD_GAIN(0xA) , 127 128 /* AGC configs */ 129 .agc_ctrl_2_init_26mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(11) | 130 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 131 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(6) | 132 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 133 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 134 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 135 .agc_ctrl_2_init_32mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(12) | 136 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 137 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(6) | 138 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 139 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 140 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 141 142 /* All constant values are represented as 16 bits, register writes will remove unused bits */ 143 .rx_chf_coeffs_26mhz.rx_chf_coef_0 = 0x0001, 144 .rx_chf_coeffs_26mhz.rx_chf_coef_1 = 0x0004, 145 .rx_chf_coeffs_26mhz.rx_chf_coef_2 = 0x0006, 146 .rx_chf_coeffs_26mhz.rx_chf_coef_3 = 0x0003, 147 .rx_chf_coeffs_26mhz.rx_chf_coef_4 = 0xFFF9, 148 .rx_chf_coeffs_26mhz.rx_chf_coef_5 = 0xFFEB, 149 .rx_chf_coeffs_26mhz.rx_chf_coef_6 = 0xFFE2, 150 .rx_chf_coeffs_26mhz.rx_chf_coef_7 = 0xFFE9, 151 .rx_chf_coeffs_26mhz.rx_chf_coef_8 = 0x0008, 152 .rx_chf_coeffs_26mhz.rx_chf_coef_9 = 0x003A, 153 .rx_chf_coeffs_26mhz.rx_chf_coef_10 = 0x006F, 154 .rx_chf_coeffs_26mhz.rx_chf_coef_11 = 0x0090, 155 156 /* 32MHz Channel Filter */ 157 .rx_chf_coeffs_32mhz.rx_chf_coef_0 = 0x0000, 158 .rx_chf_coeffs_32mhz.rx_chf_coef_1 = 0x0003, 159 .rx_chf_coeffs_32mhz.rx_chf_coef_2 = 0x0007, 160 .rx_chf_coeffs_32mhz.rx_chf_coef_3 = 0x0008, 161 .rx_chf_coeffs_32mhz.rx_chf_coef_4 = 0x0000, 162 .rx_chf_coeffs_32mhz.rx_chf_coef_5 = 0xFFF0, 163 .rx_chf_coeffs_32mhz.rx_chf_coef_6 = 0xFFE0, 164 .rx_chf_coeffs_32mhz.rx_chf_coef_7 = 0xFFE1, 165 .rx_chf_coeffs_32mhz.rx_chf_coef_8 = 0xFFFD, 166 .rx_chf_coeffs_32mhz.rx_chf_coef_9 = 0x0034, 167 .rx_chf_coeffs_32mhz.rx_chf_coef_10 = 0x0072, 168 .rx_chf_coeffs_32mhz.rx_chf_coef_11 = 0x009A, 169 170 .rx_rccal_ctrl_0 = XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_OFFSET(0) | 171 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_MANUAL(0) | 172 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_DIS(0) | 173 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_SMP_DLY(0) | 174 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_COMP_INV(0) | 175 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_OFFSET(0) | 176 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_MANUAL(0) | 177 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_DIS(0) , 178 .rx_rccal_ctrl_1 = XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_OFFSET(0) | 179 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_MANUAL(0) | 180 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_DIS(0) | 181 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_OFFSET(0) | 182 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_MANUAL(0) | 183 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_DIS(0) , 184 185 .tx_fsk_scale_26mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1627) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x09d9), 186 .tx_fsk_scale_32mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1800) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x0800), 187 }; 188 189 const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_500kbps_config = 190 { 191 .radio_mode = GFSK_BT_0p5_h_1p0, 192 .data_rate = DR_500KBPS, 193 194 .ana_sy_ctrl2.mask = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM_MASK, 195 .ana_sy_ctrl2.init = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM(0), /* VCO KVM */ 196 .ana_rx_bba.mask = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL_MASK | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL_MASK, 197 .ana_rx_bba.init = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL(5) | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL(5), /* BBA_BW_SEL and BBA2_BW_SEL */ 198 .ana_rx_tza.mask = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL_MASK, 199 .ana_rx_tza.init = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL(5), /* TZA_BW_SEL */ 200 201 .phy_cfg2_init = XCVR_PHY_CFG2_PHY_FIFO_PRECHG(8) | 202 XCVR_PHY_CFG2_X2_DEMOD_GAIN(0x8) , 203 204 /* AGC configs */ 205 .agc_ctrl_2_init_26mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(15) | 206 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 207 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(6) | 208 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 209 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 210 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 211 .agc_ctrl_2_init_32mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(18) | 212 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 213 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(6) | 214 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 215 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 216 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 217 218 /* All constant values are represented as 16 bits, register writes will remove unused bits */ 219 .rx_chf_coeffs_26mhz.rx_chf_coef_0 = 0xFFFD, 220 .rx_chf_coeffs_26mhz.rx_chf_coef_1 = 0xFFEA, 221 .rx_chf_coeffs_26mhz.rx_chf_coef_2 = 0xFFF3, 222 .rx_chf_coeffs_26mhz.rx_chf_coef_3 = 0x0021, 223 .rx_chf_coeffs_26mhz.rx_chf_coef_4 = 0x0013, 224 .rx_chf_coeffs_26mhz.rx_chf_coef_5 = 0xFFC9, 225 .rx_chf_coeffs_26mhz.rx_chf_coef_6 = 0xFFEE, 226 .rx_chf_coeffs_26mhz.rx_chf_coef_7 = 0x005E, 227 .rx_chf_coeffs_26mhz.rx_chf_coef_8 = 0x0004, 228 .rx_chf_coeffs_26mhz.rx_chf_coef_9 = 0xFF4E, 229 .rx_chf_coeffs_26mhz.rx_chf_coef_10 = 0xFFFC, 230 .rx_chf_coeffs_26mhz.rx_chf_coef_11 = 0x018F, 231 232 /* 32MHz Channel Filter */ 233 .rx_chf_coeffs_32mhz.rx_chf_coef_0 = 0x0012, 234 .rx_chf_coeffs_32mhz.rx_chf_coef_1 = 0x0011, 235 .rx_chf_coeffs_32mhz.rx_chf_coef_2 = 0xFFE1, 236 .rx_chf_coeffs_32mhz.rx_chf_coef_3 = 0xFFEE, 237 .rx_chf_coeffs_32mhz.rx_chf_coef_4 = 0x0034, 238 .rx_chf_coeffs_32mhz.rx_chf_coef_5 = 0xFFFD, 239 .rx_chf_coeffs_32mhz.rx_chf_coef_6 = 0xFFB7, 240 .rx_chf_coeffs_32mhz.rx_chf_coef_7 = 0x003B, 241 .rx_chf_coeffs_32mhz.rx_chf_coef_8 = 0x004F, 242 .rx_chf_coeffs_32mhz.rx_chf_coef_9 = 0xFF5B, 243 .rx_chf_coeffs_32mhz.rx_chf_coef_10 = 0xFFB5, 244 .rx_chf_coeffs_32mhz.rx_chf_coef_11 = 0x018B, 245 246 .rx_rccal_ctrl_0 = XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_OFFSET(0) | 247 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_MANUAL(0) | 248 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_DIS(0) | 249 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_SMP_DLY(0) | 250 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_COMP_INV(0) | 251 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_OFFSET(0) | 252 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_MANUAL(0) | 253 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_DIS(0) , 254 .rx_rccal_ctrl_1 = XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_OFFSET(0) | 255 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_MANUAL(0) | 256 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_DIS(0) | 257 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_OFFSET(0) | 258 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_MANUAL(0) | 259 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_DIS(0) , 260 261 .tx_fsk_scale_26mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1627) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x09d9), 262 .tx_fsk_scale_32mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1800) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x0800), 263 }; 264 265 const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_250kbps_config = 266 { 267 .radio_mode = GFSK_BT_0p5_h_1p0, 268 .data_rate = DR_250KBPS, 269 270 .ana_sy_ctrl2.mask = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM_MASK, 271 .ana_sy_ctrl2.init = XCVR_ANALOG_SY_CTRL_2_SY_VCO_KVM(0), /* VCO KVM */ 272 .ana_rx_bba.mask = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL_MASK | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL_MASK, 273 .ana_rx_bba.init = XCVR_ANALOG_RX_BBA_RX_BBA_BW_SEL(5) | XCVR_ANALOG_RX_BBA_RX_BBA2_BW_SEL(5), /* BBA_BW_SEL and BBA2_BW_SEL */ 274 .ana_rx_tza.mask = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL_MASK, 275 .ana_rx_tza.init = XCVR_ANALOG_RX_TZA_RX_TZA_BW_SEL(5), /* TZA_BW_SEL */ 276 277 .phy_cfg2_init = XCVR_PHY_CFG2_PHY_FIFO_PRECHG(8) | 278 XCVR_PHY_CFG2_X2_DEMOD_GAIN(0x6) , 279 280 /* AGC configs */ 281 .agc_ctrl_2_init_26mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(18) | 282 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 283 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(2) | 284 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 285 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 286 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 287 .agc_ctrl_2_init_32mhz = XCVR_RX_DIG_AGC_CTRL_2_BBA_GAIN_SETTLE_TIME(22) | 288 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_LO(5) | 289 XCVR_RX_DIG_AGC_CTRL_2_BBA_PDET_SEL_HI(6) | 290 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_LO(3) | 291 XCVR_RX_DIG_AGC_CTRL_2_TZA_PDET_SEL_HI(7) | 292 XCVR_RX_DIG_AGC_CTRL_2_AGC_FAST_EXPIRE(5), 293 294 /* All constant values are represented as 16 bits, register writes will remove unused bits */ 295 .rx_chf_coeffs_26mhz.rx_chf_coef_0 = 0xFFFE, 296 .rx_chf_coeffs_26mhz.rx_chf_coef_1 = 0x0004, 297 .rx_chf_coeffs_26mhz.rx_chf_coef_2 = 0x000C, 298 .rx_chf_coeffs_26mhz.rx_chf_coef_3 = 0x0011, 299 .rx_chf_coeffs_26mhz.rx_chf_coef_4 = 0x000B, 300 .rx_chf_coeffs_26mhz.rx_chf_coef_5 = 0xFFF8, 301 .rx_chf_coeffs_26mhz.rx_chf_coef_6 = 0xFFE0, 302 .rx_chf_coeffs_26mhz.rx_chf_coef_7 = 0xFFD7, 303 .rx_chf_coeffs_26mhz.rx_chf_coef_8 = 0xFFF0, 304 .rx_chf_coeffs_26mhz.rx_chf_coef_9 = 0x002A, 305 .rx_chf_coeffs_26mhz.rx_chf_coef_10 = 0x006F, 306 .rx_chf_coeffs_26mhz.rx_chf_coef_11 = 0x009E, 307 308 /* 32MHz Channel Filter */ 309 .rx_chf_coeffs_32mhz.rx_chf_coef_0 = 0xFFFA, 310 .rx_chf_coeffs_32mhz.rx_chf_coef_1 = 0xFFF9, 311 .rx_chf_coeffs_32mhz.rx_chf_coef_2 = 0x0000, 312 .rx_chf_coeffs_32mhz.rx_chf_coef_3 = 0x000F, 313 .rx_chf_coeffs_32mhz.rx_chf_coef_4 = 0x0019, 314 .rx_chf_coeffs_32mhz.rx_chf_coef_5 = 0x000C, 315 .rx_chf_coeffs_32mhz.rx_chf_coef_6 = 0xFFEB, 316 .rx_chf_coeffs_32mhz.rx_chf_coef_7 = 0xFFCD, 317 .rx_chf_coeffs_32mhz.rx_chf_coef_8 = 0xFFD7, 318 .rx_chf_coeffs_32mhz.rx_chf_coef_9 = 0x0017, 319 .rx_chf_coeffs_32mhz.rx_chf_coef_10 = 0x0075, 320 .rx_chf_coeffs_32mhz.rx_chf_coef_11 = 0x00BB, 321 322 .rx_rccal_ctrl_0 = XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_OFFSET(0) | 323 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_MANUAL(31) | 324 XCVR_RX_DIG_RX_RCCAL_CTRL0_BBA_RCCAL_DIS(1) | 325 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_SMP_DLY(0) | 326 XCVR_RX_DIG_RX_RCCAL_CTRL0_RCCAL_COMP_INV(0) | 327 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_OFFSET(0) | 328 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_MANUAL(31) | 329 XCVR_RX_DIG_RX_RCCAL_CTRL0_TZA_RCCAL_DIS(1) , 330 .rx_rccal_ctrl_1 = XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_OFFSET(0) | 331 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_MANUAL(0) | 332 XCVR_RX_DIG_RX_RCCAL_CTRL1_ADC_RCCAL_DIS(0) | 333 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_OFFSET(0) | 334 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_MANUAL(31) | 335 XCVR_RX_DIG_RX_RCCAL_CTRL1_BBA2_RCCAL_DIS(1) , 336 337 .tx_fsk_scale_26mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1627) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x09d9), 338 .tx_fsk_scale_32mhz = XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_0(0x1800) | XCVR_TX_DIG_FSK_SCALE_FSK_MODULATION_SCALE_1(0x0800), 339 }; 340 341