Go to the documentation of this file.
150 #define HMC7044_PULSE_GEN_LEVEL_SENSITIVE 0
151 #define HMC7044_PULSE_GEN_1_PULSE 1
152 #define HMC7044_PULSE_GEN_2_PULSE 2
153 #define HMC7044_PULSE_GEN_4_PULSE 3
154 #define HMC7044_PULSE_GEN_8_PULSE 4
155 #define HMC7044_PULSE_GEN_16_PULSE 5
156 #define HMC7044_PULSE_GEN_CONT_PULSE 7
162 #define HMC7044_SYNC_PIN_DISABLED 0
163 #define HMC7044_SYNC_PIN_SYNC 1
164 #define HMC7044_SYNC_PIN_PULSE_GEN_REQ 2
165 #define HMC7044_SYNC_PIN_SYNC_THEN_PULSE_GEN 3
179 uint64_t *rounded_rate);
bool is_sysref
Definition: hmc7044.h:61
#define HMC7044_REG_PLL2_R_LSB
Definition: hmc7044.c:149
#define HMC7044_N2_LSB(x)
Definition: hmc7044.c:156
#define HMC7044_N1_MAX
Definition: hmc7044.c:257
#define HMC7044_SYNC_PIN_PULSE_GEN_REQ
Definition: hmc7044.h:164
bool rf_reseeder_disable
Definition: hmc7044.h:127
#define HMC7044_DRIVER_Z_MODE(x)
Definition: hmc7044.c:234
JESD204 link configuration settings.
Definition: jesd204.h:105
uint32_t num_channels
Definition: hmc7044.h:138
uint32_t pll1_pfd
Definition: hmc7044.h:116
#define HMC7044_AUTO_MODE_SWITCH
Definition: hmc7044.c:143
#define HMC7044_REG_PULSE_GEN
Definition: hmc7044.c:175
int32_t hmc7044_read(struct hmc7044_dev *dev, uint16_t reg, uint8_t *val)
Definition: hmc7044.c:316
#define HMC7044_REG_PLL2_FREQ_DOUBLER
Definition: hmc7044.c:146
#define HMC7044_LOW_FREQ_INPUT_MODE
Definition: hmc7044.c:190
bool force_mute_enable
Definition: hmc7044.h:60
#define HMC7044_RECOMM_PFD1
Definition: hmc7044.c:247
uint32_t jdev_lmfc_lemc_rate
Definition: hmc7044.h:98
#define HMC7044_REG_CLKIN3_BUF_CTRL
Definition: hmc7044.c:105
#define HMC7044_REG_PLL1_REF_PRIO_CTRL
Definition: hmc7044.c:108
int32_t hmc7044_read(struct hmc7044_dev *dev, uint16_t reg, uint8_t *val)
Definition: hmc7044.c:316
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:165
#define HMC7044_R1_MAX
Definition: hmc7044.c:256
bool jdev_skip_sysref_freq_calc
Definition: hmc7044.h:132
#define HMC7044_CLK_INPUT_CTRL
Definition: hmc7044.c:189
@ JESD204_STATE_OP_REASON_INIT
Definition: jesd204.h:148
#define HMC7044_CP_CURRENT_STEP
Definition: hmc7044.c:251
const struct no_os_clk_platform_ops * platform_ops
Definition: no_os_clk.h:56
#define HMC7044_NUM_CHAN
Definition: hmc7044.c:238
#define HMC7044_FORCE_MUTE_EN
Definition: hmc7044.c:236
struct jesd204_dev * jdev
Definition: hmc7044.h:97
#define HMC7044_REG_CH_OUT_CRTL_2(ch)
Definition: hmc7044.c:223
#define HMC7044_PLL2_FREQ_DOUBLER_DIS
Definition: hmc7044.c:147
Header file of SPI Interface.
struct no_os_clk_desc ** clk_desc
Definition: hmc7044.h:73
Definition: hmc7044.c:278
#define HMC7044_REG_CH_OUT_CRTL_4(ch)
Definition: hmc7044.c:227
#define HMC7044_REG_CLK_OUT_DRV_HIGH_PW
Definition: hmc7044.c:208
uint32_t vcxo_freq
Definition: hmc7044.h:77
#define HMC7044_REG_VTUNE_PRESET
Definition: hmc7044.c:211
#define HMC7044_LOW_VCO_MAX
Definition: hmc7044.c:241
bool clkin1_vcoin_en
Definition: hmc7044.h:125
#define HMC7044_PULSE_GEN_CONT_PULSE
Definition: hmc7044.h:156
uint32_t pulse_gen_mode
Definition: hmc7044.h:134
uint32_t sysref_timer_div
Definition: hmc7044.h:83
int32_t hmc7044_init(struct hmc7044_dev **device, const struct hmc7044_init_param *init_param)
Definition: hmc7044.c:1472
Header file of HMC7044, HMC7043 Driver.
#define HMC7044_REG_SYSREF_TIMER_LSB
Definition: hmc7044.c:183
#define pr_err(fmt, args...)
Definition: no_os_print_log.h:94
#define HMC7044_REG_EN_CTRL_0
Definition: hmc7044.c:80
#define HMC7044_REG_PLL1_STATUS
Definition: hmc7044.c:195
bool clkin1_vcoin_en
Definition: hmc7044.h:87
uint32_t jdev_lmfc_lemc_gcd
Definition: hmc7044.h:99
#define HMC7044_REG_GPO_CTRL(x)
Definition: hmc7044.c:169
bool jesd204_sysref_provider
Definition: hmc7044.h:129
#define HMC7044_REG_SOFT_RESET
Definition: hmc7044.c:63
uint32_t jesd204_desired_sysref_frequency_hz
Definition: hmc7044.h:131
#define HMC7044_REG_PLL2_R_MSB
Definition: hmc7044.c:152
@ JESD204_STATE_OP_MODE_PER_DEVICE
Definition: jesd204.h:176
Header file of Delay functions.
uint32_t vcxo_freq
Definition: hmc7044.h:115
const char * name
Definition: no_os_clk.h:52
enum jesd204_sysref_mode mode
Definition: jesd204.h:61
jesd204_state_op_reason
Definition: jesd204.h:147
#define pr_info(fmt, args...)
Definition: no_os_print_log.h:121
int32_t hmc7044_init(struct hmc7044_dev **device, const struct hmc7044_init_param *init_param)
Definition: hmc7044.c:1472
#define HMC7044_REG_PLL1_REF_SWITCH
Definition: hmc7044.c:138
int32_t no_os_clk_init(struct no_os_clk_desc **desc, const struct no_os_clk_init_param *param)
struct hmc7044_chan_spec * channels
Definition: hmc7044.h:96
#define HMC7044_SYSREF_TIMER_EN
Definition: hmc7044.c:86
#define HMC7044_SYNC_PIN_MODE(x)
Definition: hmc7044.c:97
bool high_performance_mode_dis
Definition: hmc7044.h:56
Definition: ad9361_util.h:75
uint32_t pll2_freq
Definition: hmc7044.h:81
#define HMC7044_REG_SYNC
Definition: hmc7044.c:178
#define HMC7044_N2_MSB(x)
Definition: hmc7044.c:159
#define HMC7044_REG_CLKIN0_BUF_CTRL
Definition: hmc7044.c:102
#define HMC7044_START_UP_MODE_DYN_EN
Definition: hmc7044.c:218
#define HMC7044_REF_PATH_EN(x)
Definition: hmc7044.c:94
struct no_os_spi_desc * spi_desc
Definition: hmc7044.h:71
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:53
bool output_control0_rb4_enable
Definition: hmc7044.h:59
uint32_t jdev_max_sysref_freq
Definition: hmc7044.h:100
struct jesd204_sysref sysref
Definition: jesd204.h:139
#define HMC7044_REG_CH_OUT_CRTL_3(ch)
Definition: hmc7044.c:226
uint32_t in_buf_mode[5]
Definition: hmc7044.h:135
int32_t hmc7044_clk_round_rate(struct hmc7044_dev *dev, uint32_t rate, uint64_t *rounded_rate)
Definition: hmc7044.c:441
@ JESD204_OP_CLK_SYNC_STAGE1
Definition: jesd204.h:201
#define HMC7044_REG_CH_OUT_CRTL_0(ch)
Definition: hmc7044.c:214
#define HMC7044_REG_PLL1_N_LSB
Definition: hmc7044.c:128
#define HMC7044_PLL1_FSM_STATE(x)
Definition: hmc7044.c:197
uint32_t pll1_cp_current
Definition: hmc7044.h:80
#define HMC7044_REG_CH_OUT_CRTL_7(ch)
Definition: hmc7044.c:230
void * jesd204_dev_priv(struct jesd204_dev *jdev)
#define HMC7044_REG_PLL1_N_MSB
Definition: hmc7044.c:131
@ JESD204_OP_CLK_SYNC_STAGE2
Definition: jesd204.h:202
Header file of Clock Driver.
#define HMC7044_HIGH_PERF_DISTRIB_PATH
Definition: hmc7044.c:68
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
uint32_t clkin_freq[4]
Definition: hmc7044.h:75
#define no_os_min(x, y)
Definition: no_os_util.h:63
#define HMC7044_N2_MIN
Definition: hmc7044.c:261
#define HMC7044_SYSREF_TIMER_LSB(x)
Definition: hmc7044.c:184
#define HMC7044_REG_OSCIN_PRESCALER
Definition: hmc7044.c:120
int32_t hmc7044_clk_set_rate(struct hmc7044_dev *dev, uint32_t chan_num, uint64_t rate)
Definition: hmc7044.c:458
#define NO_OS_DIV_ROUND_UP(x, y)
Definition: no_os_util.h:56
#define HMC7044_VCO_HIGH
Definition: hmc7044.c:84
#define pr_debug(fmt, args...)
Definition: no_os_print_log.h:135
#define HMC7044_R2_MSB(x)
Definition: hmc7044.c:153
int32_t hmc7044_remove(struct hmc7044_dev *device)
Definition: hmc7044.c:1638
#define HMC7044_RESEED_REQ
Definition: hmc7044.c:67
#define HMC7044_OUT_DIV_MIN
Definition: hmc7044.c:264
#define HMC7044_RESTART_DIV_FSM
Definition: hmc7044.c:73
#define HMC7044_REG_SYSREF_TIMER_MSB
Definition: hmc7044.c:186
#define HMC7044_CP_CURRENT_DEF
Definition: hmc7044.c:254
#define HMC7044_OUT_DIV_MAX
Definition: hmc7044.c:265
uint32_t gpi_ctrl[4]
Definition: hmc7044.h:93
#define HMC7044_SOFT_RESET
Definition: hmc7044.c:64
bool disable
Definition: hmc7044.h:55
bool read_write_confirmed
Definition: hmc7044.h:105
#define HMC7044_REG_PLL1_R_MSB
Definition: hmc7044.c:125
#define HMC7044_REG_REQ_MODE_0
Definition: hmc7044.c:66
bool pll1_ref_autorevert_en
Definition: hmc7044.h:85
#define HMC7044_VCO_LOW
Definition: hmc7044.c:85
int jesd204_link_get_lmfc_lemc_rate(struct jesd204_link *lnk, unsigned long *rate_hz)
#define HMC7044_REG_CLKIN1_BUF_CTRL
Definition: hmc7044.c:103
unsigned int sync_pin_mode
Definition: hmc7044.h:90
uint32_t jesd204_max_sysref_frequency_hz
Definition: hmc7044.h:130
bool start_up_mode_dynamic_enable
Definition: hmc7044.h:57
uint32_t gpo_ctrl[4]
Definition: hmc7044.h:137
uint8_t hw_ch_num
Definition: no_os_clk.h:85
unsigned int driver_impedance
Definition: hmc7044.h:64
Definition: hmc7044.h:108
unsigned int num
Definition: hmc7044.h:54
struct no_os_spi_init_param * spi_init
Definition: hmc7044.h:109
uint32_t jdev_desired_sysref_freq
Definition: hmc7044.h:101
Structure holding CLK descriptor.
Definition: no_os_clk.h:81
#define HMC7044_PLL2_LOCK_DETECT(x)
Definition: hmc7044.c:200
bool dynamic_driver_enable
Definition: hmc7044.h:58
bool export_no_os_clk
Definition: hmc7044.h:111
#define HMC7044_MAX_PFD1
Definition: hmc7044.c:249
uint32_t clkin_freq[4]
Definition: hmc7044.h:113
#define HMC7044_PULSE_GEN_REQ
Definition: hmc7044.c:72
#define HMC7044_DRIVER_MODE(x)
Definition: hmc7044.c:233
uint32_t pll1_pfd
Definition: hmc7044.h:78
bool hmc_two_level_tree_sync_en
Definition: hmc7044.h:104
unsigned int driver_mode
Definition: hmc7044.h:63
#define HMC7044_PLL2_EN
Definition: hmc7044.c:87
uint32_t gpi_ctrl[4]
Definition: hmc7044.h:136
#define HMC7044_REG_OSCIN_BUF_CTRL
Definition: hmc7044.c:106
#define HMC7044_REG_CH_OUT_CRTL_8(ch)
Definition: hmc7044.c:232
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
uint32_t pfd1_limit
Definition: hmc7044.h:117
#define HMC7044_LOCK_DETECT_TIMER(x)
Definition: hmc7044.c:136
bool is_hmc7043
Definition: hmc7044.h:112
void * dev_desc
Definition: no_os_clk.h:58
#define HMC7044_RFSYNC_EN
Definition: hmc7044.c:95
bool high_performance_mode_clock_dist_en
Definition: hmc7044.h:126
uint64_t no_os_div_u64_rem(uint64_t dividend, uint32_t divisor, uint32_t *remainder)
#define HMC7044_READ
Definition: hmc7044.c:58
uint32_t clkin_freq_ccf[4]
Definition: hmc7044.h:114
#define HMC7044_CLK_OUT_PH_STATUS(x)
Definition: hmc7044.c:202
uint32_t pll1_cp_current
Definition: hmc7044.h:118
uint32_t pll1_loop_bw
Definition: hmc7044.h:82
unsigned int pll1_ref_prio_ctrl
Definition: hmc7044.h:84
uint32_t pfd1_limit
Definition: hmc7044.h:79
#define HMC7044_PULSE_GEN_MODE(x)
Definition: hmc7044.c:176
uint32_t no_os_greatest_common_divisor(uint32_t a, uint32_t b)
#define HMC7044_VCO_SEL(x)
Definition: hmc7044.c:82
int32_t no_os_log_base_2(uint32_t x)
#define HMC7044_REG_CLK_OUT_DRV_LOW_PW
Definition: hmc7044.c:207
Definition: no_os_clk.h:50
#define HMC7044_PLL1_EN
Definition: hmc7044.c:88
void no_os_rational_best_approximation(uint32_t given_numerator, uint32_t given_denominator, uint32_t max_numerator, uint32_t max_denominator, uint32_t *best_numerator, uint32_t *best_denominator)
@ JESD204_OP_LINK_PRE_SETUP
Definition: jesd204.h:200
#define HMC7044_HIGH_VCO_MAX
Definition: hmc7044.c:243
uint32_t link_id
Definition: jesd204.h:106
#define HMC7044_REG_CH_OUT_CRTL_1(ch)
Definition: hmc7044.c:220
uint32_t pll2_freq
Definition: hmc7044.h:119
const struct no_os_clk_platform_ops hmc7044_clk_ops
hmc7044 clock ops
Definition: hmc7044.c:1697
#define HMC7044_REG_ALARM_READBACK
Definition: hmc7044.c:194
#define HMC7044_REG_PLL1_CP_CTRL
Definition: hmc7044.c:116
void * no_os_malloc(size_t size)
Allocate memory and return a pointer to it.
Definition: chibios_alloc.c:49
uint32_t clkin_freq_ccf[4]
Definition: hmc7044.h:76
#define no_os_clamp_t(type, val, min_val, max_val)
Definition: no_os_util.h:75
#define HMC7044_REG_PLL2_N_MSB
Definition: hmc7044.c:158
unsigned int coarse_delay
Definition: hmc7044.h:65
#define HMC7044_REG_GLOB_MODE
Definition: hmc7044.c:93
#define HMC7044_REG_PLL1_HOLDOVER
Definition: hmc7044.c:210
bool clkin0_rfsync_en
Definition: hmc7044.h:86
int32_t hmc7044_clk_recalc_rate(struct hmc7044_dev *dev, uint32_t chan_num, uint64_t *rate)
Definition: hmc7044.c:413
#define HMC7044_DYN_DRIVER_EN
Definition: hmc7044.c:235
unsigned int pll1_ref_prio_ctrl
Definition: hmc7044.h:122
const struct no_os_clk_platform_ops hmc7044_clk_ops
hmc7044 specific CLK platform ops structure
Definition: hmc7044.c:1697
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
bool pll1_ref_autorevert_en
Definition: hmc7044.h:123
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
#define HMC7044_CP_CURRENT_MIN
Definition: hmc7044.c:252
int jesd204_dev_register(struct jesd204_dev **jdev, const struct jesd204_dev_data *dev_data)
uint32_t pll1_loop_bw
Definition: hmc7044.h:120
int32_t hmc7044_clk_recalc_rate(struct hmc7044_dev *dev, uint32_t chan_num, uint64_t *rate)
Definition: hmc7044.c:413
uint32_t sysref_timer_div
Definition: hmc7044.h:121
unsigned int divider
Definition: hmc7044.h:62
#define HMC7044_CP_CURRENT_MAX
Definition: hmc7044.c:253
@ JESD204_OP_CLK_SYNC_STAGE3
Definition: jesd204.h:203
unsigned int sync_pin_mode
Definition: hmc7044.h:133
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:120
#define NULL
Definition: wrapper.h:64
uint32_t gpo_ctrl[4]
Definition: hmc7044.h:94
#define HMC7044_PLL1_CP_CURRENT(x)
Definition: hmc7044.c:117
#define HMC7044_REG_SCRATCHPAD
Definition: hmc7044.c:99
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
#define HMC7044_REG_PLL1_DELAY
Definition: hmc7044.c:209
struct hmc7044_chan_spec * channels
Definition: hmc7044.h:139
#define HMC7044_DIV_LSB(x)
Definition: hmc7044.c:221
#define HMC7044_REG_CLKIN2_BUF_CTRL
Definition: hmc7044.c:104
bool is_sysref_provider
Definition: hmc7044.h:103
#define HMC7044_REG_PLL1_LOCK_DETECT
Definition: hmc7044.c:134
#define HMC7044_SYNC_RETIME
Definition: hmc7044.c:179
int32_t hmc7044_set_rate(struct no_os_clk_desc *desc, uint64_t rate)
Set the clock rate.
Definition: hmc7044.c:1687
bool rf_reseeder_en
Definition: hmc7044.h:89
@ JESD204_STATE_CHANGE_DONE
Definition: jesd204.h:46
void * dev_desc
Definition: no_os_clk.h:89
bool hmc_two_level_tree_sync_en
Definition: hmc7044.h:128
uint8_t hw_ch_num
Definition: no_os_clk.h:54
int32_t hmc7044_clk_round_rate(struct hmc7044_dev *dev, uint32_t rate, uint64_t *rounded_rate)
Definition: hmc7044.c:441
@ JESD204_SYSREF_CONTINUOUS
Definition: jesd204.h:39
#define HMC7044_MIN_PFD1
Definition: hmc7044.c:248
#define HMC7044_SYNC_PIN_DISABLED
Definition: hmc7044.h:162
#define HMC7044_LOW_VCO_MIN
Definition: hmc7044.c:240
#define HMC7044_HIGH_VCO_MIN
Definition: hmc7044.c:242
#define HMC7044_RECOMM_LCM_MAX
Definition: hmc7044.c:246
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:122
#define HMC7044_SYNC_PIN_SYNC
Definition: hmc7044.h:163
#define HMC7044_REG_PLL2_N_LSB
Definition: hmc7044.c:155
bool high_performance_mode_clock_dist_en
Definition: hmc7044.h:88
@ JESD204_OP_LINK_SUPPORTED
Definition: jesd204.h:199
uint32_t pulse_gen_mode
Definition: hmc7044.h:91
bool jdev_skip_sysref_freq_calc
Definition: hmc7044.h:102
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:58
#define HMC7044_CH_EN
Definition: hmc7044.c:217
uint32_t hmc7044_calc_out_div(uint32_t rate, uint32_t parent_rate)
Definition: hmc7044.c:387
#define HMC7044_HI_PERF_MODE
Definition: hmc7044.c:215
unsigned int out_mux_mode
Definition: hmc7044.h:67
#define HMC7044_HOLDOVER_DAC
Definition: hmc7044.c:141
bool is_hmc7043
Definition: hmc7044.h:74
int32_t hmc7044_clk_set_rate(struct hmc7044_dev *dev, uint32_t chan_num, uint64_t rate)
Definition: hmc7044.c:458
Header file of utility functions.
#define HMC7044_R2_MAX
Definition: hmc7044.c:260
#define HMC7044_VCOIN_MODE_EN
Definition: hmc7044.c:96
int32_t hmc7044_remove(struct hmc7044_dev *device)
Definition: hmc7044.c:1638
#define HMC7044_SYSREF_TIMER_MSB(x)
Definition: hmc7044.c:187
#define HMC7044_DIV_MSB(x)
Definition: hmc7044.c:224
#define HMC7044_SYNC_EN
Definition: hmc7044.c:216
#define HMC7044_N2_MAX
Definition: hmc7044.c:262
uint32_t num_channels
Definition: hmc7044.h:95
#define HMC7044_AUTO_REVERT_SWITCH
Definition: hmc7044.c:142
#define pr_warning(fmt, args...)
Definition: no_os_print_log.h:103
#define HMC7044_ADDR(x)
Definition: hmc7044.c:60
#define HMC7044_R2_LSB(x)
Definition: hmc7044.c:150
#define HMC7044_REG_CLKIN_PRESCALER(x)
Definition: hmc7044.c:119
jesd204_sysref_cb sysref_cb
Definition: jesd204.h:228
#define HMC7044_CNT(x)
Definition: hmc7044.c:59
JESD204 device initialization data.
Definition: jesd204.h:227
#define HMC7044_RF_RESEEDER_EN
Definition: hmc7044.c:81
#define HMC7044_REG_GPI_CTRL(x)
Definition: hmc7044.c:166
struct hmc7044_dev * hmc
Definition: hmc7044.c:279
uint32_t in_buf_mode[5]
Definition: hmc7044.h:92
unsigned int fine_delay
Definition: hmc7044.h:66
bool clkin0_rfsync_en
Definition: hmc7044.h:124
#define HMC7044_REG_PLL1_R_LSB
Definition: hmc7044.c:122
#define NO_OS_DIV_ROUND_CLOSEST(x, y)
Definition: no_os_util.h:58
#define HMC7044_PLL1_ACTIVE_CLKIN(x)
Definition: hmc7044.c:198
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
#define HMC7044_PULSE_GEN_LEVEL_SENSITIVE
Definition: hmc7044.h:150
#define HMC7044_WRITE
Definition: hmc7044.c:57