Go to the documentation of this file.
59 #define DRIVER_MODE_AC_COUPLED_IF 0
60 #define DRIVER_MODE_DC_COUPLED_1V2 1
61 #define DRIVER_MODE_DC_COUPLED_1V8 2
62 #define DRIVER_MODE_IN_PULL_UP 3
65 #define DRIVER_MODE_AC_COUPLED 0
66 #define DRIVER_MODE_DC_COUPLED 1
67 #define DRIVER_MODE_DC_COUPLED_LVDS 2
70 #define DRIVER_MODE_SINGLE_DIV_DIF 0
71 #define DRIVER_MODE_SINGLE_DIV 1
72 #define DRIVER_MODE_DUAL_DIV 2
75 #define AD9545_CLK_OUT 0
76 #define AD9545_CLK_PLL 1
77 #define AD9545_CLK_NCO 2
78 #define AD9545_CLK_AUX_TDC 3
101 #define AD9545_CLK_AUX_TDC0 0
102 #define AD9545_CLK_AUX_TDC1 1
109 #define BYTE_ADDR_H NO_OS_GENMASK(14, 8)
110 #define BYTE_ADDR_L NO_OS_GENMASK(7, 0)
116 #define AD9545_CONFIG_0 0x0000
117 #define AD9545_PRODUCT_ID_LOW 0x0004
118 #define AD9545_PRODUCT_ID_HIGH 0x0005
119 #define AD9545_IO_UPDATE 0x000F
120 #define AD9545_M0_PIN 0x0102
121 #define AD9545_CHIP_ID 0x0121
122 #define AD9545_SYS_CLK_FB_DIV 0x0200
123 #define AD9545_SYS_CLK_INPUT 0x0201
124 #define AD9545_SYS_CLK_REF_FREQ 0x0202
125 #define AD9545_STABILITY_TIMER 0x0207
126 #define AD9545_COMPENSATE_TDCS 0x0280
127 #define AD9545_COMPENSATE_NCOS 0x0281
128 #define AD9545_COMPENSATE_DPLL 0x0282
129 #define AD9545_AUX_DPLL_CHANGE_LIMIT 0x0283
130 #define AD9545_AUX_DPLL_SOURCE 0x0284
131 #define AD9545_AUX_DPLL_LOOP_BW 0x0285
132 #define AD9545_REF_A_CTRL 0x0300
133 #define AD9545_REF_A_RDIV 0x0400
134 #define AD9545_REF_A_PERIOD 0x0404
135 #define AD9545_REF_A_OFFSET_LIMIT 0x040C
136 #define AD9545_REF_A_MONITOR_HYST 0x040F
137 #define AD9545_REF_A_VALID_TIMER 0x0410
138 #define AD9545_PHASE_LOCK_THRESH 0x0800
139 #define AD9545_PHASE_LOCK_FILL_RATE 0x0803
140 #define AD9545_PHASE_LOCK_DRAIN_RATE 0x0804
141 #define AD9545_FREQ_LOCK_THRESH 0x0805
142 #define AD9545_FREQ_LOCK_FILL_RATE 0x0808
143 #define AD9545_FREQ_LOCK_DRAIN_RATE 0x0809
144 #define AD9545_DPLL0_FTW 0x1000
145 #define AD9545_DPLL0_SLEW_RATE 0x1011
146 #define AD9545_MODULATION_COUNTER_A0 0x10C2
147 #define AD9545_MODULATION_COUNTER_B0 0x10C6
148 #define AD9545_MODULATION_COUNTER_C0 0x10CA
149 #define AD9545_MODULATOR_A0 0x10CF
150 #define AD9545_MODULATOR_B0 0x10D0
151 #define AD9545_MODULATOR_C0 0x10D1
152 #define AD9545_NSHOT_REQ_CH0 0x10D3
153 #define AD9545_NSHOT_EN_AB0 0x10D4
154 #define AD9545_NSHOT_EN_C0 0x10D5
155 #define AD9545_DRIVER_0A_CONF 0x10D7
156 #define AD9545_SYNC_CTRL0 0x10DB
157 #define AD9545_APLL0_M_DIV 0x1081
158 #define AD9545_Q0A_DIV 0x1100
159 #define AD9545_Q0A_PHASE 0x1104
160 #define AD9545_Q0A_PHASE_CONF 0x1108
161 #define AD9545_DPLL0_EN 0x1200
162 #define AD9545_DPLL0_SOURCE 0x1201
163 #define AD9545_DPLL0_ZERO_DELAY_FB 0x1202
164 #define AD9545_DPLL0_FB_MODE 0x1203
165 #define AD9545_DPLL0_LOOP_BW 0x1204
166 #define AD9545_DPLL0_HITLESS_N 0x1208
167 #define AD9545_DPLL0_N_DIV 0x120C
168 #define AD9545_DPLL0_FRAC 0x1210
169 #define AD9545_DPLL0_MOD 0x1213
170 #define AD9545_DPLL0_FAST_L1 0x1216
171 #define AD9545_DPLL0_FAST_L2 0x1217
172 #define AD9545_MODULATION_COUNTER_A1 0x14C2
173 #define AD9545_MODULATION_COUNTER_B1 0x14C6
174 #define AD9545_MODULATOR_A1 0x14CF
175 #define AD9545_MODULATOR_B1 0x14D0
176 #define AD9545_NSHOT_EN_AB1 0x14D4
177 #define AD9545_DRIVER_1A_CONF 0x14D7
178 #define AD9545_Q1A_DIV 0x1500
179 #define AD9545_Q1A_PHASE 0x1504
180 #define AD9545_Q1A_PHASE_CONF 0x1508
181 #define AD9545_CALIB_CLK 0x2000
182 #define AD9545_POWER_DOWN_REF 0x2001
183 #define AD9545_PWR_CALIB_CH0 0x2100
184 #define AD9545_CTRL_CH0 0x2101
185 #define AD9545_DIV_OPS_Q0A 0x2102
186 #define AD9545_DPLL0_MODE 0x2105
187 #define AD9545_DPLL0_FAST_MODE 0x2106
188 #define AD9545_DIV_OPS_Q1A 0x2202
189 #define AD9545_NCO0_CENTER_FREQ 0x2800
190 #define AD9545_NCO0_OFFSET_FREQ 0x2807
191 #define AD9545_NCO0_TAG_RATIO 0x280B
192 #define AD9545_NCO0_TAG_DELTA 0x280D
193 #define AD9545_NCO0_TYPE_ADJUST 0x280F
194 #define AD9545_NCO0_DELTA_RATE_LIMIT 0x2810
195 #define AD9545_NCO0_DELTA_ADJUST 0x2814
196 #define AD9545_NCO0_CYCLE_ADJUST 0x2819
197 #define AD9545_TDC0_DIV 0x2A00
198 #define AD9545_TDC0_PERIOD 0x2A01
199 #define AD9545_PLL_STATUS 0x3001
200 #define AD9545_MISC 0x3002
201 #define AD9545_TEMP0 0x3003
202 #define AD9545_REFA_STATUS 0x3005
203 #define AD9545_PLL0_STATUS 0x3100
204 #define AD9545_PLL0_OPERATION 0x3101
206 #define AD9545_SYS_CLK_STABILITY_PERIOD_MASK NO_OS_GENMASK(19, 0)
208 #define AD9545_REF_CTRL_DIF_MSK NO_OS_GENMASK(3, 2)
209 #define AD9545_REF_CTRL_REFA_MSK NO_OS_GENMASK(5, 4)
210 #define AD9545_REF_CTRL_REFAA_MSK NO_OS_GENMASK(7, 6)
212 #define AD9545_UPDATE_REGS 0x1
213 #define AD9545_RESET_REGS 0x81
215 #define AD9545_MX_PIN(x) (AD9545_M0_PIN + (x))
217 #define AD9545_SYNC_CTRLX(x) (AD9545_SYNC_CTRL0 + ((x) * 0x400))
218 #define AD9545_REF_X_RDIV(x) (AD9545_REF_A_RDIV + ((x) * 0x20))
219 #define AD9545_REF_X_PERIOD(x) (AD9545_REF_A_PERIOD + ((x) * 0x20))
220 #define AD9545_REF_X_OFFSET_LIMIT(x) (AD9545_REF_A_OFFSET_LIMIT + ((x) * 0x20))
221 #define AD9545_REF_X_MONITOR_HYST(x) (AD9545_REF_A_MONITOR_HYST + ((x) * 0x20))
222 #define AD9545_REF_X_VALID_TIMER(x) (AD9545_REF_A_VALID_TIMER + ((x) * 0x20))
223 #define AD9545_REF_X_PHASE_LOCK_FILL(x) (AD9545_PHASE_LOCK_FILL_RATE + ((x) * 0x20))
224 #define AD9545_REF_X_PHASE_LOCK_DRAIN(x) (AD9545_PHASE_LOCK_DRAIN_RATE + ((x) * 0x20))
225 #define AD9545_REF_X_FREQ_LOCK_FILL(x) (AD9545_FREQ_LOCK_FILL_RATE + ((x) * 0x20))
226 #define AD9545_REF_X_FREQ_LOCK_DRAIN(x) (AD9545_FREQ_LOCK_DRAIN_RATE + ((x) * 0x20))
228 #define AD9545_SOURCEX_PHASE_THRESH(x) (AD9545_PHASE_LOCK_THRESH + ((x) * 0x20))
229 #define AD9545_SOURCEX_FREQ_THRESH(x) (AD9545_FREQ_LOCK_THRESH + ((x) * 0x20))
230 #define AD9545_NCOX_PHASE_THRESH(x) (AD9545_SOURCEX_PHASE_THRESH((x) + 4))
231 #define AD9545_NCOX_FREQ_THRESH(x) (AD9545_SOURCEX_FREQ_THRESH((x) + 4))
233 #define AD9545_APLLX_M_DIV(x) (AD9545_APLL0_M_DIV + ((x) * 0x400))
235 #define AD9545_Q0_DIV(x) (AD9545_Q0A_DIV + ((x) * 0x9))
236 #define AD9545_Q1_DIV(x) (AD9545_Q1A_DIV + ((x) * 0x9))
237 #define AD9545_QX_DIV(x) ({ \
238 typeof(x) x_ = (x); \
240 (x_ > 5) ? AD9545_Q1_DIV(x_ - 6) : AD9545_Q0_DIV(x_); \
243 #define AD9545_Q0_PHASE(x) (AD9545_Q0A_PHASE + ((x) * 0x9))
244 #define AD9545_Q1_PHASE(x) (AD9545_Q1A_PHASE + ((x) * 0x9))
245 #define AD9545_QX_PHASE(x) ({ \
246 typeof(x) x_ = (x); \
248 (x_ > 5) ? AD9545_Q1_PHASE(x_ - 6) : AD9545_Q0_PHASE(x_); \
251 #define AD9545_Q0_PHASE_CONF(x) (AD9545_Q0A_PHASE_CONF + ((x) * 0x9))
252 #define AD9545_Q1_PHASE_CONF(x) (AD9545_Q1A_PHASE_CONF + ((x) * 0x9))
253 #define AD9545_QX_PHASE_CONF(x) ({ \
254 typeof(x) x_ = (x); \
256 (x_ > 5) ? AD9545_Q1_PHASE_CONF(x_ - 6) : AD9545_Q0_PHASE_CONF(x_); \
259 #define AD9545_NSHOT_REQ_CH(x) (AD9545_NSHOT_REQ_CH0 + ((x) * 0x400))
260 #define AD9545_DPLLX_FTW(x) (AD9545_DPLL0_FTW + ((x) * 0x400))
261 #define AD9545_DPLLX_SLEW_RATE(x) (AD9545_DPLL0_SLEW_RATE + ((x) * 0x400))
262 #define AD9545_DPLLX_EN(x, y) (AD9545_DPLL0_EN + ((x) * 0x400) + ((y) * 0x20))
263 #define AD9545_DPLLX_SOURCE(x, y) (AD9545_DPLL0_SOURCE + ((x) * 0x400) + ((y) * 0x20))
264 #define AD9545_DPLLX_FB_PATH(x, y) (AD9545_DPLL0_ZERO_DELAY_FB + ((x) * 0x400) + ((y) * 0x20))
265 #define AD9545_DPLLX_FB_MODE(x, y) (AD9545_DPLL0_FB_MODE + ((x) * 0x400) + ((y) * 0x20))
266 #define AD9545_DPLLX_LOOP_BW(x, y) (AD9545_DPLL0_LOOP_BW + ((x) * 0x400) + ((y) * 0x20))
267 #define AD9545_DPLLX_HITLESS_N(x, y) (AD9545_DPLL0_HITLESS_N + ((x) * 0x400) + ((y) * 0x20))
268 #define AD9545_DPLLX_N_DIV(x, y) (AD9545_DPLL0_N_DIV + ((x) * 0x400) + ((y) * 0x20))
269 #define AD9545_DPLLX_FRAC_DIV(x, y) (AD9545_DPLL0_FRAC + ((x) * 0x400) + ((y) * 0x20))
270 #define AD9545_DPLLX_MOD_DIV(x, y) (AD9545_DPLL0_MOD + ((x) * 0x400) + ((y) * 0x20))
271 #define AD9545_DPLLX_FAST_L1(x, y) (AD9545_DPLL0_FAST_L1 + ((x) * 0x400) + ((y) * 0x20))
272 #define AD9545_DPLLX_FAST_L2(x, y) (AD9545_DPLL0_FAST_L2 + ((x) * 0x400) + ((y) * 0x20))
274 #define AD9545_DIV_OPS_Q0(x) (AD9545_DIV_OPS_Q0A + (x))
275 #define AD9545_DIV_OPS_Q1(x) (AD9545_DIV_OPS_Q1A + (x))
276 #define AD9545_DIV_OPS_QX(x) ({ \
277 typeof(x) x_ = (x) / 2; \
279 (x_ > 2) ? AD9545_DIV_OPS_Q1(x_ - 3) : AD9545_DIV_OPS_Q0(x_); \
282 #define AD9545_PWR_CALIB_CHX(x) (AD9545_PWR_CALIB_CH0 + ((x) * 0x100))
283 #define AD9545_PLLX_STATUS(x) (AD9545_PLL0_STATUS + ((x) * 0x100))
284 #define AD9545_PLLX_OPERATION(x) (AD9545_PLL0_OPERATION + ((x) * 0x100))
285 #define AD9545_CTRL_CH(x) (AD9545_CTRL_CH0 + ((x) * 0x100))
286 #define AD9545_DPLLX_FAST_MODE(x) (AD9545_DPLL0_FAST_MODE + ((x) * 0x100))
287 #define AD9545_REFX_STATUS(x) (AD9545_REFA_STATUS + (x))
289 #define AD9545_PROFILE_SEL_MODE_MSK NO_OS_GENMASK(3, 2)
290 #define AD9545_PROFILE_SEL_MODE(x) no_os_field_prep(AD9545_PROFILE_SEL_MODE_MSK, x)
292 #define AD9545_NCOX_CENTER_FREQ(x) (AD9545_NCO0_CENTER_FREQ + ((x) * 0x40))
293 #define AD9545_NCOX_OFFSET_FREQ(x) (AD9545_NCO0_OFFSET_FREQ + ((x) * 0x40))
294 #define AD9545_NCOX_TAG_RATIO(x) (AD9545_NCO0_TAG_RATIO + ((x) * 0x40))
295 #define AD9545_NCOX_TAG_DELTA(x) (AD9545_NCO0_TAG_DELTA + ((x) * 0x40))
296 #define AD9545_NCOX_TYPE_ADJUST(x) (AD9545_NCO0_TYPE_ADJUST + ((x) * 0x40))
297 #define AD9545_NCOX_DELTA_RATE_LIMIT(x) (AD9545_NCO0_DELTA_RATE_LIMIT + ((x) * 0x40))
298 #define AD9545_NCOX_DELTA_ADJUST(x) (AD9545_NCO0_DELTA_ADJUST + ((x) * 0x40))
299 #define AD9545_NCOX_CYCLE_ADJUST(x) (AD9545_NCO0_CYCLE_ADJUST + ((x) * 0x40))
305 #define AD9545_NCO_CENTER_FREQ_INT_WIDTH 16
306 #define AD9545_NCO_CENTER_FREQ_FRAC_WIDTH 40
307 #define AD9545_NCO_CENTER_FREQ_WIDTH (AD9545_NCO_CENTER_FREQ_INT_WIDTH + \
308 AD9545_NCO_CENTER_FREQ_FRAC_WIDTH)
310 #define AD9545_NCO_CENTER_FREQ_MSK NO_OS_GENMASK_ULL(AD9545_NCO_CENTER_FREQ_WIDTH - 1, 0)
311 #define AD9545_NCO_CENTER_FREQ_INT_MSK NO_OS_GENMASK_ULL(AD9545_NCO_CENTER_FREQ_WIDTH - 1, \
312 AD9545_NCO_CENTER_FREQ_FRAC_WIDTH)
313 #define AD9545_NCO_CENTER_FREQ_FRAC_MSK NO_OS_GENMASK_ULL(AD9545_NCO_CENTER_FREQ_FRAC_WIDTH - 1, 0)
315 #define AD9545_NCO_CENTER_FREQ_MAX no_os_field_max_u64(AD9545_NCO_CENTER_FREQ_MSK)
316 #define AD9545_NCO_CENTER_FREQ_INT_MAX no_os_field_max_u64(AD9545_NCO_CENTER_FREQ_INT_MSK)
317 #define AD9545_NCO_CENTER_FREQ_FRAC_MAX no_os_field_max_u64(AD9545_NCO_CENTER_FREQ_FRAC_MSK)
323 #define AD9545_NCO_OFFSET_FREQ_INT_WIDTH 8
324 #define AD9545_NCO_OFFSET_FREQ_FRAC_WIDTH 24
325 #define AD9545_NCO_OFFSET_FREQ_WIDTH (AD9545_NCO_OFFSET_FREQ_INT_WIDTH + \
326 AD9545_NCO_OFFSET_FREQ_FRAC_WIDTH)
328 #define AD9545_NCO_OFFSET_FREQ_MSK NO_OS_GENMASK_ULL(AD9545_NCO_OFFSET_FREQ_WIDTH - 1, 0)
329 #define AD9545_NCO_OFFSET_FREQ_INT_MSK NO_OS_GENMASK_ULL(AD9545_NCO_OFFSET_FREQ_WIDTH - 1, \
330 AD9545_NCO_OFFSET_FREQ_FRAC_WIDTH)
331 #define AD9545_NCO_OFFSET_FREQ_FRAC_MSK NO_OS_GENMASK_ULL(AD9545_NCO_OFFSET_FREQ_FRAC_WIDTH - 1, 0)
333 #define AD9545_NCO_OFFSET_FREQ_MAX no_os_field_max(AD9545_NCO_OFFSET_FREQ_MSK)
334 #define AD9545_NCO_OFFSET_FREQ_INT_MAX no_os_field_max(AD9545_NCO_OFFSET_FREQ_INT_MSK)
335 #define AD9545_NCO_OFFSET_FREQ_FRAC_MAX no_os_field_max(AD9545_NCO_OFFSET_FREQ_FRAC_MSK)
337 #define AD9545_NCO_FREQ_INT_MAX (AD9545_NCO_CENTER_FREQ_INT_MAX + \
338 AD9545_NCO_OFFSET_FREQ_INT_MAX)
340 #define AD9545_TDCX_DIV(x) (AD9545_TDC0_DIV + ((x) * 0x9))
341 #define AD9545_TDCX_PERIOD(x) (AD9545_TDC0_PERIOD + ((x) * 0x9))
344 #define AD9545_MX_TO_TDCX(x) (0x30 + (x))
347 #define AD9545_COMPENSATE_TDCS_VIA_AUX_DPLL 0x4
350 #define AD9545_COMPENSATE_NCOS_VIA_AUX_DPLL 0x44
353 #define AD9545_COMPNESATE_VIA_AUX_DPLL 0x44
356 #define AD9545_EN_PROFILE_MSK NO_OS_BIT(0)
357 #define AD9545_SEL_PRIORITY_MSK NO_OS_GENMASK(5, 1)
360 #define AD9545_EN_HITLESS_MSK NO_OS_BIT(0)
361 #define AD9545_TAG_MODE_MSK NO_OS_GENMASK(4, 2)
362 #define AD9545_BASE_FILTER_MSK NO_OS_BIT(7)
365 #define AD9545_PWR_DOWN_CH NO_OS_BIT(0)
366 #define AD9545_CALIB_APLL NO_OS_BIT(1)
369 #define AD9545_SYNC_CTRL_DPLL_REF_MSK NO_OS_BIT(2)
370 #define AD9545_SYNC_CTRL_MODE_MSK NO_OS_GENMASK(1, 0)
373 #define AD9545_QX_HALF_DIV_MSK NO_OS_BIT(5)
374 #define AD9545_QX_PHASE_32_MSK NO_OS_BIT(6)
377 #define AD9545_DIV_OPS_MUTE_A_MSK NO_OS_BIT(2)
378 #define AD9545_DIV_OPS_MUTE_AA_MSK NO_OS_BIT(3)
381 #define AD9545_MODULATOR_EN NO_OS_BIT(0)
384 #define AD9545_NSHOT_NR_MSK NO_OS_GENMASK(5, 0)
387 #define AD9545_CTRL_CH_NSHOT_MSK NO_OS_BIT(0)
390 #define AD9545_PLLX_LOCK(x, y) ((1 << (4 + (x))) & (y))
393 #define AD9545_MISC_AUX_NC0_ERR_MSK NO_OS_GENMASK(5, 4)
394 #define AD9545_MISC_AUX_NC1_ERR_MSK NO_OS_GENMASK(7, 6)
395 #define AD9545_AUX_DPLL_LOCK_MSK NO_OS_BIT(1)
396 #define AD9545_AUX_DPLL_REF_FAULT NO_OS_BIT(2)
399 #define AD9545_REFX_SLOW_MSK NO_OS_BIT(0)
400 #define AD9545_REFX_FAST_MSK NO_OS_BIT(1)
401 #define AD9545_REFX_JITTER_MSK NO_OS_BIT(2)
402 #define AD9545_REFX_FAULT_MSK NO_OS_BIT(3)
403 #define AD9545_REFX_VALID_MSK NO_OS_BIT(4)
404 #define AD9545_REFX_LOS_MSK NO_OS_BIT(5)
407 #define AD9545_PLL_LOCKED NO_OS_BIT(0)
410 #define AD9545_PLL_FREERUN NO_OS_BIT(0)
411 #define AD9545_PLL_HOLDOVER NO_OS_BIT(1)
412 #define AD9545_PLL_ACTIVE NO_OS_BIT(3)
413 #define AD9545_PLL_ACTIVE_PROFILE NO_OS_GENMASK(6, 4)
415 #define AD9545_SYS_PLL_STABLE_MSK NO_OS_GENMASK(1, 0)
416 #define AD9545_SYS_PLL_STABLE(x) (((x) & AD9545_SYS_PLL_STABLE_MSK) == 0x3)
418 #define AD9545_APLL_LOCKED(x) ((x) & NO_OS_BIT(3))
421 #define AD9545_NO_TAGGING 0
422 #define AD9545_FB_PATH_TAG 2
424 #define AD9545_SYS_CLK_STABILITY_MS 50
426 #define AD9545_R_DIV_MSK NO_OS_GENMASK(29, 0)
427 #define AD9545_R_DIV_MAX 0x40000000
428 #define AD9545_IN_MAX_TDC_FREQ_HZ 200000
430 #define AD9545_MAX_REFS 4
432 #define AD9545_APLL_M_DIV_MIN 1
433 #define AD9545_APLL_M_DIV_MAX 255
435 #define AD9545_DPLL_MAX_N 1073741823
436 #define AD9545_DPLL_MAX_FRAC 16777215
437 #define AD9545_DPLL_MAX_MOD 16777215
438 #define AD9545_MAX_DPLL_PROFILES 6
440 #define AD9545_MAX_NSHOT_PULSES 63
442 #define AD9545_MAX_ZERO_DELAY_RATE 200000000
444 #define AD9545_MIN_SYS_CLK_FREQ 2250
445 #define AD9545_MAX_SYS_CLK_FREQ 2415
446 #define AD9545_MIN_DIV_RATIO 4
447 #define AD9545_MAX_DIV_RATIO 256
454 static const unsigned int ad9545_apll_rate_ranges_hz[2][2] = {
455 {2424000000U, 3232000000U}, {3232000000U, 4040000000U}
458 static const unsigned int ad9545_apll_pfd_rate_ranges_hz[2] = {
459 162000000U, 350000000U
462 static const unsigned short ad9545_vco_calibration_op[][2] = {
469 static const uint8_t ad9545_tdc_source_mapping[] = {
473 static const uint32_t ad9545_fast_acq_excess_bw_map[] = {
474 0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
477 static const uint32_t ad9545_fast_acq_timeout_map[] = {
478 1, 10, 50, 100, 500, 1000, 10000, 50000,
481 static const uint32_t ad9545_hyst_scales_bp[] = {
482 0, 3125, 6250, 12500, 25000, 50000, 75000, 87500
485 static const uint32_t ad9545_out_source_ua[] = {
489 static const uint32_t ad9545_rate_change_limit_map[] = {
490 715, 1430, 2860, 5720, 11440, 22880, 45760,
493 static const char *
const ad9545_ref_m_clk_names[] = {
494 "Ref-M0",
"Ref-M1",
"Ref-M2",
497 static const char *
const ad9545_ref_clk_names[] = {
498 "Ref-A",
"Ref-AA",
"Ref-B",
"Ref-BB",
501 static const char *
const ad9545_in_clk_names[] = {
502 "Ref-A-Div",
"Ref-AA-Div",
"Ref-B-Div",
"Ref-BB-Div",
505 static const char *
const ad9545_out_clk_names[] = {
506 "Q0A-div",
"Q0AA-div",
"Q0B-div",
"Q0BB-div",
"Q0C-div",
"Q0CC-div",
"Q1A-div",
"Q1AA-div",
507 "Q1B-div",
"Q1BB-div",
510 static const char *
const ad9545_pll_clk_names[] = {
514 static const char *
const ad9545_aux_nco_clk_names[] = {
515 "AUX_NCO0",
"AUX_NCO1",
518 static const char *
const ad9545_aux_tdc_clk_names[] = {
519 "AUX_TDC0",
"AUX_TDC1",
751 ad9545_aux_nco_clk_names)];
753 ad9545_aux_tdc_clk_names)];
772 ad9545_aux_nco_clk_names)];
774 ad9545_aux_tdc_clk_names)];
#define AD9545_DPLLX_FB_PATH(x, y)
Definition: ad9545.h:264
enum ad9545_ref_mode mode
Definition: ad9545.h:668
bool pll_used
Definition: ad9545.h:643
#define AD9545_NCOX_FREQ_THRESH(x)
Definition: ad9545.h:231
#define AD9545_MODULATOR_C0
Definition: ad9545.h:151
#define AD9545_DPLLX_HITLESS_N(x, y)
Definition: ad9545.h:267
int32_t ad9545_write_reg_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545.c:113
#define AD9545_CLK_PLL
Definition: ad9545.h:76
unsigned int address
Definition: ad9545.h:685
bool tdc_used
Definition: ad9545.h:692
#define AD9545_MISC_AUX_NC0_ERR_MSK
Definition: ad9545.h:393
#define AD9545_EN_PROFILE_MSK
Definition: ad9545.h:356
bool sys_clk_crystal
Definition: ad9545.h:711
@ AD9545_SINGLE_DIV_DIF
Definition: ad9545.h:541
#define AD9545_DIV_OPS_MUTE_A_MSK
Definition: ad9545.h:377
#define AD9545_MAX_DPLL_PROFILES
Definition: ad9545.h:438
unsigned int phase_thresh_ps
Definition: ad9545.h:670
@ AD9545_DC_COUPLED_LVDS
Definition: ad9545.h:537
#define AD9545_DPLLX_FRAC_DIV(x, y)
Definition: ad9545.h:269
struct no_os_clk_desc * hw
Definition: ad9545.h:659
int32_t ad9545_read_reg(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data)
Definition: ad9545.c:68
int32_t no_os_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition: no_os_i2c.c:58
#define AD9545_IN_MAX_TDC_FREQ_HZ
Definition: ad9545.h:428
struct ad9545_dev * dev
Definition: ad9545.h:660
uint64_t no_os_field_prep_u64(uint64_t mask, uint64_t val)
unsigned int loop_bw_mhz
Definition: ad9545.h:704
struct no_os_clk_desc * hw
Definition: ad9545.h:691
struct no_os_clk_desc * hw
Definition: ad9545.h:645
int32_t ad9545_write_mask(struct ad9545_dev *dev, uint16_t reg_addr, uint32_t mask, uint8_t data)
Definition: ad9545.c:129
#define NO_OS_GENMASK(h, l)
Definition: no_os_util.h:88
uint32_t valid_t_ms
Definition: ad9545.h:665
#define AD9545_NSHOT_NR_MSK
Definition: ad9545.h:384
#define AD9545_DPLLX_EN(x, y)
Definition: ad9545.h:262
const struct no_os_clk_platform_ops * platform_ops
Definition: no_os_clk.h:56
#define AD9545_MODULATOR_B0
Definition: ad9545.h:150
@ SPI
Definition: ad9545.h:450
#define NO_OS_BIT_ULL(x)
Definition: no_os_util.h:53
Header file of SPI Interface.
@ AD9545_DC_COUPLED_1V8
Definition: ad9545.h:530
#define AD9545_REF_X_PHASE_LOCK_DRAIN(x)
Definition: ad9545.h:224
#define AD9545_DPLLX_MOD_DIV(x, y)
Definition: ad9545.h:270
struct no_os_i2c_desc * i2c_desc
Definition: ad9545.h:737
int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition: no_os_i2c.c:119
#define AD9545_REF_X_MONITOR_HYST(x)
Definition: ad9545.h:221
#define AD9545_NCOX_PHASE_THRESH(x)
Definition: ad9545.h:230
uint64_t no_os_mul_u64_u32_shr(uint64_t a, uint32_t mul, unsigned int shift)
unsigned int priority
Definition: ad9545.h:631
struct ad9545_dev * dev
Definition: ad9545.h:693
enum ad9545_output_mode output_mode
Definition: ad9545.h:620
#define pr_err(fmt, args...)
Definition: no_os_print_log.h:94
#define AD9545_SYS_CLK_STABILITY_PERIOD_MASK
Definition: ad9545.h:206
struct ad9545_aux_dpll_clk aux_dpll_clk
Definition: ad9545.h:767
void no_os_rational_best_approximation_u64(uint64_t given_numerator, uint64_t given_denominator, uint64_t max_numerator, uint64_t max_denominator, uint64_t *best_numerator, uint64_t *best_denominator)
#define AD9545_AUX_DPLL_LOOP_BW
Definition: ad9545.h:131
#define AD9545_QX_DIV(x)
Definition: ad9545.h:237
#define AD9545_NCO_OFFSET_FREQ_INT_MSK
Definition: ad9545.h:329
Header file of Delay functions.
#define AD9545_DPLL_MAX_N
Definition: ad9545.h:435
struct ad9545_aux_nco_clk aux_nco_clks[NO_OS_ARRAY_SIZE(ad9545_aux_nco_clk_names)]
Definition: ad9545.h:771
#define AD9545_MX_PIN(x)
Definition: ad9545.h:215
#define AD9545_SYS_CLK_STABILITY_MS
Definition: ad9545.h:424
#define AD9545_PLLX_LOCK(x, y)
Definition: ad9545.h:390
const char * name
Definition: no_os_clk.h:52
#define AD9545_SEL_PRIORITY_MSK
Definition: ad9545.h:357
int ad9545_calib_aplls(struct ad9545_dev *dev)
Definition: ad9545.c:2051
#define NO_OS_DIV_ROUND_CLOSEST_ULL(x, y)
Definition: no_os_util.h:62
int32_t no_os_clk_init(struct no_os_clk_desc **desc, const struct no_os_clk_init_param *param)
@ AD9545_DUAL_DIV
Definition: ad9545.h:543
uint64_t internal_zero_delay_source_rate_hz
Definition: ad9545.h:654
#define AD9545_DPLLX_SOURCE(x, y)
Definition: ad9545.h:263
#define AD9545_APLL_M_DIV_MIN
Definition: ad9545.h:432
#define AD9545_MAX_DIV_RATIO
Definition: ad9545.h:447
unsigned int fast_acq_excess_bw
Definition: ad9545.h:633
unsigned int free_run_freq
Definition: ad9545.h:649
#define AD9545_CONFIG_0
Definition: ad9545.h:116
Definition: ad9361_util.h:75
#define AD9545_NCOX_CENTER_FREQ(x)
Definition: ad9545.h:292
struct no_os_clk_desc ** clks[4]
Definition: ad9545.h:755
#define AD9545_PLL_STATUS
Definition: ad9545.h:199
int32_t(* ad9545_reg_read_func)(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data)
Definition: ad9545.h:718
#define AD9545_NCO_CENTER_FREQ_INT_MAX
Definition: ad9545.h:316
bool dpll_used
Definition: ad9545.h:701
struct ad9545_out_clk out_clks[NO_OS_ARRAY_SIZE(ad9545_out_clk_names)]
Definition: ad9545.h:749
#define AD9545_AUX_DPLL_REF_FAULT
Definition: ad9545.h:396
enum ad9545_comm_type comm_type
Definition: ad9545.h:744
#define AD9545_TDCX_DIV(x)
Definition: ad9545.h:340
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:55
int32_t ad9545_remove(struct ad9545_dev *dev)
Free the memory allocated by ad9545_init().
Definition: ad9545.c:2411
uint64_t no_os_mul_u64_u32_div(uint64_t a, uint32_t mul, uint32_t divisor)
#define AD9545_SYNC_CTRL_DPLL_REF_MSK
Definition: ad9545.h:369
#define AD9545_EN_HITLESS_MSK
Definition: ad9545.h:360
#define AD9545_Q0CC
Definition: ad9545.h:90
#define AD9545_MODULATOR_A1
Definition: ad9545.h:174
enum ad7616_mode mode
Definition: ad7616.h:232
struct no_os_clk_desc * parent_clk
Definition: ad9545.h:666
enum ad9545_single_ended_config s_conf
Definition: ad9545.h:676
bool sys_clk_freq_doubler
Definition: ad9545.h:710
bool source_current
Definition: ad9545.h:619
#define AD9545_CALIB_APLL
Definition: ad9545.h:366
#define AD9545_COMPENSATE_DPLL
Definition: ad9545.h:128
uint8_t num_parents
Definition: ad9545.h:646
#define AD9545_MODULATION_COUNTER_A1
Definition: ad9545.h:172
#define AD9545_R_DIV_MAX
Definition: ad9545.h:427
uint8_t tdc_source
Definition: ad9545.h:637
#define AD9545_CALIB_CLK
Definition: ad9545.h:181
#define AD9545_NSHOT_EN_C0
Definition: ad9545.h:154
#define AD9545_REF_X_OFFSET_LIMIT(x)
Definition: ad9545.h:220
@ AD9545_IN_PULL_UP
Definition: ad9545.h:531
int32_t ad9545_setup(struct ad9545_dev *dev)
Definition: ad9545.c:2336
struct ad9545_dev * dev
Definition: ad9545.h:617
int ad9545_calib_aplls(struct ad9545_dev *dev)
Definition: ad9545.c:2051
Header file of Clock Driver.
struct no_os_clk_desc ** parents
Definition: ad9545.h:647
#define AD9545_COMPENSATE_NCOS_VIA_AUX_DPLL
Definition: ad9545.h:350
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
#define AD9545_PWR_CALIB_CHX(x)
Definition: ad9545.h:282
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
#define no_os_min(x, y)
Definition: no_os_util.h:65
enum ad9545_diferential_config d_conf
Definition: ad9545.h:677
struct ad9545_sys_clk sys_clk
Definition: ad9545.h:745
@ AD9545_DC_COUPLED
Definition: ad9545.h:536
#define NO_OS_DIV_ROUND_UP(x, y)
Definition: no_os_util.h:58
#define AD9545_BASE_FILTER_MSK
Definition: ad9545.h:362
#define AD9545_APLL_M_DIV_MAX
Definition: ad9545.h:433
uint64_t rate_requested_hz
Definition: ad9545.h:624
struct ad9545_dev * dev
Definition: ad9545.h:642
uint16_t nshot_en_reg
Definition: ad9545.h:549
ad9545_ref_mode
Definition: ad9545.h:522
#define AD9545_DPLLX_FB_MODE(x, y)
Definition: ad9545.h:265
unsigned int address
Definition: ad9545.h:623
#define AD9545_SYNC_CTRL_MODE_MSK
Definition: ad9545.h:370
uint8_t nshot_en_msk
Definition: ad9545.h:550
#define AD9545_MAX_ZERO_DELAY_RATE
Definition: ad9545.h:442
unsigned int address
Definition: ad9545.h:629
#define AD9545_DPLLX_FTW(x)
Definition: ad9545.h:260
#define AD9545_REF_X_RDIV(x)
Definition: ad9545.h:218
ad9545_reg_write_multi_func reg_write_multiple
Definition: ad9545.h:742
#define AD9545_MIN_DIV_RATIO
Definition: ad9545.h:446
unsigned int fast_acq_settle_ms
Definition: ad9545.h:635
struct ad9545_aux_nco_clk aux_nco_clks[NO_OS_ARRAY_SIZE(ad9545_aux_nco_clk_names)]
Definition: ad9545.h:750
bool internal_zero_delay
Definition: ad9545.h:652
unsigned int fast_acq_trigger_mode
Definition: ad9545.h:650
#define AD9545_SOURCEX_FREQ_THRESH(x)
Definition: ad9545.h:229
unsigned int freq_lock_fill_rate
Definition: ad9545.h:673
uint32_t sys_freq_hz
Definition: ad9545.h:713
#define AD9545_NCO_FREQ_INT_MAX
Definition: ad9545.h:337
#define AD9545_REF_X_FREQ_LOCK_DRAIN(x)
Definition: ad9545.h:226
struct ad9545_pll_clk pll_clks[NO_OS_ARRAY_SIZE(ad9545_pll_clk_names)]
Definition: ad9545.h:747
#define NO_OS_DIV_U64(x, y)
Definition: no_os_util.h:121
#define AD9545_DPLL_MAX_FRAC
Definition: ad9545.h:436
#define AD9545_SYS_CLK_FB_DIV
Definition: ad9545.h:122
bool fb_tagging
Definition: ad9545.h:638
@ AD9545_AC_COUPLED_IF
Definition: ad9545.h:528
#define AD9545_AUX_DPLL_LOCK_MSK
Definition: ad9545.h:395
#define AD9545_PRODUCT_ID_LOW
Definition: ad9545.h:117
#define AD9545_COMPNESATE_VIA_AUX_DPLL
Definition: ad9545.h:353
#define AD9545_DPLLX_FAST_MODE(x)
Definition: ad9545.h:286
#define AD9545_APLL_LOCKED(x)
Definition: ad9545.h:418
unsigned int loop_bw_uhz
Definition: ad9545.h:632
ad9545_reg_read_func reg_read
Definition: ad9545.h:739
#define AD9545_TAG_MODE_MSK
Definition: ad9545.h:361
#define AD9545_MAX_REFS
Definition: ad9545.h:430
#define AD9545_IO_UPDATE
Definition: ad9545.h:119
#define AD9545_TDCX_PERIOD(x)
Definition: ad9545.h:341
uint8_t hw_ch_num
Definition: no_os_clk.h:85
#define AD9545_SYS_CLK_INPUT
Definition: ad9545.h:123
#define AD9545_REF_CTRL_DIF_MSK
Definition: ad9545.h:208
Header file for ad9545 Driver.
#define AD9545_MX_TO_TDCX(x)
Definition: ad9545.h:344
int32_t ad9545_remove(struct ad9545_dev *dev)
Free the memory allocated by ad9545_init().
Definition: ad9545.c:2411
struct no_os_spi_desc * spi_desc
Definition: ad9545.h:735
struct ad9545_dev * dev
Definition: ad9545.h:702
uint64_t no_os_mul_u32_u32(uint32_t a, uint32_t b)
unsigned int freq_lock_drain_rate
Definition: ad9545.h:674
Structure holding CLK descriptor.
Definition: no_os_clk.h:81
#define AD9545_REFX_VALID_MSK
Definition: ad9545.h:403
unsigned int address
Definition: ad9545.h:667
ad9545_diferential_config
Definition: ad9545.h:534
#define AD9545_DPLLX_FAST_L1(x, y)
Definition: ad9545.h:271
ad9545_reg_write_func reg_write
Definition: ad9545.h:740
unsigned int freq_thresh_ps
Definition: ad9545.h:686
#define AD9545_NCO_CENTER_FREQ_INT_MSK
Definition: ad9545.h:311
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
unsigned int address
Definition: ad9545.h:694
struct no_os_clk_desc * parent_clk
Definition: ad9545.h:696
#define AD9545_DPLLX_SLEW_RATE(x)
Definition: ad9545.h:261
#define AD9545_UPDATE_REGS
Definition: ad9545.h:212
void * dev_desc
Definition: no_os_clk.h:58
#define AD9545_DPLLX_LOOP_BW(x, y)
Definition: ad9545.h:266
unsigned int phase_lock_fill_rate
Definition: ad9545.h:671
unsigned int source
Definition: ad9545.h:703
uint8_t internal_zero_delay_source
Definition: ad9545.h:653
uint64_t no_os_div_u64_rem(uint64_t dividend, uint32_t divisor, uint32_t *remainder)
int32_t ad9545_spi_reg_write(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t reg_data)
Definition: ad9545_spi.c:83
#define AD9545_DIV_OPS_MUTE_AA_MSK
Definition: ad9545.h:378
uint32_t r_div_ratio
Definition: ad9545.h:661
#define AD9545_SYNC_CTRLX(x)
Definition: ad9545.h:217
#define AD9545_DPLLX_N_DIV(x, y)
Definition: ad9545.h:268
Definition: no_os_clk.h:50
#define AD9545_MODULATOR_A0
Definition: ad9545.h:149
int32_t ad9545_i2c_reg_read_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545_i2c.c:105
#define AD9545_FB_PATH_TAG
Definition: ad9545.h:422
#define AD9545_MODULATION_COUNTER_A0
Definition: ad9545.h:146
int32_t ad9545_i2c_reg_write_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545_i2c.c:142
#define AD9545_SOURCEX_PHASE_THRESH(x)
Definition: ad9545.h:228
Structure holding I2C address descriptor.
Definition: no_os_i2c.h:107
#define AD9545_DPLL_MAX_MOD
Definition: ad9545.h:437
@ AD9545_AC_COUPLED
Definition: ad9545.h:535
void * no_os_malloc(size_t size)
Allocate memory and return a pointer to it.
Definition: chibios_alloc.c:49
ad9545_reg_read_multi_func reg_read_multiple
Definition: ad9545.h:741
#define AD9545_MISC_AUX_NC1_ERR_MSK
Definition: ad9545.h:394
#define AD9545_REF_X_FREQ_LOCK_FILL(x)
Definition: ad9545.h:225
#define no_os_clamp_t(type, val, min_val, max_val)
Definition: no_os_util.h:77
Header file of I2C Interface.
#define AD9545_DIV_OPS_QX(x)
Definition: ad9545.h:276
#define AD9545_NCOX_OFFSET_FREQ(x)
Definition: ad9545.h:293
#define AD9545_COMPENSATE_TDCS_VIA_AUX_DPLL
Definition: ad9545.h:347
#define AD9545_REF_X_PERIOD(x)
Definition: ad9545.h:219
@ AD9545_SINGLE_DIV
Definition: ad9545.h:542
struct ad9545_ref_in_clk ref_in_clks[NO_OS_ARRAY_SIZE(ad9545_ref_clk_names)]
Definition: ad9545.h:769
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
uint32_t source_ua
Definition: ad9545.h:621
unsigned int address
Definition: ad9545.h:644
int32_t ad9545_spi_reg_read_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545_spi.c:104
struct no_os_spi_init_param * spi_init
Definition: ad9545.h:761
int32_t(* ad9545_reg_read_multi_func)(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545.h:724
unsigned int pin_nr
Definition: ad9545.h:695
#define AD9545_MIN_SYS_CLK_FREQ
Definition: ad9545.h:444
struct ad9545_out_clk out_clks[NO_OS_ARRAY_SIZE(ad9545_out_clk_names)]
Definition: ad9545.h:770
#define AD9545_NCO_CENTER_FREQ_MAX
Definition: ad9545.h:315
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
uint16_t modulation_counter_reg
Definition: ad9545.h:548
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
bool en
Definition: ad9545.h:636
int32_t(* ad9545_reg_write_func)(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t reg_data)
Definition: ad9545.h:721
struct no_os_clk_desc * hw
Definition: ad9545.h:700
uint32_t ref_freq_hz
Definition: ad9545.h:712
#define AD9545_REFX_STATUS(x)
Definition: ad9545.h:287
#define AD9545_APLLX_M_DIV(x)
Definition: ad9545.h:233
struct no_os_clk_desc * hw
Definition: ad9545.h:622
struct no_os_clk_desc * parent_clk
Definition: ad9545.h:625
int32_t ad9545_read_reg_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545.c:97
ad9545_single_ended_config
Definition: ad9545.h:527
#define AD9545_AUX_DPLL_CHANGE_LIMIT
Definition: ad9545.h:129
#define AD9545_MODULATOR_EN
Definition: ad9545.h:381
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:70
bool nco_used
Definition: ad9545.h:683
#define AD9545_REF_X_VALID_TIMER(x)
Definition: ad9545.h:222
int32_t(* ad9545_reg_write_multi_func)(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545.h:728
ad9545_output_mode
Definition: ad9545.h:540
unsigned int phase_lock_drain_rate
Definition: ad9545.h:672
#define AD9545_DRIVER_1A_CONF
Definition: ad9545.h:177
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
int32_t ad9545_init(struct ad9545_dev **device, struct ad9545_init_param *init_param)
Definition: ad9545.c:1541
uint32_t d_tol_ppb
Definition: ad9545.h:663
int32_t ad9545_spi_reg_read(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data)
Definition: ad9545_spi.c:56
uint8_t monitor_hyst_scale
Definition: ad9545.h:664
@ AD9545_SINGLE_ENDED
Definition: ad9545.h:523
#define AD9545_AUX_DPLL_SOURCE
Definition: ad9545.h:130
struct ad9545_dev * dev
Definition: ad9545.h:684
unsigned int rate_change_limit
Definition: ad9545.h:705
#define AD9545_NCO_CENTER_FREQ_FRAC_WIDTH
Definition: ad9545.h:306
void * dev_desc
Definition: no_os_clk.h:89
#define AD9545_MODULATION_COUNTER_C0
Definition: ad9545.h:148
#define AD9545_RESET_REGS
Definition: ad9545.h:213
struct ad9545_sys_clk sys_clk
Definition: ad9545.h:766
struct ad9545_aux_tdc_clk aux_tdc_clks[NO_OS_ARRAY_SIZE(ad9545_aux_tdc_clk_names)]
Definition: ad9545.h:752
#define AD9545_NSHOT_EN_AB0
Definition: ad9545.h:153
uint8_t hw_ch_num
Definition: no_os_clk.h:54
#define AD9545_CLK_NCO
Definition: ad9545.h:77
struct ad9545_ref_in_clk ref_in_clks[NO_OS_ARRAY_SIZE(ad9545_ref_clk_names)]
Definition: ad9545.h:748
unsigned int phase_thresh_ps
Definition: ad9545.h:687
int32_t ad9545_init(struct ad9545_dev **device, struct ad9545_init_param *init_param)
Definition: ad9545.c:1541
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
struct ad9545_aux_dpll_clk aux_dpll_clk
Definition: ad9545.h:746
#define AD9545_COMPENSATE_NCOS
Definition: ad9545.h:127
#define AD9545_CTRL_CH_NSHOT_MSK
Definition: ad9545.h:387
#define AD9545_PRODUCT_ID_HIGH
Definition: ad9545.h:118
Header file of GPIO Interface.
struct no_os_clk_desc * hw
Definition: ad9545.h:682
int32_t ad9545_spi_reg_write_multiple(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data, uint16_t count)
Definition: ad9545_spi.c:137
@ AD9545_DC_COUPLED_1V2
Definition: ad9545.h:529
#define AD9545_REF_X_PHASE_LOCK_FILL(x)
Definition: ad9545.h:223
#define AD9545_CHIP_ID
Definition: ad9545.h:121
#define AD9545_CLK_AUX_TDC
Definition: ad9545.h:78
#define AD9545_MAX_SYS_CLK_FREQ
Definition: ad9545.h:445
unsigned int freq_thresh_ps
Definition: ad9545.h:669
struct no_os_i2c_init_param * i2c_init
Definition: ad9545.h:763
unsigned int parent_index
Definition: ad9545.h:630
int32_t ad9545_i2c_reg_read(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t *reg_data)
Definition: ad9545_i2c.c:54
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 AD9545_MODULATOR_B1
Definition: ad9545.h:175
#define AD9545_SYS_CLK_REF_FREQ
Definition: ad9545.h:124
#define AD9545_PLLX_STATUS(x)
Definition: ad9545.h:283
int32_t ad9545_i2c_reg_write(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t reg_data)
Definition: ad9545_i2c.c:83
Header file of utility functions.
enum ad9545_comm_type comm_type
Definition: ad9545.h:765
@ SPI
Definition: adxl372.h:322
#define AD9545_REF_CTRL_REFAA_MSK
Definition: ad9545.h:210
#define AD9545_NSHOT_REQ_CH(x)
Definition: ad9545.h:259
uint64_t rate_requested_hz
Definition: ad9545.h:651
bool ref_used
Definition: ad9545.h:662
struct ad9545_aux_tdc_clk aux_tdc_clks[NO_OS_ARRAY_SIZE(ad9545_aux_tdc_clk_names)]
Definition: ad9545.h:773
#define AD9545_CTRL_CH(x)
Definition: ad9545.h:285
#define AD9545_CLK_OUT
Definition: ad9545.h:75
@ AD9545_DIFFERENTIAL
Definition: ad9545.h:524
bool output_used
Definition: ad9545.h:618
#define pr_warning(fmt, args...)
Definition: no_os_print_log.h:103
#define AD9545_SYS_PLL_STABLE(x)
Definition: ad9545.h:416
#define AD9545_MODULATION_COUNTER_B1
Definition: ad9545.h:173
uint16_t modulator_reg
Definition: ad9545.h:547
int32_t ad9545_setup(struct ad9545_dev *dev)
Definition: ad9545.c:2336
#define AD9545_POWER_DOWN_REF
Definition: ad9545.h:182
#define AD9545_COMPENSATE_TDCS
Definition: ad9545.h:126
uint32_t slew_rate_limit_ps
Definition: ad9545.h:655
#define AD9545_MISC
Definition: ad9545.h:200
struct ad9545_pll_clk pll_clks[NO_OS_ARRAY_SIZE(ad9545_pll_clk_names)]
Definition: ad9545.h:768
int32_t no_os_clk_recalc_rate(struct no_os_clk_desc *desc, uint64_t *rate)
int32_t ad9545_write_reg(struct ad9545_dev *dev, uint16_t reg_addr, uint8_t reg_data)
Definition: ad9545.c:82
int32_t ad9545_write_mask(struct ad9545_dev *dev, uint16_t reg_addr, uint32_t mask, uint8_t data)
Definition: ad9545.c:129
#define AD9545_NCO_OFFSET_FREQ_FRAC_WIDTH
Definition: ad9545.h:324
@ I2C
Definition: ad9545.h:451
struct ad9545_dpll_profile profiles[AD9545_MAX_DPLL_PROFILES]
Definition: ad9545.h:648
#define AD9545_R_DIV_MSK
Definition: ad9545.h:426
ad9545_comm_type
Definition: ad9545.h:449
unsigned int fast_acq_timeout_ms
Definition: ad9545.h:634
struct no_os_clk_desc * parent_clk
Definition: ad9545.h:706
#define AD9545_MODULATION_COUNTER_B0
Definition: ad9545.h:147
#define NO_OS_DIV_ROUND_CLOSEST(x, y)
Definition: no_os_util.h:60
#define AD9545_REF_CTRL_REFA_MSK
Definition: ad9545.h:209
#define AD9545_STABILITY_TIMER
Definition: ad9545.h:125
#define AD9545_DPLLX_FAST_L2(x, y)
Definition: ad9545.h:272
#define AD9545_REF_A_CTRL
Definition: ad9545.h:132
#define AD9545_NSHOT_EN_AB1
Definition: ad9545.h:176
chip_id
Definition: ad9172.h:57
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
#define AD9545_DRIVER_0A_CONF
Definition: ad9545.h:155
uint64_t no_os_div_u64(uint64_t dividend, uint32_t divisor)