43#define AD9523_READ (1 << 15)
44#define AD9523_WRITE (0 << 15)
45#define AD9523_CNT(x) (((x) - 1) << 13)
46#define AD9523_ADDR(x) ((x) & 0xFFF)
48#define AD9523_R1B (1 << 16)
49#define AD9523_R2B (2 << 16)
50#define AD9523_R3B (3 << 16)
51#define AD9523_TRANSF_LEN(x) ((x) >> 16)
53#define AD9523_SERIAL_PORT_CONFIG (AD9523_R1B | 0x0)
54#define AD9523_VERSION_REGISTER (AD9523_R1B | 0x2)
55#define AD9523_PART_REGISTER (AD9523_R1B | 0x3)
56#define AD9523_READBACK_CTRL (AD9523_R1B | 0x4)
58#define AD9523_EEPROM_CUSTOMER_VERSION_ID (AD9523_R2B | 0x6)
60#define AD9523_PLL1_REF_A_DIVIDER (AD9523_R2B | 0x11)
61#define AD9523_PLL1_REF_B_DIVIDER (AD9523_R2B | 0x13)
62#define AD9523_PLL1_REF_TEST_DIVIDER (AD9523_R1B | 0x14)
63#define AD9523_PLL1_FEEDBACK_DIVIDER (AD9523_R2B | 0x17)
64#define AD9523_PLL1_CHARGE_PUMP_CTRL (AD9523_R2B | 0x19)
65#define AD9523_PLL1_INPUT_RECEIVERS_CTRL (AD9523_R1B | 0x1A)
66#define AD9523_PLL1_REF_CTRL (AD9523_R1B | 0x1B)
67#define AD9523_PLL1_MISC_CTRL (AD9523_R1B | 0x1C)
68#define AD9523_PLL1_LOOP_FILTER_CTRL (AD9523_R1B | 0x1D)
70#define AD9523_PLL2_CHARGE_PUMP (AD9523_R1B | 0xF0)
71#define AD9523_PLL2_FEEDBACK_DIVIDER_AB (AD9523_R1B | 0xF1)
72#define AD9523_PLL2_CTRL (AD9523_R1B | 0xF2)
73#define AD9523_PLL2_VCO_CTRL (AD9523_R1B | 0xF3)
74#define AD9523_PLL2_VCO_DIVIDER (AD9523_R1B | 0xF4)
75#define AD9523_PLL2_LOOP_FILTER_CTRL (AD9523_R2B | 0xF6)
76#define AD9523_PLL2_R2_DIVIDER (AD9523_R1B | 0xF7)
78#define AD9523_CHANNEL_CLOCK_DIST(ch) (AD9523_R3B | (0x192 + 3 * ch))
80#define AD9523_PLL1_OUTPUT_CTRL (AD9523_R1B | 0x1BA)
81#define AD9523_PLL1_OUTPUT_CHANNEL_CTRL (AD9523_R1B | 0x1BB)
83#define AD9523_READBACK_0 (AD9523_R1B | 0x22C)
84#define AD9523_READBACK_1 (AD9523_R1B | 0x22D)
86#define AD9523_STATUS_SIGNALS (AD9523_R3B | 0x232)
87#define AD9523_POWER_DOWN_CTRL (AD9523_R1B | 0x233)
88#define AD9523_IO_UPDATE (AD9523_R1B | 0x234)
90#define AD9523_EEPROM_DATA_XFER_STATUS (AD9523_R1B | 0xB00)
91#define AD9523_EEPROM_ERROR_READBACK (AD9523_R1B | 0xB01)
92#define AD9523_EEPROM_CTRL1 (AD9523_R1B | 0xB02)
93#define AD9523_EEPROM_CTRL2 (AD9523_R1B | 0xB03)
97#define AD9523_SER_CONF_SDO_ACTIVE ((1 << 7) | (1 << 0))
98#define AD9523_SER_CONF_SOFT_RESET ((1 << 5) | (1 << 2))
101#define AD9523_READBACK_CTRL_READ_BUFFERED (1 << 0)
104#define AD9523_PLL1_CHARGE_PUMP_CURRENT_nA(x) (((x) / 500) & 0x7F)
105#define AD9523_PLL1_CHARGE_PUMP_TRISTATE (1 << 7)
106#define AD9523_PLL1_CHARGE_PUMP_MODE_NORMAL (3 << 8)
107#define AD9523_PLL1_CHARGE_PUMP_MODE_PUMP_DOWN (2 << 8)
108#define AD9523_PLL1_CHARGE_PUMP_MODE_PUMP_UP (1 << 8)
109#define AD9523_PLL1_CHARGE_PUMP_MODE_TRISTATE (0 << 8)
110#define AD9523_PLL1_BACKLASH_PW_MIN (0 << 10)
111#define AD9523_PLL1_BACKLASH_PW_LOW (1 << 10)
112#define AD9523_PLL1_BACKLASH_PW_HIGH (2 << 10)
113#define AD9523_PLL1_BACKLASH_PW_MAX (3 << 10)
116#define AD9523_PLL1_REF_TEST_RCV_EN (1 << 7)
117#define AD9523_PLL1_REFB_DIFF_RCV_EN (1 << 6)
118#define AD9523_PLL1_REFA_DIFF_RCV_EN (1 << 5)
119#define AD9523_PLL1_REFB_RCV_EN (1 << 4)
120#define AD9523_PLL1_REFA_RCV_EN (1 << 3)
121#define AD9523_PLL1_REFA_REFB_PWR_CTRL_EN (1 << 2)
122#define AD9523_PLL1_OSC_IN_CMOS_NEG_INP_EN (1 << 1)
123#define AD9523_PLL1_OSC_IN_DIFF_EN (1 << 0)
126#define AD9523_PLL1_BYPASS_REF_TEST_DIV_EN (1 << 7)
127#define AD9523_PLL1_BYPASS_FEEDBACK_DIV_EN (1 << 6)
128#define AD9523_PLL1_ZERO_DELAY_MODE_INT (1 << 5)
129#define AD9523_PLL1_ZERO_DELAY_MODE_EXT (0 << 5)
130#define AD9523_PLL1_OSC_IN_PLL_FEEDBACK_EN (1 << 4)
131#define AD9523_PLL1_ZD_IN_CMOS_NEG_INP_EN (1 << 3)
132#define AD9523_PLL1_ZD_IN_DIFF_EN (1 << 2)
133#define AD9523_PLL1_REFB_CMOS_NEG_INP_EN (1 << 1)
134#define AD9523_PLL1_REFA_CMOS_NEG_INP_EN (1 << 0)
137#define AD9523_PLL1_REFB_INDEP_DIV_CTRL_EN (1 << 7)
138#define AD9523_PLL1_OSC_CTRL_FAIL_VCC_BY2_EN (1 << 6)
139#define AD9523_PLL1_REF_MODE(x) ((x) << 2)
140#define AD9523_PLL1_BYPASS_REFB_DIV (1 << 1)
141#define AD9523_PLL1_BYPASS_REFA_DIV (1 << 0)
144#define AD9523_PLL1_LOOP_FILTER_RZERO(x) ((x) & 0xF)
147#define AD9523_PLL2_CHARGE_PUMP_CURRENT_nA(x) ((x) / 3500)
150#define AD9523_PLL2_FB_NDIV_A_CNT(x) (((x) & 0x3) << 6)
151#define AD9523_PLL2_FB_NDIV_B_CNT(x) (((x) & 0x3F) << 0)
152#define AD9523_PLL2_FB_NDIV(a, b) (4 * (b) + (a))
155#define AD9523_PLL2_CHARGE_PUMP_MODE_NORMAL (3 << 0)
156#define AD9523_PLL2_CHARGE_PUMP_MODE_PUMP_DOWN (2 << 0)
157#define AD9523_PLL2_CHARGE_PUMP_MODE_PUMP_UP (1 << 0)
158#define AD9523_PLL2_CHARGE_PUMP_MODE_TRISTATE (0 << 0)
159#define AD9523_PLL2_BACKLASH_PW_MIN (0 << 2)
160#define AD9523_PLL2_BACKLASH_PW_LOW (1 << 2)
161#define AD9523_PLL2_BACKLASH_PW_HIGH (2 << 2)
162#define AD9523_PLL2_BACKLASH_PW_MAX (3 << 1)
163#define AD9523_PLL2_BACKLASH_CTRL_EN (1 << 4)
164#define AD9523_PLL2_FREQ_DOUBLER_EN (1 << 5)
165#define AD9523_PLL2_LOCK_DETECT_PWR_DOWN_EN (1 << 7)
168#define AD9523_PLL2_VCO_CALIBRATE (1 << 1)
169#define AD9523_PLL2_FORCE_VCO_MIDSCALE (1 << 2)
170#define AD9523_PLL2_FORCE_REFERENCE_VALID (1 << 3)
171#define AD9523_PLL2_FORCE_RELEASE_SYNC (1 << 4)
174#define AD9523_PLL2_VCO_DIV_M1(x) ((((x) - 3) & 0x3) << 0)
175#define AD9523_PLL2_VCO_DIV_M2(x) ((((x) - 3) & 0x3) << 4)
176#define AD9523_PLL2_VCO_DIV_M1_PWR_DOWN_EN (1 << 2)
177#define AD9523_PLL2_VCO_DIV_M2_PWR_DOWN_EN (1 << 6)
180#define AD9523_PLL2_LOOP_FILTER_CPOLE1(x) (((x) & 0x7) << 0)
181#define AD9523_PLL2_LOOP_FILTER_RZERO(x) (((x) & 0x7) << 3)
182#define AD9523_PLL2_LOOP_FILTER_RPOLE2(x) (((x) & 0x7) << 6)
183#define AD9523_PLL2_LOOP_FILTER_RZERO_BYPASS_EN (1 << 8)
186#define AD9523_PLL2_R2_DIVIDER_VAL(x) (((x) & 0x1F) << 0)
189#define AD9523_CLK_DIST_DIV_PHASE(x) (((x) & 0x3F) << 18)
190#define AD9523_CLK_DIST_DIV_PHASE_REV(x) ((ret >> 18) & 0x3F)
191#define AD9523_CLK_DIST_DIV(x) ((((x) - 1) & 0x3FF) << 8)
192#define AD9523_CLK_DIST_DIV_REV(x) (((ret >> 8) & 0x3FF) + 1)
193#define AD9523_CLK_DIST_INV_DIV_OUTPUT_EN (1 << 7)
194#define AD9523_CLK_DIST_IGNORE_SYNC_EN (1 << 6)
195#define AD9523_CLK_DIST_PWR_DOWN_EN (1 << 5)
196#define AD9523_CLK_DIST_LOW_PWR_MODE_EN (1 << 4)
197#define AD9523_CLK_DIST_DRIVER_MODE(x) (((x) & 0xF) << 0)
200#define AD9523_PLL1_OUTP_CTRL_VCO_DIV_SEL_CH6_M2 (1 << 7)
201#define AD9523_PLL1_OUTP_CTRL_VCO_DIV_SEL_CH5_M2 (1 << 6)
202#define AD9523_PLL1_OUTP_CTRL_VCO_DIV_SEL_CH4_M2 (1 << 5)
203#define AD9523_PLL1_OUTP_CTRL_CMOS_DRV_WEAK (1 << 4)
204#define AD9523_PLL1_OUTP_CTRL_OUTPUT_DIV_1 (0 << 0)
205#define AD9523_PLL1_OUTP_CTRL_OUTPUT_DIV_2 (1 << 0)
206#define AD9523_PLL1_OUTP_CTRL_OUTPUT_DIV_4 (2 << 0)
207#define AD9523_PLL1_OUTP_CTRL_OUTPUT_DIV_8 (4 << 0)
208#define AD9523_PLL1_OUTP_CTRL_OUTPUT_DIV_16 (8 << 0)
211#define AD9523_PLL1_OUTP_CH_CTRL_OUTPUT_PWR_DOWN_EN (1 << 7)
212#define AD9523_PLL1_OUTP_CH_CTRL_VCO_DIV_SEL_CH9_M2 (1 << 6)
213#define AD9523_PLL1_OUTP_CH_CTRL_VCO_DIV_SEL_CH8_M2 (1 << 5)
214#define AD9523_PLL1_OUTP_CH_CTRL_VCO_DIV_SEL_CH7_M2 (1 << 4)
215#define AD9523_PLL1_OUTP_CH_CTRL_VCXO_SRC_SEL_CH3 (1 << 3)
216#define AD9523_PLL1_OUTP_CH_CTRL_VCXO_SRC_SEL_CH2 (1 << 2)
217#define AD9523_PLL1_OUTP_CH_CTRL_VCXO_SRC_SEL_CH1 (1 << 1)
218#define AD9523_PLL1_OUTP_CH_CTRL_VCXO_SRC_SEL_CH0 (1 << 0)
221#define AD9523_READBACK_0_STAT_PLL2_REF_CLK (1 << 7)
222#define AD9523_READBACK_0_STAT_PLL2_FB_CLK (1 << 6)
223#define AD9523_READBACK_0_STAT_VCXO (1 << 5)
224#define AD9523_READBACK_0_STAT_REF_TEST (1 << 4)
225#define AD9523_READBACK_0_STAT_REFB (1 << 3)
226#define AD9523_READBACK_0_STAT_REFA (1 << 2)
227#define AD9523_READBACK_0_STAT_PLL2_LD (1 << 1)
228#define AD9523_READBACK_0_STAT_PLL1_LD (1 << 0)
231#define AD9523_READBACK_1_HOLDOVER_ACTIVE (1 << 3)
232#define AD9523_READBACK_1_AUTOMODE_SEL_REFB (1 << 2)
233#define AD9523_READBACK_1_VCO_CALIB_IN_PROGRESS (1 << 0)
236#define AD9523_STATUS_SIGNALS_SYNC_MAN_CTRL (1 << 16)
237#define AD9523_STATUS_MONITOR_01_PLL12_LOCKED (0x302)
239#define AD9523_POWER_DOWN_CTRL_PLL1_PWR_DOWN (1 << 2)
240#define AD9523_POWER_DOWN_CTRL_PLL2_PWR_DOWN (1 << 1)
241#define AD9523_POWER_DOWN_CTRL_DIST_PWR_DOWN (1 << 0)
244#define AD9523_IO_UPDATE_EN (1 << 0)
247#define AD9523_EEPROM_DATA_XFER_IN_PROGRESS (1 << 0)
250#define AD9523_EEPROM_ERROR_READBACK_FAIL (1 << 0)
253#define AD9523_EEPROM_CTRL1_SOFT_EEPROM (1 << 1)
254#define AD9523_EEPROM_CTRL1_EEPROM_WRITE_PROT_DIS (1 << 0)
257#define AD9523_EEPROM_CTRL2_REG2EEPROM (1 << 0)
259#define AD9523_NUM_CHAN 14
260#define AD9523_NUM_CHAN_ALT_CLK_SRC 10
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
@ LVDS_7mA
Definition ad9517.h:363
rpole2_resistor
Definition ad9523.h:326
rzero_resistor
Definition ad9523.h:333
cpole1_capacitor
Definition ad9523.h:344
@ _CPOLE1_24_PF
Definition ad9523.h:349
pll1_rzero_resistor
Definition ad9523.h:317
@ RZERO_883_OHM
Definition ad9523.h:318
@ RZERO_135_OHM
Definition ad9523.h:321
@ RZERO_677_OHM
Definition ad9523.h:319
@ RZERO_341_OHM
Definition ad9523.h:320
@ RZERO_10_OHM
Definition ad9523.h:322
@ RZERO_USE_EXT_RES
Definition ad9523.h:323
int32_t ad9523_sync(struct ad9523_dev *dev)
Updates the AD9523 configuration.
Definition ad9523.c:304
int32_t ad9523_remove(struct ad9523_dev *dev)
Free the resources allocated by ad9523_setup().
Definition ad9523.c:722
ref_sel_mode
Definition ad9523.h:280
@ NONEREVERTIVE_STAY_ON_REFB
Definition ad9523.h:281
@ SELECT_REFA
Definition ad9523.h:283
@ REVERT_TO_REFA
Definition ad9523.h:282
@ EXT_REF_SEL
Definition ad9523.h:285
@ SELECT_REFB
Definition ad9523.h:284
int32_t ad9523_spi_write(struct ad9523_dev *dev, uint32_t reg_addr, uint32_t reg_data)
Writes a value to the selected register.
Definition ad9523.c:87
int32_t ad9523_spi_read(struct ad9523_dev *dev, uint32_t reg_addr, uint32_t *reg_data)
Reads the value of the selected register.
Definition ad9523.c:53
ad9523_out_frequencies
Definition ad9523.h:455
@ AD9523_VCO2
Definition ad9523.h:457
@ AD9523_VCO1
Definition ad9523.h:456
@ AD9523_VCXO
Definition ad9523.h:458
@ AD9523_NUM_CLK_SRC
Definition ad9523.h:459
int32_t ad9523_io_update(struct ad9523_dev *dev)
Updates the AD9523 configuration.
Definition ad9523.c:116
int32_t ad9523_init(struct ad9523_init_param *init_param)
Initialize the AD9523 data structure with the default register values.
Definition ad9523.c:344
int32_t ad9523_vco_out_map(struct ad9523_dev *dev, uint32_t ch, uint32_t out)
Sets the clock provider for selected channel.
Definition ad9523.c:132
int32_t ad9523_status(struct ad9523_dev *dev)
Updates the AD9523 configuration.
Definition ad9523.c:248
int32_t ad9523_setup(struct ad9523_dev **device, const struct ad9523_init_param *init_param)
Setup the AD9523 device.
Definition ad9523.c:419
outp_drv_mode
Definition ad9523.h:262
@ CMOS_CONF2
Definition ad9523.h:270
@ CMOS_CONF9
Definition ad9523.h:277
@ CMOS_CONF5
Definition ad9523.h:273
@ HSTL1_8mA
Definition ad9523.h:268
@ CMOS_CONF7
Definition ad9523.h:275
@ LVDS_4mA
Definition ad9523.h:265
@ CMOS_CONF6
Definition ad9523.h:274
@ HSTL0_16mA
Definition ad9523.h:267
@ CMOS_CONF1
Definition ad9523.h:269
@ TRISTATE
Definition ad9523.h:263
@ LVPECL_8mA
Definition ad9523.h:264
@ CMOS_CONF4
Definition ad9523.h:272
@ CMOS_CONF8
Definition ad9523.h:276
@ CMOS_CONF3
Definition ad9523.h:271
#define CPOLE1_40_PF
Definition ad9528.h:313
#define RPOLE2_225_OHM
Definition ad9528.h:295
#define CPOLE1_24_PF
Definition ad9528.h:311
#define CPOLE1_8_PF
Definition ad9528.h:309
#define CPOLE1_32_PF
Definition ad9528.h:312
#define RZERO_2000_OHM
Definition ad9528.h:304
#define RZERO_3000_OHM
Definition ad9528.h:302
#define RPOLE2_450_OHM
Definition ad9528.h:293
#define RPOLE2_300_OHM
Definition ad9528.h:294
#define RPOLE2_900_OHM
Definition ad9528.h:292
#define RZERO_3250_OHM
Definition ad9528.h:298
#define CPOLE1_0_PF
Definition ad9528.h:308
#define RZERO_1850_OHM
Definition ad9528.h:305
#define CPOLE1_48_PF
Definition ad9528.h:314
#define RZERO_2750_OHM
Definition ad9528.h:299
#define RZERO_2250_OHM
Definition ad9528.h:300
#define CPOLE1_16_PF
Definition ad9528.h:310
#define RZERO_2500_OHM
Definition ad9528.h:303
#define RZERO_2100_OHM
Definition ad9528.h:301
Header file of Delay functions.
Header file of SPI Interface.
Output channel configuration.
Definition ad9523.h:292
uint8_t output_dis
Definition ad9523.h:304
uint16_t channel_divider
Definition ad9523.h:312
uint8_t divider_phase
Definition ad9523.h:310
uint8_t divider_output_invert_en
Definition ad9523.h:296
int8_t extended_name[16]
Definition ad9523.h:314
uint8_t channel_num
Definition ad9523.h:294
uint8_t sync_ignore_en
Definition ad9523.h:298
uint8_t driver_mode
Definition ad9523.h:306
uint8_t use_alt_clock_src
Definition ad9523.h:302
uint8_t low_power_mode_en
Definition ad9523.h:300
struct no_os_spi_desc * spi_desc
Definition ad9523.h:464
struct ad9523_platform_data * pdata
Definition ad9523.h:467
struct ad9523_state ad9523_st
Definition ad9523.h:466
struct ad9523_platform_data * pdata
Definition ad9523.h:474
struct no_os_spi_init_param spi_init
Definition ad9523.h:472
uint32_t vcxo_freq
Definition ad9523.h:449
struct ad9523_platform_data * pdata
Definition ad9523.h:448
uint32_t vco_out_freq[3]
Definition ad9523.h:451
uint8_t vco_out_map[14]
Definition ad9523.h:452
uint32_t vco_freq
Definition ad9523.h:450
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