39#define AD9517_READ (1 << 15)
40#define AD9517_WRITE (0 << 15)
41#define AD9517_CNT(x) ((x - 1) << 13)
42#define AD9517_ADDR(x) (x & 0x3FF)
44#define AD9517_T1B (1 << 16)
45#define AD9517_T2B (2 << 16)
46#define AD9517_T3B (3 << 16)
47#define AD9517_TRANSF_LEN(x) ((uint32_t)x >> 16)
52#define AD9517_REG_SERIAL_PORT_CONFIG (AD9517_T1B | 0x000)
53#define AD9517_REG_PART_ID (AD9517_T1B | 0x003)
54#define AD9517_REG_READBACK_CTRL (AD9517_T1B | 0x004)
57#define AD9517_REG_PFD_CHARGE_PUMP (AD9517_T1B | 0x010)
58#define AD9517_REG_R_COUNTER (AD9517_T2B | 0x012)
59#define AD9517_REG_A_COUNTER (AD9517_T1B | 0x013)
60#define AD9517_REG_B_COUNTER (AD9517_T2B | 0x015)
61#define AD9517_REG_PLL_CTRL_1 (AD9517_T1B | 0x016)
62#define AD9517_REG_PLL_CTRL_2 (AD9517_T1B | 0x017)
63#define AD9517_REG_PLL_CTRL_3 (AD9517_T1B | 0x018)
64#define AD9517_REG_PLL_CTRL_4 (AD9517_T1B | 0x019)
65#define AD9517_REG_PLL_CTRL_5 (AD9517_T1B | 0x01A)
66#define AD9517_REG_PLL_CTRL_6 (AD9517_T1B | 0x01B)
67#define AD9517_REG_PLL_CTRL_7 (AD9517_T1B | 0x01C)
68#define AD9517_REG_PLL_CTRL_8 (AD9517_T1B | 0x01D)
69#define AD9517_REG_PLL_READBACK (AD9517_T1B | 0x01F)
72#define AD9517_REG_OUT4_DELAY_BYPASS (AD9517_T1B | 0x0A0)
73#define AD9517_REG_OUT4_DELAY_FULL_SCALE (AD9517_T1B | 0x0A1)
74#define AD9517_REG_OUT4_DELAY_FRACTION (AD9517_T1B | 0x0A2)
75#define AD9517_REG_OUT5_DELAY_BYPASS (AD9517_T1B | 0x0A3)
76#define AD9517_REG_OUT5_DELAY_FULL_SCALE (AD9517_T1B | 0x0A4)
77#define AD9517_REG_OUT5_DELAY_FRACTION (AD9517_T1B | 0x0A5)
78#define AD9517_REG_OUT6_DELAY_BYPASS (AD9517_T1B | 0x0A6)
79#define AD9517_REG_OUT6_DELAY_FULL_SCALE (AD9517_T1B | 0x0A7)
80#define AD9517_REG_OUT6_DELAY_FRACTION (AD9517_T1B | 0x0A8)
81#define AD9517_REG_OUT7_DELAY_BYPASS (AD9517_T1B | 0x0A9)
82#define AD9517_REG_OUT7_DELAY_FULL_SCALE (AD9517_T1B | 0x0AA)
83#define AD9517_REG_OUT7_DELAY_FRACTION (AD9517_T1B | 0x0AB)
86#define AD9517_REG_LVPECL_OUT0 (AD9517_T1B | 0x0F0)
87#define AD9517_REG_LVPECL_OUT1 (AD9517_T1B | 0x0F1)
88#define AD9517_REG_LVPECL_OUT2 (AD9517_T1B | 0x0F4)
89#define AD9517_REG_LVPECL_OUT3 (AD9517_T1B | 0x0F5)
92#define AD9517_REG_LVDS_CMOS_OUT4 (AD9517_T1B | 0x140)
93#define AD9517_REG_LVDS_CMOS_OUT5 (AD9517_T1B | 0x141)
94#define AD9517_REG_LVDS_CMOS_OUT6 (AD9517_T1B | 0x142)
95#define AD9517_REG_LVDS_CMOS_OUT7 (AD9517_T1B | 0x143)
98#define AD9517_REG_DIVIDER_0_0 (AD9517_T1B | 0x190)
99#define AD9517_REG_DIVIDER_0_1 (AD9517_T1B | 0x191)
100#define AD9517_REG_DIVIDER_0_2 (AD9517_T1B | 0x192)
101#define AD9517_REG_DIVIDER_1_0 (AD9517_T1B | 0x196)
102#define AD9517_REG_DIVIDER_1_1 (AD9517_T1B | 0x197)
103#define AD9517_REG_DIVIDER_1_2 (AD9517_T1B | 0x198)
106#define AD9517_REG_LVDS_CMOS_DIVIDER_2_0 (AD9517_T1B | 0x199)
107#define AD9517_REG_LVDS_CMOS_DIVIDER_2_1 (AD9517_T1B | 0x19A)
108#define AD9517_REG_LVDS_CMOS_DIVIDER_2_2 (AD9517_T1B | 0x19B)
109#define AD9517_REG_LVDS_CMOS_DIVIDER_2_3 (AD9517_T1B | 0x19C)
110#define AD9517_REG_LVDS_CMOS_DIVIDER_2_4 (AD9517_T1B | 0x19D)
111#define AD9517_REG_LVDS_CMOS_DIVIDER_3_0 (AD9517_T1B | 0x19E)
112#define AD9517_REG_LVDS_CMOS_DIVIDER_3_1 (AD9517_T1B | 0x19F)
113#define AD9517_REG_LVDS_CMOS_DIVIDER_3_2 (AD9517_T1B | 0x1A0)
114#define AD9517_REG_LVDS_CMOS_DIVIDER_3_3 (AD9517_T1B | 0x1A1)
115#define AD9517_REG_LVDS_CMOS_DIVIDER_3_4 (AD9517_T1B | 0x1A2)
118#define AD9517_REG_VCO_DIVIDER (AD9517_T1B | 0x1E0)
119#define AD9517_REG_INPUT_CLKS (AD9517_T1B | 0x1E1)
122#define AD9517_REG_POWER_DOWN_SYNC (AD9517_T1B | 0x230)
125#define AD9517_REG_UPDATE_ALL_REGS (AD9517_T1B | 0x232)
128#define AD9517_SDO_ACTIVE ((1 << 7) | (1 << 0))
129#define AD9517_LSB_FIRST ((1 << 6) | (1 << 1))
130#define AD9517_SOFT_RESET ((1 << 5) | (1 << 2))
131#define AD9517_LONG_INSTRUCTION ((1 << 4) | (1 << 3))
134#define AD9517_REG_BANK_SELECTION (1 << 0)
137#define AD9517_PFD_POLARITY (1 << 7)
138#define AD9517_CP_CURRENT(x) ((x & 0x7) << 4)
139#define AD9517_CP_MODE(x) ((x & 0x3) << 2)
140#define AD9517_PLL_POWER_DOWN(x) ((x & 0x3) << 0)
143#define AD9517_R_COUNTER(x) ((x & 0x3FFF) << 0)
146#define AD9517_A_COUNTER(x) ((x & 0x3F) << 0)
149#define AD9517_B_COUNTER(x) ((x & 0x1FFF) << 0)
152#define AD9517_CP_VCP_DIV2 (1 << 7)
153#define AD9517_RESET_R_COUNTER (1 << 6)
154#define AD9517_RESET_A_B_COUNTERS (1 << 5)
155#define AD9517_RESET_ALL_COUNTERS (1 << 4)
156#define AD9517_B_COUNTER_BYPASS (1 << 3)
157#define AD9517_PRESCALER_P(x) ((x & 0x7) << 0)
160#define AD9517_STATUS_PIN_CTRL(x) ((x & 0x3F) << 2)
161#define AD9517_ANTIBACKLASH_PULSE_WIDTH(x) ((x & 0x3) << 0)
164#define AD9517_LOCK_DETECT_COUNTER(x) ((x & 0x3) << 5)
165#define AD9517_DIGITAL_LOCK_DETECT_WINDOW (1 << 4)
166#define AD9517_DIS_DIGITAL_LOCK_DETECT (1 << 3)
167#define AD9517_VCO_CAL_DIVIDER(x) ((x & 0x3) << 1)
168#define AD9517_VCO_CAL_NOW (1 << 0)
171#define AD9517_SYNC_PIN_RESET(x) ((x & 0x3) << 6)
172#define AD9517_R_PATH_DELAY(x) ((x & 0x7) << 3)
173#define AD9517_N_PATH_DELAY(x) ((x & 0x7) << 0)
176#define AD9517_REF_FREQ_MONITOR_THRESHOLD (1 << 6)
177#define AD9517_LD_PIN_CTRL(x) ((x & 0x3F) << 0)
180#define AD9517_VCO_FREQ_MONITOR (1 << 7)
181#define AD9517_REF2_FREQ_MONITOR (1 << 6)
182#define AD9517_REF1_FREQ_MONITOR (1 << 5)
183#define AD9517_REFMON_PIN_CTRL(x) ((x & 0x1F) << 0)
186#define AD9517_DIS_SWITCHOVER_DEGLITCH (1 << 7)
187#define AD9517_SELECT_REF2 (1 << 6)
188#define AD9517_USE_REF_SEL_PIN (1 << 5)
189#define AD9517_REF2_POWER_ON (1 << 2)
190#define AD9517_REF1_POWER_ON (1 << 1)
191#define AD9517_DIFF_REF (1 << 0)
194#define AD9517_PLL_STATUS_REG_DIS (1 << 4)
195#define AD9517_LD_PIN_COMPARATOR_EN (1 << 3)
196#define AD9517_HOLDOVER_EN ((1 << 2) | (1 << 0))
197#define AD9517_EXT_HOLDOVER_CTRL (1 << 1)
200#define AD9517_VCO_CAL_FINISHED (1 << 6)
201#define AD9517_HOLDOVER_ACTIVE (1 << 5)
202#define AD9517_REF2_SELECTED (1 << 4)
203#define AD9517_VCO_FREQ_GREATER (1 << 3)
204#define AD9517_REF2_FREQ_GREATER (1 << 2)
205#define AD9517_REF1_FREQ_GREATER (1 << 1)
206#define AD9517_DIGITAL_LOCK_DETECT (1 << 0)
209#define AD9517_OUT_DELAY_BYPASS (1 << 0)
212#define AD9517_OUT_RAMP_CAPACITORS(x) ((x & 0x7) << 3)
213#define AD9517_OUT_RAMP_CURRENT(x) ((x & 0x7) << 0)
216#define AD9517_OUT_DELAY_FRACTION(x) ((x & 0x3F) << 0)
219#define AD9517_OUT_LVPECL_INVERT (1 << 4)
220#define AD9517_OUT_LVPECL_DIFF_VOLTAGE(x) ((x & 0x3) << 2)
221#define AD9517_OUT_LVPECL_POWER_DOWN(x) ((x & 0x3) << 0)
224#define AD9517_OUT_LVDS_CMOS_INVERT(x) ((x & 0x7) << 5)
225#define AD9517_OUT_CMOS_B (1 << 4)
226#define AD9517_OUT_LVDS_CMOS (1 << 3)
227#define AD9517_OUT_LVDS_OUTPUT_CURRENT(x) ((x & 0x3) << 1)
228#define AD9517_OUT_LVDS_CMOS_POWER_DOWN (1 << 0)
231#define AD9517_DIVIDER_LOW_CYCLES(x) ((x & 0xF) << 4)
232#define AD9517_DIVIDER_HIGH_CYCLES(x) ((x & 0xF) << 0)
235#define AD9517_DIVIDER_BYPASS (1 << 7)
236#define AD9517_LVPECL_DIVIDER_NOSYNC (1 << 6)
237#define AD9517_LVPECL_DIVIDER_FORCE_HIGH (1 << 5)
238#define AD9517_DIVIDER_START_HIGH (1 << 4)
239#define AD9517_DIVIDER_PHASE_OFFSET(x) ((x & 0xF) << 0)
242#define AD9517_DIVIDER_DIRECT_TO_OUTPUT (1 << 1)
243#define AD9517_DIVIDER_DCCOFF (1 << 0)
246#define AD9517_LOW_CYCLES_DIVIDER_1(x) ((x & 0xF) << 4)
247#define AD9517_HIGH_CYCLES_DIVIDER_1(x) ((x & 0xF) << 0)
250#define AD9517_PHASE_OFFSET_DIVIDER_2(x) ((x & 0xF) << 4)
251#define AD9517_PHASE_OFFSET_DIVIDER_1(x) ((x & 0xF) << 0)
254#define AD9517_LOW_CYCLES_DIVIDER_2(x) ((x & 0xF) << 4)
255#define AD9517_HIGH_CYCLES_DIVIDER_2(x) ((x & 0xF) << 0)
258#define AD9517_BYPASS_DIVIDER_2 (1 << 5)
259#define AD9517_BYPASS_DIVIDER_1 (1 << 4)
260#define AD9517_LVDS_CMOS_DIVIDER_NOSYNC (1 << 3)
261#define AD9517_LVDS_CMOS_DIVIDER_FORCE_HIGH (1 << 2)
262#define AD9517_START_HIGH_DIVIDER_2 (1 << 1)
263#define AD9517_START_HIGH_DIVIDER_1 (1 << 0)
266#define AD9517_DIVIDER_DCCOFF (1 << 0)
269#define AD9517_VCO_DIVIDER(x) ((x & 0x7) << 0)
272#define AD9517_POWER_DOWN_CLK_INPUT_SECTION (1 << 4)
273#define AD9517_POWER_DOWN_VCO_CLK_INTERFACE (1 << 3)
274#define AD9517_POWER_DOWN_VCO_CLK (1 << 2)
275#define AD9517_SEL_VCO_CLK (1 << 1)
276#define AD9517_BYPASS_VCO_DIVIDER (1 << 0)
279#define AD9517_POWER_DOWN_SYNC (1 << 2)
280#define AD9517_POWER_DOWN_DIST_REF (1 << 1)
281#define AD9517_SOFT_SYNC (1 << 0)
284#define AD9517_UPDATE_ALL_REGS (1 << 0)
286#define AD9517_1_MIN_VCO_FREQ 2300000000
287#define AD9517_1_MAX_VCO_FREQ 2650000000
288#define AD9517_2_MIN_VCO_FREQ 2050000000
289#define AD9517_2_MAX_VCO_FREQ 2330000000
290#define AD9517_3_MIN_VCO_FREQ 1750000000
291#define AD9517_3_MAX_VCO_FREQ 2250000000
292#define AD9517_4_MIN_VCO_FREQ 1450000000
293#define AD9517_4_MAX_VCO_FREQ 1800000000
294#define AD9517_MAX_PFD_FREQ 100000000
295#define AD9517_MAX_PRESCLAER_OUT_FREQ 300000000
406 uint32_t *reg_value);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int64_t ad9517_frequency(struct ad9517_dev *dev, int32_t channel, int64_t frequency)
Sets the frequency on the specified channel.
Definition ad9517.c:473
int32_t ad9517_setup(struct ad9517_dev **device, struct ad9517_init_param init_param)
Initializes the AD9517.
Definition ad9517.c:49
int32_t ad9517_remove(struct ad9517_dev *dev)
Free the resources allocated by ad9517_setup().
Definition ad9517.c:217
logic_level_options
Definition ad9517.h:354
@ LVDS
Definition ad9517.h:355
@ CMOS
Definition ad9517.h:356
int32_t ad9517_write(struct ad9517_dev *dev, uint32_t reg_addr, uint16_t reg_val)
Writes data into a register.
Definition ad9517.c:237
int32_t ad9517_update(struct ad9517_dev *dev)
Transfers the contents of the buffer registers into the active registers.
Definition ad9517.c:310
out_diff_voltage_options
Definition ad9517.h:337
@ LVPECL_960mV
Definition ad9517.h:341
@ LVPECL_400mV
Definition ad9517.h:338
@ LVPECL_600mV
Definition ad9517.h:339
@ LVPECL_780mV
Definition ad9517.h:340
ad9517_type
Definition ad9517.h:330
@ AD9517_1
Definition ad9517.h:331
@ AD9517_4
Definition ad9517.h:334
@ AD9517_3
Definition ad9517.h:333
@ AD9517_2
Definition ad9517.h:332
int32_t ad9517_read(struct ad9517_dev *dev, uint32_t reg_addr, uint32_t *reg_value)
Reads data from a register.
Definition ad9517.c:274
int32_t ad9517_phase(struct ad9517_dev *dev, int32_t channel, int32_t phase)
Sets the phase on the specified channel.
Definition ad9517.c:774
out_lvds_current_options
Definition ad9517.h:359
@ LVDS_5_25mA
Definition ad9517.h:362
@ LVDS_7mA
Definition ad9517.h:363
@ LVDS_1_75mA
Definition ad9517.h:360
@ LVDS_3_5mA
Definition ad9517.h:361
int32_t ad9517_power_mode(struct ad9517_dev *dev, int32_t channel, int32_t mode)
Sets the power mode of the specified channel.
Definition ad9517.c:822
int64_t ad9517_vco_frequency(struct ad9517_dev *dev, int64_t frequency)
Sets the VCO frequency.
Definition ad9517.c:326
Header file of SPI Interface.
struct no_os_spi_desc * spi_desc
Definition ad9517.h:380
struct ad9517_state ad9517_st
Definition ad9517.h:382
enum ad9517_type ad9517_type
Definition ad9517.h:383
enum ad9517_type ad9517_type
Definition ad9517.h:391
struct ad9517_state ad9517_st
Definition ad9517.h:390
struct no_os_spi_init_param spi_init
Definition ad9517.h:388
uint8_t out_lvds_current
Definition ad9517.h:350
uint8_t channel_num
Definition ad9517.h:346
uint8_t name[16]
Definition ad9517.h:351
uint8_t cmos_b_en
Definition ad9517.h:349
uint8_t logic_level
Definition ad9517.h:348
uint8_t out_invert
Definition ad9517.h:347
uint8_t name[16]
Definition ad9517.h:327
uint8_t out_invert_en
Definition ad9517.h:325
uint8_t out_diff_voltage
Definition ad9517.h:326
uint8_t channel_num
Definition ad9517.h:324
struct ad9517_platform_data * pdata
Definition ad9517.h:367
struct ad9517_lvds_cmos_channel_spec * lvds_cmos_channels
Definition ad9517.h:369
uint8_t a_counter
Definition ad9517.h:371
uint16_t b_counter
Definition ad9517.h:372
uint8_t prescaler_p
Definition ad9517.h:374
uint8_t vco_divider
Definition ad9517.h:373
uint32_t r_counter
Definition ad9517.h:370
uint8_t antibacklash_pulse_width
Definition ad9517.h:375
struct ad9517_lvpecl_channel_spec * lvpecl_channels
Definition ad9517.h:368
Definition ad9361_util.h:63
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128