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