no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad9081.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef AD9081_H_
34#define AD9081_H_
35
36#include <stdbool.h>
37#include <stdint.h>
38#include "no_os_clk.h"
39#include "no_os_spi.h"
40#include "no_os_gpio.h"
41#include "adi_ad9081.h"
42#include "jesd204.h"
43
44#define MAX_NUM_MAIN_DATAPATHS 4
45#define MAX_NUM_CHANNELIZER 8
46
48 bool is_jrx;
49 adi_cms_jesd_param_t jesd_param;
54 uint64_t lane_rate;
55 unsigned long lane_rate_kbps;
56 unsigned long lane_cal_rate_kbps;
57};
58
62
63struct ad9081_phy {
70 struct jesd204_dev *jdev;
76 adi_ad9081_device_t ad9081;
82 uint32_t lmfc_delay;
90 /* TX */
92 /* The 4 DAC Main Datapaths */
97 /* The 8 DAC Channelizers */
103 /* RX */
104 uint32_t adc_dcm[2];
107 /* The 4 ADC Main Datapaths */
114 /* The 8 ADC Channelizers */
124};
125
147
170 /* TX */
172 /* The 4 DAC Main Datapaths */
178 /* The 8 DAC Channelizers */
183 /* RX */
186 /* The 4 ADC Main Datapaths */
192 /* The 8 ADC Channelizers */
202};
203
204/* ffh: 2 - gpio6, 3 - gpio7, 4 - gpio8, 5 - gpio9, 6 - gpio10, 7 - syncinb1_p, 8 - syncinb1_n */
205
206#define AD9081_PERI_SEL_GPIO6 2
207#define AD9081_PERI_SEL_GPIO7 3
208#define AD9081_PERI_SEL_GPIO8 4
209#define AD9081_PERI_SEL_GPIO9 5
210#define AD9081_PERI_SEL_GPIO10 6
211#define AD9081_PERI_SEL_SYNCINB1_P 7
212#define AD9081_PERI_SEL_SYNCINB1_N 8
213
214#define AD9081_FFH_CHAN_SEL_REG_MODE 0 /* 0: Register Map control (Use ddc_nco_regmap_chan_sel) */
215#define AD9081_FFH_CHAN_SEL_1GPIO_MODE 1 /* 1: profile_pins[0] is used. Pin level control {3'b0, profile_pins[0]} */
216#define AD9081_FFH_CHAN_SEL_2GPIO_MODE 2 /* 2: profile_pins[1 :0] are used. Pin level control {2'b0, profile_pins[1:0]} */
217#define AD9081_FFH_CHAN_SEL_3GPIO_MODE 3 /* 3: profile_pins[2 :0] are used. Pin level control {1'b0, profile_pins[2:0]} */
218#define AD9081_FFH_CHAN_SEL_4GPIO_MODE 4 /* 4: profile_pins[3 :0] are used. Pin level control { profile_pins[3:0]} */
219#define AD9081_FFH_CHAN_SEL_GPIO0_EDGE_MODE 8 /* 8: profile_pins[0] Pin edge control- increment internal counter when rising edge of profile_pins[0] Pin. */
220#define AD9081_FFH_CHAN_SEL_GPIO1_EDGE_MODE 9 /* 9: profile_pins[1] Pin edge control- increment internal counter when rising edge of profile_pins[1] Pin. */
221#define AD9081_FFH_CHAN_SEL_GPIO2_EDGE_MODE 10 /* 10: profile_pins[2] Pin edge control- increment internal counter when rising edge of profile_pins[2] Pin. */
222#define AD9081_FFH_CHAN_SEL_GPIO3_EDGE_MODE 11 /* 11: profile_pins[3] Pin edge control- increment internal counter when rising edge of profile_pins[3] Pin. */
223#define AD9081_FFH_CHAN_SEL_FHT_EXP_MODE 12 /* 12: FHT expire based control - increment internal counter when FHT is expired. */
224
225/*
226 * JESD204-FSM defines
227 */
228#define DEFRAMER_LINK0_TX 0
229#define DEFRAMER_LINK1_TX 1
230#define FRAMER_LINK0_RX 2
231#define FRAMER_LINK1_RX 3
232
233/* Initialize the device. */
234int32_t ad9081_init(struct ad9081_phy **device,
235 const struct ad9081_init_param *init_param);
236/* Remove the device. */
237int32_t ad9081_remove(struct ad9081_phy *device);
238/* Work function. */
239void ad9081_work_func(struct ad9081_phy *phy);
240#endif
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
#define MAX_NUM_MAIN_DATAPATHS
Definition ad9081.h:44
int32_t ad9081_init(struct ad9081_phy **device, const struct ad9081_init_param *init_param)
Definition ad9081.c:1416
#define MAX_NUM_CHANNELIZER
Definition ad9081.h:45
void ad9081_work_func(struct ad9081_phy *phy)
int32_t ad9081_remove(struct ad9081_phy *device)
Definition ad9081.c:1580
Header file of Clock Driver.
Header file of GPIO Interface.
Header file of SPI Interface.
Definition ad9081.h:148
uint8_t rx_ffh_gpio_mux_selection[6]
Definition ad9081.h:200
struct no_os_clk * dev_clk
Definition ad9081.h:152
struct no_os_gpio_init_param * ms_sync_enable
Definition ad9081.h:151
struct no_os_spi_init_param * spi_init
Definition ad9081.h:149
bool continuous_sysref_mode_disable
Definition ad9081.h:167
uint32_t tx_channel_interpolation
Definition ad9081.h:179
uint32_t tx_full_scale_current_ua[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:177
uint8_t master_slave_sync_gpio_num
Definition ad9081.h:155
bool config_sync_0a_cmos_enable
Definition ad9081.h:162
uint8_t rx_main_enable[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:191
uint8_t sysref_cmos_single_end_term_pos
Definition ad9081.h:158
uint8_t sysref_cmos_single_end_term_neg
Definition ad9081.h:159
struct no_os_clk * jesd_rx_clk
Definition ad9081.h:153
bool sysref_cmos_input_enable
Definition ad9081.h:157
uint64_t adc_frequency_hz
Definition ad9081.h:184
uint8_t rx_channel_digital_gain_6db_enable[MAX_NUM_CHANNELIZER]
Definition ad9081.h:197
uint8_t rx_main_digital_gain_6db_enable[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:190
bool tx_disable
Definition ad9081.h:168
int64_t rx_main_nco_frequency_shift_hz[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:187
uint8_t rx_channel_enable[MAX_NUM_CHANNELIZER]
Definition ad9081.h:198
int64_t tx_main_nco_frequency_shift_hz[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:174
uint32_t nyquist_zone[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:185
uint32_t rx_channel_decimation[MAX_NUM_CHANNELIZER]
Definition ad9081.h:194
uint8_t tx_dac_channel_crossbar_select[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:175
bool sysref_coupling_ac_en
Definition ad9081.h:156
uint32_t rx_main_decimation[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:188
uint8_t rx_channel_complex_to_real_enable[MAX_NUM_CHANNELIZER]
Definition ad9081.h:195
int64_t tx_channel_nco_frequency_shift_hz[MAX_NUM_CHANNELIZER]
Definition ad9081.h:180
uint16_t tx_channel_gain[MAX_NUM_CHANNELIZER]
Definition ad9081.h:181
bool jesd_sync_pins_01_swap_enable
Definition ad9081.h:161
bool nco_sync_direct_sysref_mode_enable
Definition ad9081.h:165
uint64_t dac_frequency_hz
Definition ad9081.h:171
struct link_init_param * jtx_link_rx[2]
Definition ad9081.h:201
bool rx_disable
Definition ad9081.h:169
uint8_t tx_maindp_dac_1x_non1x_crossbar_select[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:176
uint32_t sysref_average_cnt_exp
Definition ad9081.h:166
uint32_t nco_sync_ms_extra_lmfc_num
Definition ad9081.h:164
uint32_t multidevice_instance_count
Definition ad9081.h:160
uint8_t rx_main_complex_to_real_enable[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:189
struct no_os_gpio_init_param * gpio_reset
Definition ad9081.h:150
int64_t rx_channel_nco_frequency_shift_hz[MAX_NUM_CHANNELIZER]
Definition ad9081.h:193
struct link_init_param * jrx_link_tx[2]
Definition ad9081.h:182
struct no_os_clk * jesd_tx_clk
Definition ad9081.h:154
uint8_t rx_channel_nco_mixer_mode[MAX_NUM_CHANNELIZER]
Definition ad9081.h:196
uint32_t tx_main_interpolation
Definition ad9081.h:173
uint8_t rx_cddc_nco_channel_select_mode[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:199
uint32_t lmfc_delay_dac_clk_cycles
Definition ad9081.h:163
Definition ad9081.h:63
uint8_t rx_fddc_mxr_if[MAX_NUM_CHANNELIZER]
Definition ad9081.h:111
uint8_t rx_fddc_gain_6db_en[MAX_NUM_CHANNELIZER]
Definition ad9081.h:120
bool sysref_cmos_input_en
Definition ad9081.h:73
bool is_initialized
Definition ad9081.h:87
struct no_os_clk * dev_clk
Definition ad9081.h:69
uint8_t rx_cddc_nco_channel_select_mode[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:122
uint8_t sync_ms_gpio_num
Definition ad9081.h:71
uint32_t lmfc_delay
Definition ad9081.h:82
uint32_t tx_main_interp
Definition ad9081.h:93
uint32_t tx_chan_interp
Definition ad9081.h:98
struct no_os_gpio_desc * ms_sync_en_gpio
Definition ad9081.h:66
int64_t rx_cddc_shift[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:108
uint32_t nco_sync_ms_extra_lmfc_num
Definition ad9081.h:83
bool tx_disable
Definition ad9081.h:88
uint64_t adc_frequency_hz
Definition ad9081.h:105
uint8_t sysref_cmos_single_end_term_pos
Definition ad9081.h:74
uint32_t sysref_average_cnt_exp
Definition ad9081.h:85
adi_ad9081_device_t ad9081
Definition ad9081.h:76
uint32_t rx_nyquist_zone[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:106
bool tx_ffh_hopf_via_gpio_en
Definition ad9081.h:101
int64_t rx_fddc_shift[MAX_NUM_CHANNELIZER]
Definition ad9081.h:115
bool config_sync_0a_cmos_en
Definition ad9081.h:81
struct dac_settings_cache dac_cache
Definition ad9081.h:102
uint8_t rx_cddc_c2r[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:112
uint8_t rx_fddc_c2r[MAX_NUM_CHANNELIZER]
Definition ad9081.h:118
struct ad9081_jesd_link jrx_link_tx[2]
Definition ad9081.h:77
uint8_t rx_cddc_gain_6db_en[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:119
bool sysref_continuous_dis
Definition ad9081.h:86
struct no_os_clk * jesd_tx_clk
Definition ad9081.h:68
struct jesd204_dev * jdev
Definition ad9081.h:70
bool nco_sync_direct_sysref_mode_en
Definition ad9081.h:84
uint32_t adc_chan_decimation[MAX_NUM_CHANNELIZER]
Definition ad9081.h:116
int64_t tx_main_shift[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:96
uint64_t dac_frequency_hz
Definition ad9081.h:91
struct no_os_clk * jesd_rx_clk
Definition ad9081.h:67
uint32_t multidevice_instance_count
Definition ad9081.h:79
uint8_t rx_fddc_select
Definition ad9081.h:121
uint32_t adc_dcm[2]
Definition ad9081.h:104
struct no_os_gpio_desc * gpio_reset
Definition ad9081.h:65
uint8_t sysref_cmos_single_end_term_neg
Definition ad9081.h:75
uint32_t tx_dac_fsc[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:100
uint8_t rx_ffh_gpio_mux_sel[6]
Definition ad9081.h:123
uint8_t rx_fddc_dcm[MAX_NUM_CHANNELIZER]
Definition ad9081.h:117
uint32_t adc_main_decimation[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:109
bool config_sync_01_swapped
Definition ad9081.h:80
bool rx_disable
Definition ad9081.h:89
uint8_t rx_cddc_dcm[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:110
int64_t tx_chan_shift[MAX_NUM_CHANNELIZER]
Definition ad9081.h:99
uint8_t tx_dac_chan_xbar[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:94
bool sysref_coupling_ac_en
Definition ad9081.h:72
struct no_os_spi_desc * spi_desc
Definition ad9081.h:64
uint8_t tx_dac_chan_xbar_1x_non1x[MAX_NUM_MAIN_DATAPATHS]
Definition ad9081.h:95
uint8_t rx_cddc_select
Definition ad9081.h:113
struct ad9081_jesd_link jtx_link_rx[2]
Definition ad9081.h:78
Definition ad9081.h:59
uint16_t chan_gain[MAX_NUM_CHANNELIZER]
Definition ad9081.h:60
Definition ad9361_util.h:63
Definition no_os_clk.h:58
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128