Go to the documentation of this file.
47 #define ADF4382_SOFT_RESET_R_MSK NO_OS_BIT(7)
48 #define ADF4382_LSB_FIRST_R_MSK NO_OS_BIT(6)
49 #define ADF4382_ADDRESS_ASC_R_MSK NO_OS_BIT(5)
50 #define ADF4382_SDO_ACTIVE_R_MSK NO_OS_BIT(4)
51 #define ADF4382_SDO_ACTIVE_MSK NO_OS_BIT(3)
52 #define ADF4382_ADDRESS_ASC_MSK NO_OS_BIT(2)
53 #define ADF4382_LSB_FIRST_MSK NO_OS_BIT(1)
54 #define ADF4382_SOFT_RESET_MSK NO_OS_BIT(0)
55 #define ADF4382_RESET_CMD 0x81
58 #define ADF4382_SDO_ACTIVE_SPI_3W 0x0
59 #define ADF4382_SDO_ACTIVE_SPI_4W 0x1
61 #define ADF4382_ADDR_ASC_AUTO_DECR 0x0
62 #define ADF4382_ADDR_ASC_AUTO_INCR 0x1
64 #define ADF4382_LSB_FIRST_MSB 0x0
65 #define ADF4382_LSB_FIRST_LSB 0x1
67 #define ADF4382_SOFT_RESET_N_OP 0x0
68 #define ADF4382_SOFT_RESET_EN 0x1
71 #define ADF4382_SINGLE_INSTR_MSK NO_OS_BIT(7)
72 #define ADF4382_MASTER_RB_CTRL_MSK NO_OS_BIT(5)
75 #define ADF4382_SPI_STREAM_EN 0x0
76 #define ADF4382_SPI_STREAM_DIS 0x1
78 #define ADF4382_RB_SLAVE_REG 0x0
79 #define ADF4382_RB_MASTER_REG 0x1
82 #define ADF4382_CHIP_TYPE 0x06
85 #define ADF4382_PRODUCT_ID_LSB 0x0005
88 #define ADF4382_PRODUCT_ID_MSB 0x0005
91 #define ADF4382_SCRATCHPAD_MSK NO_OS_GENMASK(7, 0)
94 #define ADF4382_VENDOR_ID_LSB 0x56
97 #define ADF4382_VENDOR_ID_MSB 0x04
100 #define ADF4382_M_S_TRANSF_NO_OS_BIT_MSK NO_OS_BIT(0)
103 #define ADF4382_N_INT_LSB_MSK NO_OS_GENMASK(7, 0)
106 #define ADF4382_CLKOUT_DIV_MSK NO_OS_GENMASK(7, 5)
107 #define ADF4382_INV_CLK_OUT_MSK NO_OS_BIT(4)
108 #define ADF4382_N_INT_MSB_MSK NO_OS_GENMASK(3, 0)
111 #define ADF4382_FRAC1WORD_LSB_MSK NO_OS_GENMASK(7, 0)
114 #define ADF4382_FRAC1WORD_MID_MSK NO_OS_GENMASK(7, 0)
117 #define ADF4382_FRAC1WORD_MSB_MSK NO_OS_GENMASK(7, 0)
120 #define ADF4382_M_VCO_BAND_LSB_MSK NO_OS_BIT(7)
121 #define ADF4382_M_VCO_CORE_MSK NO_OS_BIT(6)
122 #define ADF4382_BIAS_DEC_MODE_MSK NO_OS_GENMASK(5, 3)
123 #define ADF4382_INT_MODE_MSK NO_OS_BIT(2)
124 #define ADF4382_PFD_POL_MSK NO_OS_BIT(1)
125 #define ADF4382_FRAC1WORD_MSB NO_OS_BIT(0)
128 #define ADF4382_M_VCO_BAND_MSB_MSK NO_OS_GENMASK(7, 0)
131 #define ADF4382_FRAC2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
134 #define ADF4382_FRAC2WORD_MID_MSK NO_OS_GENMASK(7, 0)
137 #define ADF4382_FRAC2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
140 #define ADF4382_MOD2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
143 #define ADF4382_MOD2WORD_MID_MSK NO_OS_GENMASK(7, 0)
146 #define ADF4382_MOD2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
149 #define ADF4382_FINE_BLEED_LSB_MSK NO_OS_GENMASK(7, 0)
152 #define ADF4382_EN_PHASE_RESYNC_MSK NO_OS_BIT(7)
153 #define ADF4382_EN_REF_RST_MSK NO_OS_BIT(6)
154 #define ADF4382_TIMED_SYNC_MSK NO_OS_BIT(5)
155 #define ADF4382_COARSE_BLEED_MSK NO_OS_GENMASK(4, 1)
156 #define ADF4382_FINE_BLEED_MSB_MSK NO_OS_BIT(0)
159 #define ADF4382_SW_SYNC_MSK NO_OS_BIT(7)
160 #define ADF4382_SPARE_1F_MSK NO_OS_BIT(6)
161 #define ADF4382_BLEED_POL_MSK NO_OS_BIT(5)
162 #define ADF4382_EN_BLEED_MSK NO_OS_BIT(4)
163 #define ADF4382_CP_I_MSK NO_OS_GENMASK(3, 0)
166 #define ADF4382_EN_AUTOCAL_MSK NO_OS_BIT(7)
167 #define ADF4382_EN_RDBLR_MSK NO_OS_BIT(6)
168 #define ADF4382_R_DIV_MSK NO_OS_GENMASK(5, 0)
171 #define ADF4382_PHASE_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
174 #define ADF4382_PHASE_WORD_MID_MSK NO_OS_GENMASK(7, 0)
177 #define ADF4382_PHASE_WORD_MSB_MSK NO_OS_GENMASK(7, 0)
180 #define ADF4382_SPARE_24_MSK NO_OS_GENMASK(7, 5)
181 #define ADF4382_DCLK_DIV_SEL_MSK NO_OS_BIT(4)
182 #define ADF4382_DNCLK_DIV1_MSK NO_OS_GENMASK(3, 2)
183 #define ADF4382_DCLK_DIV1_MSK NO_OS_GENMASK(1, 0)
186 #define ADF4382_RESYNC_WAIT_LSB_MSK NO_OS_GENMASK(7, 0)
189 #define ADF4382_RESYNC_WAIT_MSB_MSK NO_OS_GENMASK(7, 0)
192 #define ADF4382_CAL_BLEED_FINE_MIN_MSK NO_OS_GENMASK(7, 4)
193 #define ADF4382_BLEED_ADJ_SCALE_MSK NO_OS_GENMASK(3, 0)
196 #define ADF4382_PH_RESYNC_RB_SEL_MSK NO_OS_BIT(7)
197 #define ADF4382_LSB_P1_MSK NO_OS_BIT(6)
198 #define ADF4382_VAR_MOD_EN_MSK NO_OS_BIT(5)
199 #define ADF4382_DITHER1_SCALE_MSK NO_OS_GENMASK(4, 2)
200 #define ADF4382_EN_DITHER2_MSK NO_OS_BIT(1)
201 #define ADF4382_EN_DITHER1_MSK NO_OS_BIT(0)
204 #define ADF4382_CLK2_OPWR_MSK NO_OS_GENMASK(7, 4)
205 #define ADF4382_CLK1_OPWR_MSK NO_OS_GENMASK(3, 0)
208 #define ADF4382_FN_DBL_MSK NO_OS_BIT(7)
209 #define ADF4382_PD_NDIV_TL_MSK NO_OS_BIT(6)
210 #define ADF4382_CLKOUT_BST_MSK NO_OS_BIT(5)
211 #define ADF4382_PD_SYNC_MSK NO_OS_BIT(4)
212 #define ADF4382_PD_CLK_MSK NO_OS_BIT(3)
213 #define ADF4382_PD_RDET_MSK NO_OS_BIT(2)
214 #define ADF4382_PD_ADC_MSK NO_OS_BIT(1)
215 #define ADF4382_PD_CALGEN_MSK NO_OS_BIT(0)
218 #define ADF4382_PD_ALL_MSK NO_OS_BIT(7)
219 #define ADF4382_PD_RDIV_TL_MSK NO_OS_BIT(6)
220 #define ADF4382_PD_NDIV_MSK NO_OS_BIT(5)
221 #define ADF4382_PD_VCO_MSK NO_OS_BIT(4)
222 #define ADF4382_PD_LD_MSK NO_OS_BIT(3)
223 #define ADF4382_PD_PFDCP_MSK NO_OS_BIT(2)
224 #define ADF4382_PD_CLKOUT1_MSK NO_OS_BIT(1)
225 #define ADF4382_PD_CLKOUT2_MSK NO_OS_BIT(0)
228 #define ADF4382_LDWIN_PW_MSK NO_OS_GENMASK(7, 5)
229 #define ADF4382_LD_COUNT_OPWR_MSK NO_OS_GENMASK(4, 0)
232 #define ADF4382_EN_DNCLK_MSK NO_OS_BIT(7)
233 #define ADF4382_EN_DRCLK_MSK NO_OS_BIT(6)
234 #define ADF4382_EN_LOL_MSK NO_OS_BIT(5)
235 #define ADF4382_EN_LDWIN_MSK NO_OS_BIT(4)
236 #define ADF4382_PDET_POL_MSK NO_OS_BIT(3)
237 #define ADF4382_RST_LD_MSK NO_OS_BIT(2)
238 #define ADF4382_LD_O_CTRL_MSK NO_OS_GENMASK(1, 0)
241 #define ADF4382_MUXOUT_MSK NO_OS_GENMASK(7, 4)
242 #define ADF4382_ABPW_WD_MSK NO_OS_BIT(3)
243 #define ADF4382_EN_CPTEST_MSK NO_OS_BIT(2)
244 #define ADF4382_CP_DOWN_MSK NO_OS_BIT(1)
245 #define ADF4382_CP_UP_MSK NO_OS_BIT(0)
248 #define ADF4382_BST_REF_MSK NO_OS_BIT(7)
249 #define ADF4382_FILT_REF_MSK NO_OS_BIT(6)
250 #define ADF4382_RDBLR_DC_MSK NO_OS_GENMASK(5, 0)
253 #define ADF4382_MUTE_NCLK_MSK NO_OS_BIT(7)
254 #define ADF4382_MUTE_RCLK_MSK NO_OS_BIT(6)
255 #define ADF4382_REF_SEL_MSK NO_OS_BIT(5)
256 #define ADF4382_INV_RDBLR_MSK NO_OS_BIT(4)
257 #define ADF4382_RDBLR_DEL_SEL_MSK NO_OS_GENMASK(3, 0)
260 #define ADF4382_SYNC_DEL_MSK NO_OS_GENMASK(7, 5)
261 #define ADF4382_RST_SYS_MSK NO_OS_BIT(4)
262 #define ADF4382_EN_ADC_CLK_MSK NO_OS_BIT(3)
263 #define ADF4382_EN_VCAL_MSK NO_OS_BIT(2)
264 #define ADF4382_CAL_CT_SEL_MSK NO_OS_BIT(1)
265 #define ADF4382_DCLK_MODE_MSK NO_OS_BIT(0)
268 #define ADF4382_SPARE_32_MSK NO_OS_BIT(7)
269 #define ADF4382_BLEED_ADJ_CAL_MSK NO_OS_BIT(6)
270 #define ADF4382_DEL_MODE_MSK NO_OS_BIT(5)
271 #define ADF4382_EN_AUTO_ALIGN_MSK NO_OS_BIT(4)
272 #define ADF4382_PHASE_ADJ_POL_MSK NO_OS_BIT(3)
273 #define ADF4382_EFM3_MODE_MSK NO_OS_GENMASK(2, 0)
276 #define ADF4382_PHASE_ADJUST_MSK NO_OS_GENMASK(7, 0)
279 #define ADF4382_PHASE_ADJ_MSK NO_OS_BIT(7)
280 #define ADF4382_DRCLK_DEL_MSK NO_OS_GENMASK(6, 4)
281 #define ADF4382_DNCLK_DEL_MSK NO_OS_GENMASK(3, 1)
282 #define ADF4382_RST_CNTR_MSK NO_OS_BIT(0)
285 #define ADF4382_SPARE_35_MSK NO_OS_GENMASK(7, 6)
286 #define ADF4382_M_VCO_BIAS_MSK NO_OS_GENMASK(5, 0)
289 #define ADF4382_CLKODIV_DB_MSK NO_OS_BIT(7)
290 #define ADF4382_DCLK_DIV_DB_MSK NO_OS_BIT(6)
291 #define ADF4382_SPARE_36_MSK NO_OS_GENMASK(5, 2)
292 #define ADF4382_EN_LUT_GEN_MSK NO_OS_BIT(1)
293 #define ADF4382_EN_LUT_CAL_MSK NO_OS_BIT(0)
296 #define ADF4382_CAL_COUNT_TO_MSK NO_OS_GENMASK(7, 0)
299 #define ADF4382_CAL_VTUNE_TO_LSB_MSK NO_OS_GENMASK(7, 0)
302 #define ADF4382_O_VCO_DB_MSK NO_OS_BIT(7)
303 #define ADF4382_CAL_VTUNE_TO_MSB_MSK NO_OS_GENMASK(6, 0)
306 #define ADF4382_CAL_VCO_TO_LSB_MSK NO_OS_GENMASK(7, 0)
309 #define ADF4382_DEL_CTRL_DB_MSK NO_OS_BIT(7)
310 #define ADF4382_CAL_VCO_TO_MSB_MSK NO_OS_GENMASK(6, 0)
313 #define ADF4382_CNTR_DIV_WORD_MSK NO_OS_GENMASK(7, 0)
316 #define ADF4382_SPARE_3D_MSK NO_OS_BIT(7)
317 #define ADF4382_SYNC_SP_DB_MSK NO_OS_BIT(6)
318 #define ADF4382_CMOS_OV_MSK NO_OS_BIT(5)
319 #define ADF4382_READ_MODE_MSK NO_OS_BIT(4)
320 #define ADF4382_CNTR_DIV_WORD_MSB_MSK NO_OS_GENMASK(3, 0)
323 #define ADF4382_ADC_CLK_DIV_MSK NO_OS_GENMASK(7, 0)
326 #define ADF4382_EN_ADC_CNV_MSK NO_OS_BIT(7)
327 #define ADF4382_EN_ADC_VTEST_MSK NO_OS_BIT(6)
328 #define ADF4382_ADC_VTEST_SEL_MSK NO_OS_BIT(5)
329 #define ADF4382_ADC_MUX_SEL_MSK NO_OS_BIT(4)
330 #define ADF4382_ADC_F_CONV_MSK NO_OS_BIT(3)
331 #define ADF4382_ADC_C_CONV_MSK NO_OS_BIT(2)
332 #define ADF4382_EN_ADC_MSK NO_OS_BIT(1)
333 #define ADF4382_SPARE_3F_MSK NO_OS_BIT(0)
336 #define ADF4382_EXT_DIV_DEC_SEL_MSK NO_OS_BIT(7)
337 #define ADF4382_ADC_CLK_TEST_SEL_MSK NO_OS_BIT(6)
338 #define ADF4382_MUTE_CLKOUT2_MSK NO_OS_GENMASK(5, 3)
339 #define ADF4382_MUTE_CLKOUT1_MSK NO_OS_GENMASK(2, 0)
342 #define ADF4382_EXT_DIV_MSK NO_OS_GENMASK(7, 5)
343 #define ADF4382_EN_VCO_CAP_TEST_MSK NO_OS_BIT(4)
344 #define ADF4382_EN_CALGEN_CAP_TEST_MSK NO_OS_BIT(3)
345 #define ADF4382_EN_CP_CAP_TEST_MSK NO_OS_BIT(2)
346 #define ADF4382_CAP_TEST_STATE_MSK NO_OS_BIT(1)
347 #define ADF4382_TRANS_LOOP_SEL_MSK NO_OS_BIT(0)
350 #define ADF4382_NDIV_PWRUP_TIMEOUT_MSK NO_OS_GENMASK(7, 0)
353 #define ADF4382_CAL_BLEED_FINE_MAX_MSK NO_OS_GENMASK(7, 0)
356 #define ADF4382_VCAL_ZERO_MSK NO_OS_BIT(7)
357 #define ADF4382_VPTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
360 #define ADF4382_SPARE_45_MSK NO_OS_BIT(7)
361 #define ADF4382_VCTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
364 #define ADF4382_NVMDIN_MSK NO_OS_GENMASK(7, 0)
367 #define ADF4382_SPARE_47_MSK NO_OS_BIT(7)
368 #define ADF4382_NVMADDR_MSK NO_OS_GENMASK(6, 3)
369 #define ADF4382_NVMNO_OS_BIT_SEL NO_OS_GENMASK(2, 0)
372 #define ADF4382_TRIM_LATCH_MSK NO_OS_BIT(7)
373 #define ADF4382_NVMTEST_MSK NO_OS_BIT(6)
374 #define ADF4382_NVMPROG_MSK NO_OS_BIT(5)
375 #define ADF4382_NVMRD_MSK NO_OS_BIT(4)
376 #define ADF4382_NVMSTART_MSK NO_OS_BIT(3)
377 #define ADF4382_NVMON_MSK NO_OS_BIT(2)
378 #define ADF4382_MARGIN_MSK NO_OS_GENMASK(1, 0)
381 #define ADF4382_NVMDOUT_MSK NO_OS_GENMASK(7, 0)
384 #define ADF4382_SCAN_MODE_CODE_MSK NO_OS_GENMASK(7, 0)
387 #define ADF4382_TEMP_OFFSET_MSK NO_OS_GENMASK(7, 0)
390 #define ADF4382_SPARE_4C_MSK NO_OS_GENMASK(7, 6)
391 #define ADF4382_TEMP_SLOPE_MSK NO_OS_GENMASK(5, 0)
394 #define ADF4382_VCO_FSM_TEST_MUX_MSK NO_OS_GENMASK(7, 5)
395 #define ADF4382_SPARE_4D_MSK NO_OS_GENMASK(4, 3)
396 #define ADF4382_O_VCO_BIAS_MSK NO_OS_BIT(2)
397 #define ADF4382_O_VCO_BAND_MSK NO_OS_BIT(1)
398 #define ADF4382_O_VCO_CORE_MSK NO_OS_BIT(0)
401 #define ADF4382_SPARE_4E_MSK NO_OS_GENMASK(7, 5)
402 #define ADF4382_EN_TWO_PASS_CAL_MSK NO_OS_BIT(4)
403 #define ADF4382_TWO_PASS_BAND_START_MSK NO_OS_GENMASK(3, 0)
406 #define ADF4382_LUT_SCALE_MSK NO_OS_GENMASK(7, 0)
409 #define ADF4382_SPARE0_MSK NO_OS_GENMASK(7, 0)
412 #define ADF4382_SPARE1_MSK NO_OS_GENMASK(7, 0)
415 #define ADF4382_SYNC_REF_SPARE_MSK NO_OS_GENMASK(7, 4)
416 #define ADF4382_SYNC_MON_DEL_MSK NO_OS_GENMASK(3, 0)
419 #define ADF4382_SPARE_53_MSK NO_OS_BIT(7)
420 #define ADF4382_PD_SYNC_MON_MSK NO_OS_BIT(6)
421 #define ADF4382_SYNC_SEL_MSK NO_OS_BIT(5)
422 #define ADF4382_RST_SYNC_MON_MSK NO_OS_BIT(4)
423 #define ADF4382_SYNC_SH_DEL_MSK NO_OS_GENMASK(3, 0)
426 #define ADF4382_ADC_ST_CNV_MSK NO_OS_BIT(0)
429 #define ADF4382_LOCKED_MSK NO_OS_BIT(0)
431 #define ADF4382_SPI_3W_CFG(x) (no_os_field_prep(ADF4382_SDO_ACTIVE_MSK, x) | \
432 no_os_field_prep(ADF4382_SDO_ACTIVE_R_MSK, x))
433 #define ADF4382_BLEED_MSB_MSK (ADF4382_COARSE_BLEED_MSK | \
434 ADF4382_FINE_BLEED_MSB_MSK)
436 #define ADF4382_SPI_SCRATCHPAD_TEST 0x5A
439 #define ADF4382_SPI_WRITE_CMD 0x0
440 #define ADF4382_SPI_READ_CMD 0x8000
441 #define ADF4382_SPI_DUMMY_DATA 0x00
442 #define ADF4382_BUFF_SIZE_BYTES 3
443 #define ADF4382_VCO_FREQ_MIN 11000000000U // 11GHz
444 #define ADF4382_VCO_FREQ_MAX 22000000000U // 22GHz
445 #define ADF4382A_VCO_FREQ_MIN 11500000000U // 11.5GHz
446 #define ADF4382A_VCO_FREQ_MAX 21000000000U // 21GHz
447 #define ADF4382_MOD1WORD 0x2000000U // 2^25
448 #define ADF4382_MOD2WORD_MAX 0xFFFFFFU // 2^24 - 1
449 #define ADF4382_PHASE_RESYNC_MOD2WORD_MAX 0x1FFFFU // 2^17 - 1
450 #define ADF4382_CHANNEL_SPACING_MAX 78125U
451 #define ADF4382_PFD_FREQ_MAX 625000000U // 625MHz
452 #define ADF4382_PFD_FREQ_FRAC_MAX 250000000U // 250MHz
453 #define ADF4382_PFD_FREQ_MIN 5400000U // 5.4MHz
454 #define ADF4382_DCLK_DIV1_0_MAX 160000000U // 160MHz
455 #define ADF4382_DCLK_DIV1_1_MAX 320000000U // 320MHz
456 #define ADF4382_CLKOUT_DIV_REG_VAL_MAX 4
457 #define ADF4382A_CLKOUT_DIV_REG_VAL_MAX 2
459 #define ADF4382_RFOUT_MAX 22000000000U
460 #define ADF4382_RFOUT_MIN 687500000U
461 #define ADF4382A_RFOUT_MAX 21000000000U
462 #define ADF4382A_RFOUT_MIN 2875000000U
463 #define ADF4382_REF_CLK_MAX 5000000000U
464 #define ADF4382_REF_CLK_MIN 10000000
465 #define ADF4382_REF_DIV_MAX 63
466 #define ADF4382_OUT_PWR_MAX 15
467 #define ADF4382_CPI_VAL_MAX 15
468 #define ADF4382_BLEED_WORD_MAX 8191
470 #define ADF4382_PHASE_BLEED_CNST 2044000
471 #define ADF4382_VCO_CAL_CNT 202
472 #define ADF4382_VCO_CAL_VTUNE 124
473 #define ADF4382_VCO_CAL_ALC 250
474 #define ADF4382_POR_DELAY_US 200
475 #define ADF4382_LKD_DELAY_US 500
479 #define NS_TO_PS KHZ_PER_MHZ
649 uint8_t mask, uint8_t data);
uint8_t clkout_div_reg_val_max
Definition: adf4382.h:529
#define ADF4382_FRAC1WORD_MSB_MSK
Definition: adf4382.h:117
adf4382_dev_id
Supported device ids.
Definition: adf4382.h:484
#define ADF4382_EN_ADC_CLK_MSK
Definition: adf4382.h:262
int adf4382_set_en_sync(struct adf4382_dev *dev, bool en)
Set the sync to enable or disable based on the passed parameter. If the parameter is different then 0...
Definition: adf4382.c:521
#define ADF4382_COARSE_BLEED_MSK
Definition: adf4382.h:155
#define ADF4382_RFOUT_MIN
Definition: adf4382.h:460
#define ADF4382_REF_CLK_MAX
Definition: adf4382.h:463
#define ADF4382A_RFOUT_MIN
Definition: adf4382.h:462
#define ADF4382_PHASE_RESYNC_MOD2WORD_MAX
Definition: adf4382.h:449
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
uint8_t cp_i
Definition: adf4382.h:521
enum adf4382_dev_id id
Definition: adf4382.h:505
#define ADF4382_INT_MODE_MSK
Definition: adf4382.h:123
int adf4382_reg_dump(struct adf4382_dev *dev)
Will output on the terminal the values of all the ADF4382 registers.
Definition: adf4382.c:166
Header file of SPI Interface.
#define NS_TO_PS
Definition: adf4382.h:479
#define ADF4382_FRAC2WORD_LSB_MSK
Definition: adf4382.h:131
ADF4382 register format structure for default values.
Definition: adf4371.c:191
uint8_t ref_div
Definition: adf4382.h:501
#define ADF4382_EN_RDBLR_MSK
Definition: adf4382.h:167
#define ADF4382_VCO_CAL_ALC
Definition: adf4382.h:473
int adf4382_get_rfout(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed output frequency.
Definition: adf4382.c:596
uint64_t ref_freq_hz
Definition: adf4382.h:498
#define ADF4382_CPI_VAL_MAX
Definition: adf4382.h:467
int adf4382_get_en_sync(struct adf4382_dev *dev, bool *en)
Gets the value the sync if it is enabled or disable.
Definition: adf4382.c:535
int adf4382_get_en_sync(struct adf4382_dev *dev, bool *en)
Gets the value the sync if it is enabled or disable.
Definition: adf4382.c:535
int adf4382_set_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t pwr)
Set the output power register value of a channel and reset everything over to maximum supported value...
Definition: adf4382.c:420
#define ADF4382_PHASE_ADJ_POL_MSK
Definition: adf4382.h:272
#define pr_err(fmt, args...)
Definition: no_os_print_log.h:94
uint64_t freq
Definition: adf4382.h:518
int adf4382_set_rfout(struct adf4382_dev *dev, uint64_t val)
Set the desired output frequency and reset everything over to maximum supported value of 22GHz (21GHz...
Definition: adf4382.c:558
Header file of Delay functions.
int adf4382_get_bleed_word(struct adf4382_dev *dev, int32_t *word)
Gets the value of the set bleed word.
Definition: adf4382.c:390
uint8_t ref_div
Definition: adf4382.h:520
#define ADF4382_DEL_MODE_MSK
Definition: adf4382.h:270
int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en)
Set the output channel to enable or disable based on the passed parameter. If the parameter is differ...
Definition: adf4382.c:471
#define ADF4382_RFOUT_MAX
Definition: adf4382.h:459
int adf4382_remove(struct adf4382_dev *dev)
Free resources allocated for ADF4382.
Definition: adf4382.c:1289
#define pr_info(fmt, args...)
Definition: no_os_print_log.h:121
#define ADF4382_FINE_BLEED_LSB_MSK
Definition: adf4382.h:149
#define NO_OS_DIV_ROUND_CLOSEST_ULL(x, y)
Definition: no_os_util.h:60
int adf4382_get_cp_i(struct adf4382_dev *dev, int32_t *reg_val)
Gets the charge pump value from the register. The value will be between 0 and 15 on 8 bits....
Definition: adf4382.c:349
#define ADF4382_FRAC1WORD_LSB_MSK
Definition: adf4382.h:111
uint64_t vco_min
Definition: adf4382.h:526
int adf4382_set_freq(struct adf4382_dev *dev)
Set the output frequency.
Definition: adf4382.c:794
bool spi_3wire_en
Definition: adf4382.h:496
#define MICROAMPER_PER_AMPER
Definition: no_os_units.h:70
#define ADF4382_VCO_CAL_VTUNE
Definition: adf4382.h:472
Definition: ad9361_util.h:75
#define ADF4382_CAL_CT_SEL_MSK
Definition: adf4382.h:264
uint64_t vco_max
Definition: adf4382.h:525
uint64_t no_os_div64_u64_rem(uint64_t dividend, uint64_t divisor, uint64_t *remainder)
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
#define ADF4382_SPI_SCRATCHPAD_TEST
Definition: adf4382.h:436
@ ID_ADF4382A
Definition: adf4382.h:486
ADF4382 Initialization Parameters structure.
Definition: adf4382.h:493
int adf4382_set_bleed_word(struct adf4382_dev *dev, int32_t word)
Set the bleed word, which represents the value of the bleed current written to the register space.
Definition: adf4382.c:371
#define ADF4382_EN_BLEED_MSK
Definition: adf4382.h:162
#define ADF4382_CLK1_OPWR_MSK
Definition: adf4382.h:205
#define ADF4382_MOD2WORD_MAX
Definition: adf4382.h:448
#define MHZ
Definition: adf4382.h:477
#define ADF4382_VAR_MOD_EN_MSK
Definition: adf4382.h:198
int adf4382_set_en_sync(struct adf4382_dev *dev, bool en)
Set the sync to enable or disable based on the passed parameter. If the parameter is different then 0...
Definition: adf4382.c:521
int adf4382_get_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t *pwr)
Gets the output power register value.
Definition: adf4382.c:444
#define ADF4382_REF_CLK_MIN
Definition: adf4382.h:464
#define ADF4382_VCO_FREQ_MAX
Definition: adf4382.h:444
#define ADF4382_FRAC1WORD_MID_MSK
Definition: adf4382.h:114
#define ADF4382_EN_PHASE_RESYNC_MSK
Definition: adf4382.h:152
int adf4382_spi_write(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADF4382 over SPI.
Definition: adf4382.c:74
bool spi_3wire_en
Definition: adf4382.h:515
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
int adf4382_set_ref_clk(struct adf4382_dev *dev, uint64_t val)
Set the desired reference frequency and reset everything over to maximum supported value of 5GHz to t...
Definition: adf4382.c:207
int adf4382_get_ref_div(struct adf4382_dev *dev, int32_t *div)
Gets the value the reference divider.
Definition: adf4382.c:305
int adf4382_set_ref_clk(struct adf4382_dev *dev, uint64_t val)
Set the desired reference frequency and reset everything over to maximum supported value of 5GHz to t...
Definition: adf4382.c:207
#define ADF4382_FRAC1WORD_MSB
Definition: adf4382.h:125
#define NO_OS_DIV_ROUND_UP(x, y)
Definition: no_os_util.h:56
#define ADF4382_DCLK_MODE_MSK
Definition: adf4382.h:265
#define ADF4382_N_INT_LSB_MSK
Definition: adf4382.h:103
#define ADF4382_OUT_PWR_MAX
Definition: adf4382.h:466
bool cmos_3v3
Definition: adf4382.h:497
uint32_t phase_adj
Definition: adf4382.h:524
int adf4382_get_phase_pol(struct adf4382_dev *dev, bool *polarity)
Gets the polarity of the phase adjust.
Definition: adf4382.c:1144
#define ADF4382_LOCKED_MSK
Definition: adf4382.h:429
uint64_t freq
Definition: adf4382.h:499
#define ADF4382_VCO_CAL_CNT
Definition: adf4382.h:471
ADF4382 Device Descriptor.
Definition: adf4382.h:512
int adf4382_spi_read(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADF4382 over SPI.
Definition: adf4382.c:104
#define ADF4382_FRAC2WORD_MID_MSK
Definition: adf4382.h:134
int adf4382_get_ref_div(struct adf4382_dev *dev, int32_t *div)
Gets the value the reference divider.
Definition: adf4382.c:305
int adf4382_get_phase_pol(struct adf4382_dev *dev, bool *polarity)
Gets the polarity of the phase adjust.
Definition: adf4382.c:1144
#define NO_OS_DIV_U64(x, y)
Definition: no_os_util.h:113
#define ADF4382_PD_SYNC_MSK
Definition: adf4382.h:211
int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en)
Set the output channel to enable or disable based on the passed parameter. If the parameter is differ...
Definition: adf4382.c:471
uint8_t val
Definition: adf4371.c:193
#define ADF4382_MOD2WORD_LSB_MSK
Definition: adf4382.h:140
int adf4382_set_bleed_word(struct adf4382_dev *dev, int32_t word)
Set the bleed word, which represents the value of the bleed current written to the register space.
Definition: adf4382.c:371
#define ADF4382_CLKOUT_DIV_MSK
Definition: adf4382.h:106
#define ADF4382_SPI_READ_CMD
Definition: adf4382.h:440
int adf4382_remove(struct adf4382_dev *dev)
Free resources allocated for ADF4382.
Definition: adf4382.c:1289
#define ADF4382_REF_DIV_MAX
Definition: adf4382.h:465
int adf4382_set_cp_i(struct adf4382_dev *dev, int32_t reg_val)
Set the charge pump value which will be written to the register. The value will be between 0 and 15 o...
Definition: adf4382.c:328
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:189
#define ADF4382_DCLK_DIV1_0_MAX
Definition: adf4382.h:454
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
#define ADF4382_CP_I_MSK
Definition: adf4382.h:163
#define no_os_clamp(val, min_val, max_val)
Definition: no_os_util.h:73
uint8_t ld_count
Definition: adf4382.h:504
bool ref_doubler_en
Definition: adf4382.h:519
#define ADF4382_VCO_FREQ_MIN
Definition: adf4382.h:443
#define ADF4382_N_INT_MSB_MSK
Definition: adf4382.h:108
#define ADF4382A_RFOUT_MAX
Definition: adf4382.h:461
int adf4382_get_en_ref_doubler(struct adf4382_dev *dev, bool *en)
Gets the value the doubler if it is enabled or disable and stores it it the dev structure.
Definition: adf4382.c:264
uint32_t no_os_greatest_common_divisor(uint32_t a, uint32_t b)
#define ADF4382_CMOS_OV_MSK
Definition: adf4382.h:318
int adf4382_set_ref_div(struct adf4382_dev *dev, int32_t div)
Set the reference divider value and reset everything over to maximum supported value of 63 to the max...
Definition: adf4382.c:286
int adf4382_get_en_chan(struct adf4382_dev *dev, uint8_t ch, bool *en)
Gets the value the output channel if it is enabled or disable.
Definition: adf4382.c:494
#define ADF4382_POR_DELAY_US
Definition: adf4382.h:474
bool ref_doubler_en
Definition: adf4382.h:500
#define ADF4382_MOD1WORD
Definition: adf4382.h:447
int adf4382_get_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t *pwr)
Gets the output power register value.
Definition: adf4382.c:444
#define ADF4382_PHASE_ADJ_MSK
Definition: adf4382.h:279
#define ADF4382_FINE_BLEED_MSB_MSK
Definition: adf4382.h:156
int adf4382_init(struct adf4382_dev **device, struct adf4382_init_param *init_param)
Initializes the ADF4382.
Definition: adf4382.c:1187
#define ADF4382A_CLKOUT_DIV_REG_VAL_MAX
Definition: adf4382.h:457
uint8_t ld_count
Definition: adf4382.h:523
int adf4382_spi_update_bits(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Updates the values of the ADF4382 register.
Definition: adf4382.c:142
#define ADF4382_LKD_DELAY_US
Definition: adf4382.h:475
uint8_t cp_i
Definition: adf4382.h:502
#define ADF4382A_VCO_FREQ_MAX
Definition: adf4382.h:446
int adf4382_reg_dump(struct adf4382_dev *dev)
Will output on the terminal the values of all the ADF4382 registers.
Definition: adf4382.c:166
#define ADF4382_DCLK_DIV1_MSK
Definition: adf4382.h:183
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
#define ADF4382_BUFF_SIZE_BYTES
Definition: adf4382.h:442
ADF4382 register initialization.
int adf4382_set_phase_adjust(struct adf4382_dev *dev, uint32_t phase_ps)
Set the phase adjustment in pico-seconds. The phase adjust will enable the Bleed current option as we...
Definition: adf4382.c:1060
bool cmos_3v3
Definition: adf4382.h:516
int adf4382_get_rfout(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed output frequency.
Definition: adf4382.c:596
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 ADF4382_LDWIN_PW_MSK
Definition: adf4382.h:228
int adf4382_get_ref_clk(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed reference frequency.
Definition: adf4382.c:229
int adf4382_get_bleed_word(struct adf4382_dev *dev, int32_t *word)
Gets the value of the set bleed word.
Definition: adf4382.c:390
#define ADF4382_SPI_DUMMY_DATA
Definition: adf4382.h:441
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:120
uint32_t gcd(uint32_t x, uint32_t y)
Computes the greatest common divider of two numbers.
Definition: adf4156.c:215
int adf4382_set_freq(struct adf4382_dev *dev)
Set the output frequency.
Definition: adf4382.c:794
#define ADF4382_CLKOUT_DIV_REG_VAL_MAX
Definition: adf4382.h:456
#define ADF4382_BLEED_WORD_MAX
Definition: adf4382.h:468
int adf4382_spi_update_bits(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Updates the values of the ADF4382 register.
Definition: adf4382.c:142
#define ADF4382_CLK2_OPWR_MSK
Definition: adf4382.h:204
#define ADF4382_DCLK_DIV1_1_MAX
Definition: adf4382.h:455
uint16_t bleed_word
Definition: adf4382.h:503
#define ADF4382_PD_CLKOUT2_MSK
Definition: adf4382.h:225
Implementation of adf4382 Driver.
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
#define ADF4382_R_DIV_MSK
Definition: adf4382.h:168
int adf4382_get_en_chan(struct adf4382_dev *dev, uint8_t ch, bool *en)
Gets the value the output channel if it is enabled or disable.
Definition: adf4382.c:494
#define ADF4382_SPI_WRITE_CMD
Definition: adf4382.h:439
int adf4382_get_en_ref_doubler(struct adf4382_dev *dev, bool *en)
Gets the value the doubler if it is enabled or disable and stores it it the dev structure.
Definition: adf4382.c:264
int adf4382_spi_read(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADF4382 over SPI.
Definition: adf4382.c:104
struct no_os_spi_init_param * spi_init
Definition: adf4382.h:495
int adf4382_spi_write(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADF4382 over SPI.
Definition: adf4382.c:74
struct no_os_spi_desc * spi_desc
Definition: adf4382.h:514
#define ADF4382_SPI_3W_CFG(x)
Definition: adf4382.h:431
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
int adf4382_get_ref_clk(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed reference frequency.
Definition: adf4382.c:229
int adf4382_set_en_ref_doubler(struct adf4382_dev *dev, bool en)
Set the reference doubler to enable or disable based on the passed parameter. If the parameter is dif...
Definition: adf4382.c:247
int adf4382_set_phase_pol(struct adf4382_dev *dev, bool polarity)
Set the phase polarity. If pol = 0 then it will add the phase value otherwise it will subtract the ph...
Definition: adf4382.c:1128
uint64_t freq_min
Definition: adf4382.h:528
int adf4382_set_phase_pol(struct adf4382_dev *dev, bool polarity)
Set the phase polarity. If pol = 0 then it will add the phase value otherwise it will subtract the ph...
Definition: adf4382.c:1128
int adf4382_init(struct adf4382_dev **dev, struct adf4382_init_param *init_param)
Initializes the ADF4382.
Definition: adf4382.c:1187
#define ADF4382_FRAC2WORD_MSB_MSK
Definition: adf4382.h:137
#define ADF4382_PHASE_BLEED_CNST
Definition: adf4382.h:470
int adf4382_set_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t pwr)
Set the output power register value of a channel and reset everything over to maximum supported value...
Definition: adf4382.c:420
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 ADF4382_BLEED_MSB_MSK
Definition: adf4382.h:433
Header file of utility functions.
#define ADF4382_CHANNEL_SPACING_MAX
Definition: adf4382.h:450
#define ADF4382A_VCO_FREQ_MIN
Definition: adf4382.h:445
int adf4382_set_cp_i(struct adf4382_dev *dev, int32_t reg_val)
Set the charge pump value which will be written to the register. The value will be between 0 and 15 o...
Definition: adf4382.c:328
uint16_t bleed_word
Definition: adf4382.h:522
int adf4382_set_en_ref_doubler(struct adf4382_dev *dev, bool en)
Set the reference doubler to enable or disable based on the passed parameter. If the parameter is dif...
Definition: adf4382.c:247
@ ID_ADF4382
Definition: adf4382.h:485
#define ADF4382_RESET_CMD
Definition: adf4382.h:55
uint16_t reg
Definition: adf4371.c:192
#define ADF4382_MOD2WORD_MID_MSK
Definition: adf4382.h:143
#define S_TO_NS
Definition: adf4382.h:478
#define ADF4382_PD_CLKOUT1_MSK
Definition: adf4382.h:224
#define ADF4382_LD_COUNT_OPWR_MSK
Definition: adf4382.h:229
#define no_os_bit_swap_constant_8(x)
Definition: no_os_util.h:100
int adf4382_set_rfout(struct adf4382_dev *dev, uint64_t val)
Set the desired output frequency and reset everything over to maximum supported value of 22GHz (21GHz...
Definition: adf4382.c:558
uint64_t ref_freq_hz
Definition: adf4382.h:517
uint64_t freq_max
Definition: adf4382.h:527
int adf4382_set_phase_adjust(struct adf4382_dev *dev, uint32_t phase_ps)
Set the phase adjustment in pico-seconds. The phase adjust will enable the Bleed current option as we...
Definition: adf4382.c:1060
int adf4382_get_cp_i(struct adf4382_dev *dev, int32_t *reg_val)
Gets the charge pump value from the register. The value will be between 0 and 15 on 8 bits....
Definition: adf4382.c:349
#define NO_OS_DIV_ROUND_CLOSEST(x, y)
Definition: no_os_util.h:58
#define ADF4382_MOD2WORD_MSB_MSK
Definition: adf4382.h:146
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
int adf4382_set_ref_div(struct adf4382_dev *dev, int32_t div)
Set the reference divider value and reset everything over to maximum supported value of 63 to the max...
Definition: adf4382.c:286
uint64_t no_os_div_u64(uint64_t dividend, uint32_t divisor)