no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad9144.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef AD9144_H_
34#define AD9144_H_
35
36#include <stdint.h>
37#include "no_os_delay.h"
38#include "no_os_spi.h"
39#include "no_os_util.h"
40#include "jesd204.h"
41
42#define REG_SPI_INTFCONFA 0x000 /* Interface configuration A */
43#define REG_SPI_INTFCONFB 0x001 /* Interface configuration B */
44#define REG_SPI_DEVCONF 0x002 /* Device Configuration */
45#define REG_SPI_PRODIDL 0x004 /* Product Identification Low Byte */
46#define REG_SPI_PRODIDH 0x005 /* Product Identification High Byte */
47#define REG_SPI_CHIPGRADE 0x006 /* Chip Grade */
48#define REG_SPI_PAGEINDX 0x008 /* Page Pointer or Device Index */
49#define REG_SPI_DEVINDX2 0x009 /* Secondary Device Index */
50#define REG_SPI_SCRATCHPAD 0x00A /* Scratch Pad */
51#define REG_SPI_MS_UPDATE 0x00F /* Master/Slave Update Bit */
52#define REG_PWRCNTRL0 0x011 /* Power Control Reg 1 */
53#define REG_TXENMASK1 0x012 /* TXenable masks */
54#define REG_PWRCNTRL3 0x013 /* Power control register 3 */
55#define REG_COARSE_GROUP_DLY 0x014 /* Coarse Group Delay Adjustment */
56#define REG_IRQ_ENABLE0 0x01F /* Interrupt Enable */
57#define REG_IRQ_ENABLE1 0x020 /* Interrupt Enable */
58#define REG_IRQ_ENABLE2 0x021 /* Interrupt Enable */
59#define REG_IRQ_ENABLE3 0x022 /* Interrupt Enable */
60#define REG_IRQ_STATUS0 0x023 /* Interrupt Status */
61#define REG_IRQ_STATUS1 0x024 /* Interrupt Status */
62#define REG_IRQ_STATUS2 0x025 /* Interrupt Status */
63#define REG_IRQ_STATUS3 0x026 /* Interrupt Status */
64#define REG_JESD_CHECKS 0x030 /* JESD Parameter Checking */
65#define REG_SYNC_TESTCTRL 0x031 /* Sync Control Reg0 */
66#define REG_SYNC_DACDELAY_L 0x032 /* Sync Logic DacDelay [7:0] */
67#define REG_SYNC_DACDELAY_H 0x033 /* Sync Logic DacDelay [8] */
68#define REG_SYNC_ERRWINDOW 0x034 /* Sync Error Window */
69#define REG_SYNC_DLYCOUNT 0x035 /* Sync Control Ref Delay Count */
70#define REG_SYNC_REFCOUNT 0x036 /* Sync SysRef InActive Interval */
71#define REG_SYNC_LASTERR_L 0x038 /* SyncLASTerror_L */
72#define REG_SYNC_LASTERR_H 0x039 /* SyncLASTerror_H */
73#define REG_SYNC_CTRL 0x03A /* Sync Mode Control */
74#define REG_SYNC_STATUS 0x03B /* Sync Alignment Flags */
75#define REG_SYNC_CURRERR_L 0x03C /* Sync Alignment Error[7:0] */
76#define REG_SYNC_CURRERR_H 0x03D /* Sync Alignment Error[8] */
77#define REG_ERROR_THERM 0x03E /* Sync Error Thermometer */
78#define REG_DACGAIN0_1 0x040 /* MSBs of Full Scale Adjust DAC */
79#define REG_DACGAIN0_0 0x041 /* LSBs of Full Scale Adjust DAC */
80#define REG_DACGAIN1_1 0x042 /* MSBs of Full Scale Adjust DAC */
81#define REG_DACGAIN1_0 0x043 /* LSBs of Full Scale Adjust DAC */
82#define REG_DACGAIN2_1 0x044 /* MSBs of Full Scale Adjust DAC */
83#define REG_DACGAIN2_0 0x045 /* LSBs of Full Scale Adjust DAC */
84#define REG_DACGAIN3_1 0x046 /* MSBs of Full Scale Adjust DAC */
85#define REG_DACGAIN3_0 0x047 /* LSBs of Full Scale Adjust DAC */
86#define REG_PD_DACLDO 0x048 /* Powerdown DAC LDOs */
87#define REG_STAT_DACLDO 0x049 /* DAC LDO Status */
88#define REG_DECODE_CTRL0 0x04B /* Decoder Control */
89#define REG_DECODE_CTRL1 0x04C /* Decoder Control */
90#define REG_DECODE_CTRL2 0x04D /* Decoder Control */
91#define REG_DECODE_CTRL3 0x04E /* Decoder Control */
92#define REG_NCO_CLRMODE 0x050 /* NCO CLR Mode */
93#define REG_NCOKEY_ILSB 0x051 /* NCO Clear on Data Key I lsb */
94#define REG_NCOKEY_IMSB 0x052 /* NCO Clear on Data Key I msb */
95#define REG_NCOKEY_QLSB 0x053 /* NCO Clear on Data Key Q lsb */
96#define REG_NCOKEY_QMSB 0x054 /* NCO Clear on Data Key Q msb */
97#define REG_PA_THRES0 0x060 /* PDP Threshold */
98#define REG_PA_THRES1 0x061 /* PDP Threshold */
99#define REG_PA_AVG_TIME 0x062 /* PDP Control */
100#define REG_PA_POWER0 0x063 /* PDP Power */
101#define REG_PA_POWER1 0x064 /* PDP Power */
102#define REG_CLKCFG0 0x080 /* Clock Configuration */
103#define REG_SYSREF_ACTRL0 0x081 /* SYSREF Analog Control 0 */
104#define REG_SYSREF_ACTRL1 0x082 /* SYSREF Analog Control 1 */
105#define REG_DACPLLCNTRL 0x083 /* Top Level Control DAC Clock PLL */
106#define REG_DACPLLSTATUS 0x084 /* DAC PLL Status Bits */
107#define REG_DACINTEGERWORD0 0x085 /* Feedback divider tuning word */
108#define REG_DACLOOPFILT1 0x087 /* C1 and C2 control */
109#define REG_DACLOOPFILT2 0x088 /* R1 and C3 control */
110#define REG_DACLOOPFILT3 0x089 /* Bypass and R2 control */
111#define REG_DACCPCNTRL 0x08A /* Charge Pump/Cntrl Voltage */
112#define REG_DACLOGENCNTRL 0x08B /* Logen Control */
113#define REG_DACLDOCNTRL1 0x08C /* LDO Control1 + Reference Divider */
114#define REG_CAL_DAC_ERR 0x0E0 /* Report DAC Cal errors */
115#define REG_CAL_MSB_THRES 0x0E1 /* MSB sweep Threshold definition */
116#define REG_CAL_CTRL_GLOBAL 0x0E2 /* Global Calibration DAC Control */
117#define REG_CAL_MSBHILVL 0x0E3 /* High Level for MSB level compare */
118#define REG_CAL_MSBLOLVL 0x0E4 /* Low Level for MSB level compare */
119#define REG_CAL_THRESH 0x0E5 /* TAC Threshold definition */
120#define REG_CAL_AVG_CNT 0x0E6 /* CAL DAC Number of averages */
121#define REG_CAL_CLKDIV 0x0E7 /* Calibration DAC clock divide */
122#define REG_CAL_INDX 0x0E8 /* Calibration DAC Select */
123#define REG_CAL_CTRL 0x0E9 /* Calibration DAC Control */
124#define REG_CAL_ADDR 0x0EA /* Calibration DAC Address */
125#define REG_CAL_DATA 0x0EB /* Calibration DAC Data */
126#define REG_CAL_UPDATE 0x0EC /* Calibration DAC Write Update */
127#define REG_CAL_INIT 0x0ED /* Calibration init */
128#define REG_DATA_FORMAT 0x110 /* Data format */
129#define REG_DATAPATH_CTRL 0x111 /* Datapath Control */
130#define REG_INTERP_MODE 0x112 /* Interpolation Mode */
131#define REG_NCO_FTW_UPDATE 0x113 /* NCO Frequency Tuning Word Update */
132#define REG_FTW0 0x114 /* NCO Frequency Tuning Word LSB */
133#define REG_FTW1 0x115 /* NCO Frequency Tuning Word */
134#define REG_FTW2 0x116 /* NCO Frequency Tuning Word */
135#define REG_FTW3 0x117 /* NCO Frequency Tuning Word */
136#define REG_FTW4 0x118 /* NCO Frequency Tuning Word */
137#define REG_FTW5 0x119 /* NCO Frequency Tuning Word MSB */
138#define REG_NCO_PHASE_OFFSET0 0x11A /* NCO Phase Offset LSB */
139#define REG_NCO_PHASE_OFFSET1 0x11B /* NCO Phase Offset MSB */
140#define REG_NCO_PHASE_ADJ0 0x11C /* I/Q Phase Adjust LSB */
141#define REG_NCO_PHASE_ADJ1 0x11D /* I/Q Phase Adjust MSB */
142#define REG_TXEN_FUNC 0x11E /* Transmit Enable function */
143#define REG_TXEN_SM_0 0x11F /* Transmit enable power control state machine */
144#define REG_TXEN_SM_1 0x120 /* Rise and fall */
145#define REG_TXEN_SM_2 0x121 /* Transmit enable maximum A */
146#define REG_TXEN_SM_3 0x122 /* Transmit enable maximum B */
147#define REG_TXEN_SM_4 0x123 /* Transmit enable maximum C */
148#define REG_TXEN_SM_5 0x124 /* Transmit enable maximum D */
149#define REG_DACOUT_ON_DOWN 0x125 /* DAC out down control and on trigger */
150#define REG_DACOFF 0x12C /* DAC Shutdown Source */
151#define REG_DATA_PATH_FLUSH_COUNT0 0x12D /* Data path flush counter LSB */
152#define REG_DATA_PATH_FLUSH_COUNT1 0x12E /* Data path flush counter MSB */
153#define REG_DIE_TEMP_CTRL0 0x12F /* Die Temp Range Control */
154#define REG_DIE_TEMP_CTRL1 0x130 /* Die temperature control register */
155#define REG_DIE_TEMP_CTRL2 0x131 /* Die temperature control register */
156#define REG_DIE_TEMP0 0x132 /* Die temp LSB */
157#define REG_DIE_TEMP1 0x133 /* Die Temp MSB */
158#define REG_DIE_TEMP_UPDATE 0x134 /* Die temperature update */
159#define REG_DC_OFFSET_CTRL 0x135 /* DC Offset Control */
160#define REG_IPATH_DC_OFFSET_1PART0 0x136 /* LSB of first part of DC Offset value for I path */
161#define REG_IPATH_DC_OFFSET_1PART1 0x137 /* MSB of first part of DC Offset value for I path */
162#define REG_QPATH_DC_OFFSET_1PART0 0x138 /* LSB of first part of DC Offset value for Q path */
163#define REG_QPATH_DC_OFFSET_1PART1 0x139 /* MSB of first part of DC Offset value for Q path */
164#define REG_IPATH_DC_OFFSET_2PART 0x13A /* Second part of DC Offset value for I path */
165#define REG_QPATH_DC_OFFSET_2PART 0x13B /* Second part of DC Offset value for Q path */
166#define REG_IDAC_DIG_GAIN0 0x13C /* I DAC Gain LSB */
167#define REG_IDAC_DIG_GAIN1 0x13D /* I DAC Gain MSB */
168#define REG_QDAC_DIG_GAIN0 0x13E /* Q DAC Gain LSB */
169#define REG_QDAC_DIG_GAIN1 0x13F /* Q DAC Gain MSB */
170#define REG_GAIN_RAMP_UP_STP0 0x140 /* LSB of digital gain rises */
171#define REG_GAIN_RAMP_UP_STP1 0x141 /* MSB of digital gain rises */
172#define REG_GAIN_RAMP_DOWN_STP0 0x142 /* LSB of digital gain drops */
173#define REG_GAIN_RAMP_DOWN_STP1 0x143 /* MSB of digital gain drops */
174#define REG_BLSM_CTRL 0x146 /* Blanking SM control and func */
175#define REG_BLSM_STAT 0x147 /* Blanking SM control and func */
176#define REG_PRBS 0x14B /* PRBS Input Data Checker */
177#define REG_PRBS_ERROR_I 0x14C /* PRBS Error Counter Real */
178#define REG_PRBS_ERROR_Q 0x14D /* PRBS Error Counter Imaginary */
179#define REG_DACPLLT5 0x1B5 /* ALC/Varactor control */
180#define REG_DACPLLTB 0x1BB /* VCO Bias Control */
181#define REG_DACPLLTD 0x1BD /* VCO Cal control */
182#define REG_DACPLLT17 0x1C4 /* Varactor Control 1 */
183#define REG_DACPLLT18 0x1C5 /* Varactor Control 2 */
184#define REG_ASPI_SPARE0 0x1C6 /* Spare Register 0 */
185#define REG_ASPI_SPARE1 0x1C7 /* Spare Register 1 */
186#define REG_SPISTRENGTH 0x1DF /* Reg 70 Description */
187#define REG_CLK_TEST 0x1EB /* Clock related control signaling */
188#define REG_ATEST_VOLTS 0x1EC /* Analog Test Voltage Extraction */
189#define REG_ASPI_CLKSRC 0x1ED /* Analog Spi clock source for PD machines */
190#define REG_MASTER_PD 0x200 /* Master power down for Receiver PHYx */
191#define REG_PHY_PD 0x201 /* Power down for individual Receiver PHYx */
192#define REG_GENERIC_PD 0x203 /* Miscellaneous power down controls */
193#define REG_CDR_RESET 0x206 /* CDR Reset control */
194#define REG_CDR_OPERATING_MODE_REG_0 0x230 /* Clock and data recovery operating modes */
195#define REG_CONFIG_REG3 0x232 /* SERDES interface configuration */
196#define REG_EQ_CONFIG_PHY_0_1 0x250 /* Equalizer configuration for PHY 0 and PHY 1 */
197#define REG_EQ_CONFIG_PHY_2_3 0x251 /* Equalizer configuration for PHY 2 and PHY 3 */
198#define REG_EQ_CONFIG_PHY_4_5 0x252 /* Equalizer configuration for PHY 4 and PHY 5 */
199#define REG_EQ_CONFIG_PHY_6_7 0x253 /* Equalizer configuration for PHY 6 and PHY 7 */
200#define REG_EQ_BIAS_REG 0x268 /* Equalizer bias control */
201#define REG_SYNTH_ENABLE_CNTRL 0x280 /* Rx PLL enable controls */
202#define REG_PLL_STATUS 0x281 /* Rx PLL status readbacks */
203#define REG_REF_CLK_DIVIDER_LDO 0x289 /* Rx PLL LDO control */
204#define REG_SERDES_PLL_CTRL 0x291 /* Serdes PLL control */
205#define REG_SERDES_PLL_CP3 0x29c /* Serdes PLL charge pump */
206#define REG_SERDES_PLL_VAR3 0x29f /* Serdes PLL VCO varactor */
207#define REG_DEV_CONFIG_8 0x2A4 /* To control the clock configuration */
208#define REG_TERM_BLK1_CTRLREG0 0x2A7 /* Termination controls for PHYs 0, 1, 6, and 7 */
209#define REG_TERM_BLK1_CTRLREG1 0x2A8 /* Termination controls for PHYs 0, 1, 6, and 7 */
210#define REG_DEV_CONFIG_9 0x2AA /* SERDES interface termination settings */
211#define REG_DEV_CONFIG_10 0x2AB /* SERDES interface termination settings */
212#define REG_TERM_BLK2_CTRLREG0 0x2AE /* Termination controls for PHYs 2, 3, 4, and 5 */
213#define REG_TERM_BLK2_CTRLREG1 0x2AF /* Termination controls for PHYs 2, 3, 4, and 5 */
214#define REG_DEV_CONFIG_11 0x2B1 /* SERDES interface termination settings */
215#define REG_DEV_CONFIG_12 0x2B2 /* SERDES interface termination settings */
216#define REG_GENERAL_JRX_CTRL_0 0x300 /* General JRX Control Register 0 */
217#define REG_GENERAL_JRX_CTRL_1 0x301 /* General JRX Control Register 1 */
218#define REG_DYN_LINK_LATENCY_0 0x302 /* Register 1 description */
219#define REG_DYN_LINK_LATENCY_1 0x303 /* Register 2 description */
220#define REG_LMFC_DELAY_0 0x304 /* Register 3 description */
221#define REG_LMFC_DELAY_1 0x305 /* Register 4 description */
222#define REG_LMFC_VAR_0 0x306 /* Register 5 description */
223#define REG_LMFC_VAR_1 0x307 /* Register 6 description */
224#define REG_XBAR(x) (0x308 +(x)) /* Register 7 description */
225#define REG_FIFO_STATUS_REG_0 0x30C /* Register 11 description */
226#define REG_FIFO_STATUS_REG_1 0x30D /* Register 12 description */
227#define REG_FIFO_STATUS_REG_2 0x30E /* Register 13 description */
228#define REG_SYNCB_GEN_0 0x311 /* Register 16 description */
229#define REG_SYNCB_GEN_1 0x312 /* Register 17 description */
230#define REG_SYNCB_GEN_3 0x313 /* Register 18 description */
231#define REG_SERDES_SPI_REG 0x314 /* SERDES SPI configuration */
232#define REG_PHY_PRBS_TEST_EN 0x315 /* PHY PRBS TEST ENABLE FOR INDIVIDUAL LANES */
233#define REG_PHY_PRBS_TEST_CTRL 0x316 /* Reg 20 Description */
234#define REG_PHY_PRBS_TEST_THRESH_LOBITS 0x317 /* Reg 21 Description */
235#define REG_PHY_PRBS_TEST_THRESH_MIDBITS 0x318 /* Reg 22 Description */
236#define REG_PHY_PRBS_TEST_THRESH_HIBITS 0x319 /* Reg 23 Description */
237#define REG_PHY_PRBS_TEST_ERRCNT_LOBITS 0x31A /* Reg 24 Description */
238#define REG_PHY_PRBS_TEST_ERRCNT_MIDBITS 0x31B /* Reg 25 Description */
239#define REG_PHY_PRBS_TEST_ERRCNT_HIBITS 0x31C /* Reg 26 Description */
240#define REG_PHY_PRBS_TEST_STATUS 0x31D /* Reg 27 Description */
241#define REG_SHORT_TPL_TEST_0 0x32C /* Reg 46 Description */
242#define REG_SHORT_TPL_TEST_1 0x32D /* Reg 47 Description */
243#define REG_SHORT_TPL_TEST_2 0x32E /* Reg 48 Description */
244#define REG_SHORT_TPL_TEST_3 0x32F /* Reg 49 Description */
245#define REG_DEVICE_CONFIG_REG_13 0x333 /* SERDES interface configuration */
246#define REG_JESD_BIT_INVERSE_CTRL 0x334 /* Reg 42 Description */
247#define REG_DID_REG 0x400 /* Reg 0 Description */
248#define REG_BID_REG 0x401 /* Reg 1 Description */
249#define REG_LID0_REG 0x402 /* Reg 2 Description */
250#define REG_SCR_L_REG 0x403 /* Reg 3 Description */
251#define REG_F_REG 0x404 /* Reg 4 Description */
252#define REG_K_REG 0x405 /* Reg 5 Description */
253#define REG_M_REG 0x406 /* Reg 6 Description */
254#define REG_CS_N_REG 0x407 /* Reg 7 Description */
255#define REG_NP_REG 0x408 /* Reg 8 Description */
256#define REG_S_REG 0x409 /* Reg 9 Description */
257#define REG_HD_CF_REG 0x40A /* Reg 10 Description */
258#define REG_RES1_REG 0x40B /* Reg 11 Description */
259#define REG_RES2_REG 0x40C /* Reg 12 Description */
260#define REG_CHECKSUM_REG 0x40D /* Reg 13 Description */
261#define REG_COMPSUM0_REG 0x40E /* Reg 14 Description */
262#define REG_LID1_REG 0x412 /* Reg 18 Description */
263#define REG_CHECKSUM1_REG 0x415 /* Reg 19 Description */
264#define REG_COMPSUM1_REG 0x416 /* Reg 22 Description */
265#define REG_LID2_REG 0x41A /* Reg 26 Description */
266#define REG_CHECKSUM2_REG 0x41D /* Reg 29 Description */
267#define REG_COMPSUM2_REG 0x41E /* Reg 30 Description */
268#define REG_LID3_REG 0x422 /* Reg 34 Description */
269#define REG_CHECKSUM3_REG 0x425 /* Reg 37 Description */
270#define REG_COMPSUM3_REG 0x426 /* Reg 38 Description */
271#define REG_LID4_REG 0x42A /* Reg 34 Description */
272#define REG_CHECKSUM4_REG 0x42D /* Reg 37 Description */
273#define REG_COMPSUM4_REG 0x42E /* Reg 38 Description */
274#define REG_LID5_REG 0x432 /* Reg 34 Description */
275#define REG_CHECKSUM5_REG 0x435 /* Reg 37 Description */
276#define REG_COMPSUM5_REG 0x436 /* Reg 38 Description */
277#define REG_LID6_REG 0x43A /* Reg 34 Description */
278#define REG_CHECKSUM6_REG 0x43D /* Reg 37 Description */
279#define REG_COMPSUM6_REG 0x43E /* Reg 38 Description */
280#define REG_LID7_REG 0x442 /* Reg 34 Description */
281#define REG_CHECKSUM7_REG 0x445 /* Reg 37 Description */
282#define REG_COMPSUM7_REG 0x446 /* Reg 38 Description */
283#define REG_ILS_DID 0x450 /* Reg 80 Description */
284#define REG_ILS_BID 0x451 /* Reg 81 Description */
285#define REG_ILS_LID0 0x452 /* Reg 82 Description */
286#define REG_ILS_SCR_L 0x453 /* Reg 83 Description */
287#define REG_ILS_F 0x454 /* Reg 84 Description */
288#define REG_ILS_K 0x455 /* Reg 85 Description */
289#define REG_ILS_M 0x456 /* Reg 86 Description */
290#define REG_ILS_CS_N 0x457 /* Reg 87 Description */
291#define REG_ILS_NP 0x458 /* Reg 88 Description */
292#define REG_ILS_S 0x459 /* Reg 89 Description */
293#define REG_ILS_HD_CF 0x45A /* Reg 90 Description */
294#define REG_ILS_RES1 0x45B /* Reg 91 Description */
295#define REG_ILS_RES2 0x45C /* Reg 92 Description */
296#define REG_ILS_CHECKSUM 0x45D /* Reg 93 Description */
297#define REG_ERRCNTRMON 0x46B /* Reg 107 Description */
298#define REG_LANEDESKEW 0x46C /* Reg 108 Description */
299#define REG_BADDISPARITY 0x46D /* Reg 109 Description */
300#define REG_NITDISPARITY 0x46E /* Reg 110 Description */
301#define REG_UNEXPECTEDKCHAR 0x46F /* Reg 111 Description */
302#define REG_CODEGRPSYNCFLG 0x470 /* Reg 112 Description */
303#define REG_FRAMESYNCFLG 0x471 /* Reg 113 Description */
304#define REG_GOODCHKSUMFLG 0x472 /* Reg 114 Description */
305#define REG_INITLANESYNCFLG 0x473 /* Reg 115 Description */
306#define REG_CTRLREG1 0x476 /* Reg 118 Description */
307#define REG_CTRLREG2 0x477 /* Reg 119 Description */
308#define REG_KVAL 0x478 /* Reg 120 Description */
309#define REG_IRQVECTOR 0x47A /* Reg 122 Description */
310#define REG_SYNCASSERTIONMASK 0x47B /* Reg 123 Description */
311#define REG_ERRORTHRES 0x47C /* Reg 124 Description */
312#define REG_LANEENABLE 0x47D /* Reg 125 Description */
313
314/*
315 * REG_SPI_INTFCONFA
316 */
317#define SOFTRESET_M (1 << 7) /* Soft Reset (Mirror) */
318#define LSBFIRST_M (1 << 6) /* LSB First (Mirror) */
319#define ADDRINC_M (1 << 5) /* Address Increment (Mirror) */
320#define SDOACTIVE_M (1 << 4) /* SDO Active (Mirror) */
321#define SDOACTIVE (1 << 3) /* SDO Active */
322#define ADDRINC (1 << 2) /* Address Increment */
323#define LSBFIRST (1 << 1) /* LSB First */
324#define SOFTRESET (1 << 0) /* Soft Reset */
325
326/*
327 * REG_SPI_INTFCONFB
328 */
329#define SINGLEINS (1 << 7) /* Single Instruction */
330#define CSBSTALL (1 << 6) /* CSb Stalling */
331
332/*
333 * REG_SPI_DEVCONF
334 */
335#define DEVSTATUS(x) (((x) & 0xF) << 4) /* Device Status */
336#define CUSTOPMODE(x) (((x) & 0x3) << 2) /* Customer Operating Mode */
337#define SYSOPMODE(x) (((x) & 0x3) << 0) /* System Operating Mode */
338
339/*
340 * REG_SPI_CHIPGRADE
341 */
342#define PROD_GRADE(x) (((x) & 0xF) << 4) /* Product Grade */
343#define DEV_REVISION(x) (((x) & 0xF) << 0) /* Device Revision */
344
345/*
346 * REG_SPI_PAGEINDX
347 */
348#define PAGEINDX(x) (((x) & 0x3) << 0) /* Page or Index Pointer */
349
350/*
351 * REG_SPI_MS_UPDATE
352 */
353#define SLAVEUPDATE (1 << 0) /* M/S Update Bit */
354
355/*
356 * REG_PWRCNTRL0
357 */
358#define PD_BG (1 << 7) /* Reference PowerDown */
359#define PD_DAC_0 (1 << 6) /* PD Ichannel DAC 0 */
360#define PD_DAC_1 (1 << 5) /* PD Qchannel DAC 1 */
361#define PD_DAC_2 (1 << 4) /* PD Ichannel DAC 2 */
362#define PD_DAC_3 (1 << 3) /* PD Qchannel DAC 3 */
363#define PD_DACM (1 << 2) /* PD Dac master Bias */
364
365/*
366 * REG_TXENMASK1
367 */
368#define SYS_MASK (1 << 2) /* SYSREF Receiver TXen mask */
369#define DACB_MASK (1 << 1) /* Dual B Dac TXen1 mask */
370#define DACA_MASK (1 << 0) /* Dual A Dac TXen0 mask */
371
372/*
373 * REG_PWRCNTRL3
374 */
375#define ENA_PA_CTRL_FROM_PAPROT_ERR (1 << 6) /* Control PDP enable from PAProt block */
376#define ENA_PA_CTRL_FROM_TXENSM (1 << 5) /* Control PDP enable from Txen State machine */
377#define ENA_PA_CTRL_FROM_BLSM (1 << 4) /* Control PDP enable from Blanking state machine */
378#define ENA_PA_CTRL_FROM_SPI (1 << 3) /* Control PDP enable via SPI */
379#define SPI_PA_CTRL (1 << 2) /* PDP on/off via SPI */
380#define ENA_SPI_TXEN (1 << 1) /* TXEN from SPI control */
381#define SPI_TXEN (1 << 0) /* Spi TXEN */
382
383/*
384 * REG_COARSE_GROUP_DLY
385 */
386#define COARSE_GROUP_DLY(x) (((x) & 0xF) << 0) /* Coarse group delay */
387
388/*
389 * REG_IRQ_ENABLE0
390 */
391#define EN_CALPASS (1 << 7) /* Enable Calib PASS detection */
392#define EN_CALFAIL (1 << 6) /* Enable Calib FAIL detection */
393#define EN_DACPLLLOST (1 << 5) /* Enable DAC Pll Lost detection */
394#define EN_DACPLLLOCK (1 << 4) /* Enable DAC Pll Lock detection */
395#define EN_SERPLLLOST (1 << 3) /* Enable Serdes PLL Lost detection */
396#define EN_SERPLLLOCK (1 << 2) /* Enable Serdes PLL Lock detection */
397#define EN_LANEFIFOERR (1 << 1) /* Enable Lane FIFO Error detection */
398#define EN_DRDLFIFOERR (1 << 0) /* Enable DRDL FIFO Error detection */
399
400/*
401 * REG_IRQ_ENABLE1
402 */
403#define EN_PARMBAD (1 << 7) /* enable BAD Parameter interrupt */
404#define EN_PRBSQ1 (1 << 3) /* enable PRBS imag DAC B interrupt */
405#define EN_PRBSI1 (1 << 2) /* enable PRBS real DAC B interrupt */
406#define EN_PRBSQ0 (1 << 1) /* enable PRBS imag DAC A interrupt */
407#define EN_PRBSI0 (1 << 0) /* enable PRBS real DAC A interrupt */
408
409/*
410 * REG_IRQ_ENABLE2
411 */
412#define EN_PAERR0 (1 << 7) /* Link A PA Error */
413#define EN_BIST_DONE0 (1 << 6) /* Link A BIST done */
414#define EN_BLNKDONE0 (1 << 5) /* Link A Blanking done */
415#define EN_REFNCOCLR0 (1 << 4) /* Link A Nco Clear Tripped */
416#define EN_REFLOCK0 (1 << 3) /* Link A Alignment Locked */
417#define EN_REFROTA0 (1 << 2) /* Link A Alignment Rotate */
418#define EN_REFWLIM0 (1 << 1) /* Link A Over/Under Threshold */
419#define EN_REFTRIP0 (1 << 0) /* Link A Alignment Trip */
420
421/*
422 * REG_IRQ_ENABLE3
423 */
424#define EN_PAERR1 (1 << 7) /* Link B PA Error */
425#define EN_BIST_DONE1 (1 << 6) /* Link B BIST done */
426#define EN_BLNKDONE1 (1 << 5) /* Link B Blanking done */
427#define EN_REFNCOCLR1 (1 << 4) /* Link B Nco Clear Tripped */
428#define EN_REFLOCK1 (1 << 3) /* Link B Alignment Locked */
429#define EN_REFROTA1 (1 << 2) /* Link B Alignment Rotate */
430#define EN_REFWLIM1 (1 << 1) /* Link B Over/Under Threshold */
431#define EN_REFTRIP1 (1 << 0) /* Link B Alignment Trip */
432
433/*
434 * REG_IRQ_STATUS0
435 */
436#define IRQ_CALPASS (1 << 7) /* Calib PASS detection */
437#define IRQ_CALFAIL (1 << 6) /* Calib FAIL detection */
438#define IRQ_DACPLLLOST (1 << 5) /* DAC PLL Lost */
439#define IRQ_DACPLLLOCK (1 << 4) /* DAC PLL Lock */
440#define IRQ_SERPLLLOST (1 << 3) /* Serdes PLL Lost */
441#define IRQ_SERPLLLOCK (1 << 2) /* Serdes PLL Lock */
442#define IRQ_LANEFIFOERR (1 << 1) /* Lane Fifo Error */
443#define IRQ_DRDLFIFOERR (1 << 0) /* DRDL Fifo Error */
444
445/*
446 * REG_IRQ_STATUS1
447 */
448#define IRQ_PARMBAD (1 << 7) /* BAD Parameter interrupt */
449#define IRQ_PRBSQ1 (1 << 3) /* PRBS data check error DAC 1 imag */
450#define IRQ_PRBSI1 (1 << 2) /* PRBS data check error DAC 1 real */
451#define IRQ_PRBSQ0 (1 << 1) /* PRBS data check error DAC 0 imag */
452#define IRQ_PRBSI0 (1 << 0) /* PRBS data check error DAC 0 real */
453
454/*
455 * REG_IRQ_STATUS2
456 */
457#define IRQ_PAERR0 (1 << 7) /* Link A PA Error */
458#define IRQ_BIST_DONE0 (1 << 6) /* Link A BIST done */
459#define IRQ_BLNKDONE0 (1 << 5) /* Link A Blanking Done */
460#define IRQ_REFNCOCLR0 (1 << 4) /* Link A Alignment UnderRange */
461#define IRQ_REFLOCK0 (1 << 3) /* Link A BIST done */
462#define IRQ_REFROTA0 (1 << 2) /* Link A Alignment Trip */
463#define IRQ_REFWLIM0 (1 << 1) /* Link A Alignment Lock */
464#define IRQ_REFTRIP0 (1 << 0) /* Link A Alignment Rotate */
465
466/*
467 * REG_IRQ_STATUS3
468 */
469#define IRQ_PAERR1 (1 << 7) /* Link B PA Error */
470#define IRQ_BIST_DONE1 (1 << 6) /* Link B BIST done */
471#define IRQ_BLNKDONE1 (1 << 5) /* Link A Blanking Done */
472#define IRQ_REFNCOCLR1 (1 << 4) /* Link B Alignment UnderRange */
473#define IRQ_REFLOCK1 (1 << 3) /* Link B BIST done */
474#define IRQ_REFROTA1 (1 << 2) /* Link B Alignment Trip */
475#define IRQ_REFWLIM1 (1 << 1) /* Link B Alignment Lock */
476#define IRQ_REFTRIP1 (1 << 0) /* Link B Alignment Rotate */
477
478/*
479 * REG_JESD_CHECKS
480 */
481#define ERR_DLYOVER (1 << 5) /* LMFC_Delay > JESD_K parameter */
482#define ERR_WINLIMIT (1 << 4) /* Unsupported Window Limit */
483#define ERR_JESDBAD (1 << 3) /* Unsupported M/L/S/F selection */
484#define ERR_KUNSUPP (1 << 2) /* Unsupported K values */
485#define ERR_SUBCLASS (1 << 1) /* Unsupported SubClassv value */
486#define ERR_INTSUPP (1 << 0) /* Unsupported Interpolation rate factor */
487
488/*
489 * REG_SYNC_TESTCTRL
490 */
491#define TARRFAPHAZ (1 << 0) /* Target Polarity of Rf Divider */
492#define SYNCBYPASS(x) (((x) & 0x3) << 6) /* Sync Bypass handshaking */
493
494/*
495 * REG_SYNC_DACDELAY_H
496 */
497#define DAC_DELAY_H (1 << 0) /* Dac Delay[8] */
498
499/*
500 * REG_SYNC_ERRWINDOW
501 */
502#define ERRWINDOW(x) (((x) & 0x7) << 0) /* Sync Error Window */
503
504/*
505 * REG_SYNC_LASTERR_H
506 */
507#define LASTUNDER (1 << 7) /* Sync Last Error Under Flag */
508#define LASTOVER (1 << 6) /* Sync Last Error Over Flag */
509#define LASTERROR_H (1 << 0) /* Sync Last Error[8] and Flags */
510
511/*
512 * REG_SYNC_CTRL
513 */
514#define SYNCENABLE (1 << 7) /* SyncLogic Enable */
515#define SYNCARM (1 << 6) /* Sync Arming Strobe */
516#define SYNCCLRSTKY (1 << 5) /* Sync Sticky Bit Clear */
517#define SYNCCLRLAST (1 << 4) /* Sync Clear LAST_ */
518#define SYNCMODE(x) (((x) & 0xF) << 0) /* Sync Mode */
519
520/*
521 * REG_SYNC_STATUS
522 */
523#define REFBUSY (1 << 7) /* Sync Machine Busy */
524#define REFLOCK (1 << 3) /* Sync Alignment Locked */
525#define REFROTA (1 << 2) /* Sync Rotated */
526#define REFWLIM (1 << 1) /* Sync Alignment Limit Range */
527#define REFTRIP (1 << 0) /* Sync Tripped after Arming */
528
529/*
530 * REG_SYNC_CURRERR_H
531 */
532#define CURRUNDER (1 << 7) /* Sync Current Error Under Flag */
533#define CURROVER (1 << 6) /* Sync Current Error Over Flag */
534#define CURRERROR_H (1 << 0) /* SyncCurrent Error[8] */
535
536/*
537 * REG_ERROR_THERM
538 */
539#define THRMOLD (1 << 7) /* Error is from a prior sample */
540#define THRMOVER (1 << 4) /* Error > +WinLimit */
541#define THRMPOS (1 << 3) /* Sync Current Error Under Flag */
542#define THRMZERO (1 << 2) /* Error = 0 */
543#define THRMNEG (1 << 1) /* Error < 0 */
544#define THRMUNDER (1 << 0) /* Error < -WinLimit */
545
546/*
547 * REG_DACGAIN0_1
548 */
549#define DACGAIN_IM0(x) (((x) & 0x3) << 0) /* I Channel DAC gain <9:8> Dual A */
550
551/*
552 * REG_DACGAIN1_1
553 */
554#define DACGAIN_IM1(x) (((x) & 0x3) << 0) /* Q Channel DAC gain <9:8> Dual A */
555
556/*
557 * REG_DACGAIN2_1
558 */
559#define DACGAIN_IM2(x) (((x) & 0x3) << 0) /* I Channel DAC gain <9:8> Dual B */
560
561/*
562 * REG_DACGAIN3_1
563 */
564#define DACGAIN_IM3(x) (((x) & 0x3) << 0) /* Q Channel DAC gain <9:8> Dual B */
565
566/*
567 * REG_PD_DACLDO
568 */
569#define ENB_DACLDO3 (1 << 7) /* Disable DAC3 ldo */
570#define ENB_DACLDO2 (1 << 6) /* Disable DAC2 ldo */
571#define ENB_DACLDO1 (1 << 5) /* Disable DAC1 ldo */
572#define ENB_DACLDO0 (1 << 4) /* Disable DAC0 ldo */
573
574/*
575 * REG_STAT_DACLDO
576 */
577#define STAT_LDO3 (1 << 3) /* DAC3 LDO status */
578#define STAT_LDO2 (1 << 2) /* DAC2 LDO status */
579#define STAT_LDO1 (1 << 1) /* DAC1 LDO status */
580#define STAT_LDO0 (1 << 0) /* DAC0 LDO status */
581
582/*
583 * REG_DECODE_CTRL0
584 */
585#define SHUFFLE_MSB0 (1 << 2) /* MSB shuffling mode */
586#define SHUFFLE_ISB0 (1 << 1) /* ISB shuffling mode */
587
588/*
589 * REG_DECODE_CTRL1
590 */
591#define SHUFFLE_MSB1 (1 << 2) /* MSB shuffling mode */
592#define SHUFFLE_ISB1 (1 << 1) /* ISB shuffling mode */
593
594/*
595 * REG_DECODE_CTRL2
596 */
597#define SHUFFLE_MSB2 (1 << 2) /* MSB shuffling mod */
598#define SHUFFLE_ISB2 (1 << 1) /* ISB shuffling mode */
599
600/*
601 * REG_DECODE_CTRL3
602 */
603#define SHUFFLE_MSB3 (1 << 2) /* MSB shuffling mode */
604#define SHUFFLE_ISB3 (1 << 1) /* ISB shuffling mode */
605
606/*
607 * REG_NCO_CLRMODE
608 */
609#define NCOCLRARM (1 << 7) /* Arm NCO Clear */
610#define NCOCLRMTCH (1 << 5) /* NCO Clear Data Match */
611#define NCOCLRPASS (1 << 4) /* NCO Clear PASSed */
612#define NCOCLRFAIL (1 << 3) /* NCO Clear FAILed */
613#define NCOCLRMODE(x) (((x) & 0x3) << 0) /* NCO Clear Mode */
614
615/*
616 * REG_PA_THRES1
617 */
618#define PA_THRESH_MSB(x) (((x) & 0x1F) << 0) /* Average power threshold for comparison. */
619
620/*
621 * REG_PA_AVG_TIME
622 */
623#define PA_ENABLE (1 << 7) /* 1 = Enable average power calculation and error detection */
624#define PA_BUS_SWAP (1 << 6) /* Swap channelA or channelB databus for power calculation */
625#define PA_AVG_TIME(x) (((x) & 0xF) << 0) /* Set power average time */
626
627/*
628 * REG_PA_POWER1
629 */
630#define PA_POWER_MSB(x) (((x) & 0x1F) << 0) /* average power bus = I^2+Q^2 (I/Q use 6MSB of databus) */
631
632/*
633 * REG_CLKCFG0
634 */
635#define PD_CLK01 (1 << 7) /* Powerdown clock for Dual A */
636#define PD_CLK23 (1 << 6) /* Powerdown clock for Dual B */
637#define PD_CLK_DIG (1 << 5) /* Powerdown clocks to all DACs */
638#define PD_PCLK (1 << 4) /* Cal reference/Serdes PLL clock powerdown */
639#define PD_CLK_REC (1 << 3) /* Clock reciever powerdown */
640
641/*
642 * REG_SYSREF_ACTRL0
643 */
644#define PD_SYSREF (1 << 4) /* Powerdown SYSREF buffer */
645#define HYS_ON (1 << 3) /* Hysteresis enabled */
646#define SYSREF_RISE (1 << 2) /* Use SYSREF rising edge */
647#define HYS_CNTRL1(x) (((x) & 0x3) << 0) /* Hysteresis control bits <9:8> */
648
649/*
650 * REG_DACPLLCNTRL
651 */
652#define SYNTH_RECAL (1 << 7) /* Recalibrate VCO Band */
653#define ENABLE_SYNTH (1 << 4) /* Synthesizer Enable */
654
655/*
656 * REG_DACPLLSTATUS
657 */
658#define CP_CAL_VALID (1 << 5) /* Charge Pump Cal Valid */
659#define RFPLL_LOCK (1 << 1) /* PLL Lock bit */
660
661/*
662 * REG_DACLOOPFILT1
663 */
664#define LF_C2_WORD(x) (((x) & 0xF) << 4) /* C2 control word */
665#define LF_C1_WORD(x) (((x) & 0xF) << 0) /* C1 control word */
666
667/*
668 * REG_DACLOOPFILT2
669 */
670#define LF_R1_WORD(x) (((x) & 0xF) << 4) /* R1 control word */
671#define LF_C3_WORD(x) (((x) & 0xF) << 0) /* C3 control word */
672
673/*
674 * REG_DACLOOPFILT3
675 */
676#define LF_BYPASS_R3 (1 << 7) /* Bypass R3 res */
677#define LF_BYPASS_R1 (1 << 6) /* Bypass R1 res */
678#define LF_BYPASS_C2 (1 << 5) /* Bypass C2 cap */
679#define LF_BYPASS_C1 (1 << 4) /* Bypass C1 cap */
680#define LF_R3_WORD(x) (((x) & 0xF) << 0) /* R3 Control Word */
681
682/*
683 * REG_DACCPCNTRL
684 */
685#define CP_CURRENT(x) (((x) & 0x3F) << 0) /* Charge Pump Current Control */
686
687/*
688 * REG_DACLOGENCNTRL
689 */
690#define LO_DIV_MODE(x) (((x) & 0x3) << 0) /* Logen_Division */
691
692/*
693 * REG_DACLDOCNTRL1
694 */
695#define REF_DIVRATE(x) (((x) & 0x7) << 0) /* Reference Clock Division Ratio */
696
697/*
698 * REG_CAL_DAC_ERR
699 */
700#define INIT_SWEEP_ERR_DAC (1 << 1) /* Initial setup sweep failed */
701#define MSB_SWEEP_ERR_DAC (1 << 0) /* MSB sweep failed */
702
703/*
704 * REG_CAL_MSB_THRES
705 */
706#define CAL_MSB_TAC(x) (((x) & 0x7) << 0) /* MSB sweep TAC */
707
708/*
709 * REG_CAL_CTRL_GLOBAL
710 */
711#define CAL_START_GL (1 << 1) /* Global Calibration start */
712#define CAL_EN_GL (1 << 0) /* Global Calibration enable */
713
714/*
715 * REG_CAL_MSBHILVL
716 */
717#define CAL_MSBLVLHI(x) (((x) & 0x3F) << 0) /* High level limit for msb sweep average */
718
719/*
720 * REG_CAL_MSBLOLVL
721 */
722#define CAL_MSBLVLLO(x) (((x) & 0x3F) << 0) /* Low level limit for msb sweep average */
723
724/*
725 * REG_CAL_THRESH
726 */
727#define CAL_LTAC_THRES(x) (((x) & 0x7) << 3) /* Long TAC threshold */
728#define CAL_TAC_THRES(x) (((x) & 0x7) << 0) /* TAC threshold */
729
730/*
731 * REG_CAL_AVG_CNT
732 */
733#define MSB_GLOBAL_SUBAVG(x) (((x) & 0x3) << 6) /* Local Averages for MSB in Global Calibration */
734#define GLOBAL_AVG_CNT(x) (((x) & 0x7) << 3) /* Global avg Terminal count */
735#define LOCAL_AVRG_CNT(x) (((x) & 0x7) << 0) /* Local avg terminal count */
736
737/*
738 * REG_CAL_CLKDIV
739 */
740#define CAL_CLKDIV(x) (((x) & 0xF) << 0) /* Calibration clock divider */
741
742/*
743 * REG_CAL_INDX
744 */
745#define CAL_INDX(x) (((x) & 0xF) << 0) /* DAC Calibration Index paging bits */
746
747/*
748 * REG_CAL_CTRL
749 */
750#define CAL_FIN (1 << 7) /* Calibration finished */
751#define CAL_ACTIVE (1 << 6) /* Calibration active */
752#define CAL_ERRHI (1 << 5) /* SAR data error: too hi */
753#define CAL_ERRLO (1 << 4) /* SAR data error: too lo */
754#define CAL_TXDACBYDAC (1 << 3) /* Calibration of TXDAC by TXDAC */
755#define CAL_START (1 << 1) /* Calibration start */
756#define CAL_EN (1 << 0) /* Calibration enable */
757
758/*
759 * REG_CAL_ADDR
760 */
761#define CAL_ADDR(x) (((x) & 0x3F) << 0) /* Calibration DAC address */
762
763/*
764 * REG_CAL_DATA
765 */
766#define CAL_DATA(x) (((x) & 0x3F) << 0) /* Calibration DAC Coefficient Data */
767
768/*
769 * REG_CAL_UPDATE
770 */
771#define CAL_UPDATE (1 << 7) /* Calibration DAC Coefficient Update */
772
773/*
774 * REG_DATA_FORMAT
775 */
776#define BINARY_FORMAT (1 << 7) /* Binary or 2's complementary format on DATA bus */
777
778/*
779 * REG_DATAPATH_CTRL
780 */
781#define INVSINC_ENABLE (1 << 7) /* 1 = Enable inver sinc filter */
782#define DIG_GAIN_ENABLE (1 << 5) /* 1 = Enable digital gain */
783#define PHASE_ADJ_ENABLE (1 << 4) /* 1 = Enable phase compensation */
784#define SEL_SIDEBAND (1 << 1) /* 1 = Select upper or lower sideband from modulation result */
785#define I_TO_Q (1 << 0) /* 1 = send I datapath into Q DAC */
786#define MODULATION_TYPE(x) (((x) & 0x3) << 2) /* selects type of modulation operation */
787#define MODULATION_TYPE_MASK (0x03 << 2)
788
789/*
790 * REG_INTERP_MODE
791 */
792#define INTERP_MODE(x) (((x) & 0x7) << 0) /* Interpolation Mode */
793
794/*
795 * REG_NCO_FTW_UPDATE
796 */
797#define FTW_UPDATE_ACK (1 << 1) /* Frequency Tuning Word Update Acknowledge */
798#define FTW_UPDATE_REQ (1 << 0) /* Frequency Tuning Word Update Request from SPI */
799
800/*
801 * REG_TXEN_FUNC
802 */
803#define TX_DIG_CLK_PD (1 << 0) /* 1 = Digital clocks will be shut down when Tx_enable pin is low. */
804
805/*
806 * REG_TXEN_SM_0
807 */
808#define GP_PA_ON_INVERT (1 << 2) /* External Modulator polarity invert */
809#define GP_PA_CTRL (1 << 1) /* External PA control */
810#define TXEN_SM_EN (1 << 0) /* Enable TXEN state machine */
811#define PA_FALL(x) (((x) & 0x3) << 6) /* PA fall control */
812#define PA_RISE(x) (((x) & 0x3) << 4) /* PA rises control */
813
814/*
815 * REG_TXEN_SM_1
816 */
817#define DIG_FALL(x) (((x) & 0x3) << 6) /* DIG_FALL */
818#define DIG_RISE(x) (((x) & 0x3) << 4) /* DIG_RISE */
819#define DAC_FALL(x) (((x) & 0x3) << 2) /* DAC_FALL */
820#define DAC_RISE(x) (((x) & 0x3) << 0) /* DAC_RISE */
821
822/*
823 * REG_DACOUT_ON_DOWN
824 */
825#define DACOUT_SHUTDOWN (1 << 1) /* Shut down DAC output. 1 means DAC get shut down manually. */
826#define DACOUT_ON_TRIGGER (1 << 0) /* Turn on DAC output manually. Self clear signal. */
827
828/*
829 * REG_DACOFF
830 */
831#define PROTECT_MODE (1 << 7) /* PROTECT_MODE */
832#define DACOFF_AVG_PW (1 << 0) /* DACOFF_AVG_PW */
833
834/*
835 * REG_DIE_TEMP_CTRL0
836 */
837#define ADC_TESTMODE (1 << 7) /* ADC_TESTMODE */
838#define AUXADC_ENABLE (1 << 0) /* AUXADC_ENABLE */
839#define FS_CURRENT(x) (((x) & 0x7) << 4) /* FS_CURRENT */
840#define REF_CURRENT(x) (((x) & 0x7) << 1) /* REF_CURRENT */
841
842/*
843 * REG_DIE_TEMP_CTRL1
844 */
845#define SELECT_CLKDIG (1 << 3) /* SELECT_CLKDIG */
846#define EN_DIV2 (1 << 2) /* EN_DIV2 */
847#define INCAP_CTRL(x) (((x) & 0x3) << 0) /* INCAP_CTRL */
848
849/*
850 * REG_DIE_TEMP_UPDATE
851 */
852#define DIE_TEMP_UPDATE (1 << 0) /* Die temperature update */
853
854/*
855 * REG_DC_OFFSET_CTRL
856 */
857#define DISABLE_NOISE (1 << 1) /* DISABLE_NOISE */
858#define DC_OFFSET_ON (1 << 0) /* DC_OFFSET_ON */
859
860/*
861 * REG_IPATH_DC_OFFSET_2PART
862 */
863#define IPATH_DC_OFFSET_2PART(x) (((x) & 0x1F) << 0) /* second part of DC Offset value for I path */
864
865/*
866 * REG_QPATH_DC_OFFSET_2PART
867 */
868#define QPATH_DC_OFFSET_2PART(x) (((x) & 0x1F) << 0) /* second part of DC Offset value for Q path */
869
870/*
871 * REG_IDAC_DIG_GAIN1
872 */
873#define IDAC_DIG_GAIN1(x) (((x) & 0xF) << 0) /* MSB of I DAC digital gain */
874
875/*
876 * REG_QDAC_DIG_GAIN1
877 */
878#define QDAC_DIG_GAIN1(x) (((x) & 0xF) << 0) /* MSB of Q DAC digital gain */
879
880/*
881 * REG_GAIN_RAMP_UP_STP1
882 */
883#define GAIN_RAMP_UP_STP1(x) (((x) & 0xF) << 0) /* MSB of digital gain rises */
884
885/*
886 * REG_GAIN_RAMP_DOWN_STP1
887 */
888#define GAIN_RAMP_DOWN_STP1(x) (((x) & 0xF) << 0) /* MSB of digital gain drops */
889
890/*
891 * REG_BLSM_CTRL
892 */
893#define RESET_BLSM (1 << 7) /* Soft rest to the new Blanking SM */
894#define EN_FORCE_GAIN_SOFT_OFF (1 << 4) /* Enable forcing gan_soft_off from SPI */
895#define GAIN_SOFT_OFF (1 << 3) /* gain_soft_off forced value */
896#define GAIN_SOFT_ON (1 << 2) /* gain_soft_on forced value */
897#define EN_FORCE_GAIN_SOFT_ON (1 << 1) /* Force the gain_soft_on from SPI */
898
899/*
900 * REG_BLSM_STAT
901 */
902#define SOFT_OFF_DONE (1 << 5) /* Blanking SoftOff Enable */
903#define SOFT_ON_DONE (1 << 4) /* Blanking SoftOn Done */
904#define GAIN_SOFT_OFF_RB (1 << 3) /* gain soft off readback */
905#define GAIN_SOFT_ON_RB (1 << 2) /* gain soft on readback */
906#define SOFT_OFF_EN_RB (1 << 1) /* Blanking SM soft Off read back */
907#define SOFT_ON_EN_RB (1 << 0) /* Blanking SM soft On read back */
908#define SOFTBLANKRB(x) (((x) & 0x3) << 6) /* Blanking State */
909
910/*
911 * REG_PRBS
912 */
913#define PRBS_GOOD_Q (1 << 7) /* Good data indicator imaginary channel */
914#define PRBS_GOOD_I (1 << 6) /* Good data indicator real channel */
915#define PRBS_INV_Q (1 << 4) /* Data Inversion imaginary channel */
916#define PRBS_INV_I (1 << 3) /* Data Inversion real channel */
917#define PRBS_MODE (1 << 2) /* Polynomial Select */
918#define PRBS_RESET (1 << 1) /* Reset Error Counters */
919#define PRBS_EN (1 << 0) /* Enable PRBS Checker */
920
921/*
922 * REG_DACPLLT5
923 */
924#define VCO_VAR(x) (((x) & 0xF) << 0) /* Varactor KVO setting */
925
926/*
927 * REG_DACPLLTB
928 */
929#define VCO_BIAS_REF(x) (((x) & 0x7) << 0) /* VCO Bias control */
930
931/*
932 * REG_DACPLLTD
933 */
934#define VCO_CAL_REF_MON (1 << 3) /* Sent control voltage to outside world */
935#define VCO_CAL_REF_TCF(x) (((x) & 0x7) << 0) /* TempCo for cal ref */
936
937/*
938 * REG_DACPLLT17
939 */
940#define VCO_VAR_REF_TCF(x) (((x) & 0x7) << 4) /* Varactor Reference TempCo */
941#define VCO_VAR_OFF(x) (((x) & 0xF) << 0) /* Varactor Offset */
942
943/*
944 * REG_SPISTRENGTH
945 */
946#define SPIDRV(x) (((x) & 0xF) << 0) /* Slew and drive strength for cmos interface */
947
948/*
949 * REG_CLK_TEST
950 */
951#define DUTYCYCLEON (1 << 0) /* Clock Duty Cycle Control On */
952
953/*
954 * REG_ATEST_VOLTS
955 */
956#define ATEST_EN (1 << 0) /* Enable Analog Test Mode */
957#define ATEST_TOPVSEL(x) (((x) & 0x3) << 5) /* Which source at analog top to use */
958#define ATEST_DACSEL(x) (((x) & 0x3) << 3) /* DAC from which to get voltage */
959#define ATEST_VSEL(x) (((x) & 0x3) << 1) /* DAC Voltage to Select */
960
961/*
962 * REG_ASPI_CLKSRC
963 */
964#define EN_CLKDIV (1 << 3) /* Enable the fdac/8 clock path to generate PD timing clock */
965#define ASPI_OSC_RATE (1 << 2) /* Aspi Oscillator Rate */
966#define ASPI_CLK_SRC (1 << 1) /* Choose Aspi Clock Source */
967#define EN_ASPI_OSC (1 << 0) /* Enable Aspi Oscillator clock */
968
969/*
970 * REG_MASTER_PD
971 */
972#define SPI_PD_MASTER (1 << 0)
973
974/*
975 * REG_GENERIC_PD
976 */
977#define SPI_SYNC1_PD (1 << 1)
978#define SPI_SYNC2_PD (1 << 0)
979
980/*
981 * REG_CDR_OPERATING_MODE_REG_0
982 */
983#define SPI_ENHALFRATE (1 << 5)
984#define SPI_DIVISION_RATE(x) (((x) & 0x3) << 1)
985
986/*
987 * REG_EQ_CONFIG_PHY_0_1
988 */
989#define SPI_EQ_CONFIG1(x) (((x) & 0xF) << 4)
990#define SPI_EQ_CONFIG0(x) (((x) & 0xF) << 0)
991
992/*
993 * REG_EQ_CONFIG_PHY_2_3
994 */
995#define SPI_EQ_CONFIG3(x) (((x) & 0xF) << 4)
996#define SPI_EQ_CONFIG2(x) (((x) & 0xF) << 0)
997
998/*
999 * REG_EQ_CONFIG_PHY_4_5
1000 */
1001#define SPI_EQ_CONFIG5(x) (((x) & 0xF) << 4)
1002#define SPI_EQ_CONFIG4(x) (((x) & 0xF) << 0)
1003
1004/*
1005 * REG_EQ_CONFIG_PHY_6_7
1006 */
1007#define SPI_EQ_CONFIG7(x) (((x) & 0xF) << 4)
1008#define SPI_EQ_CONFIG6(x) (((x) & 0xF) << 0)
1009
1010/*
1011 * REG_EQ_BIAS_REG
1012 */
1013#define SPI_EQ_EXTRA_SPI_LSBITS(x) (((x) & 0x3) << 6)
1014#define SPI_EQ_BIASPTAT(x) (((x) & 0x7) << 3)
1015#define SPI_EQ_BIASPLY(x) (((x) & 0x7) << 0)
1016
1017/*
1018 * REG_SYNTH_ENABLE_CNTRL
1019 */
1020#define SPI_RECAL_SYNTH (1 << 2)
1021#define SPI_ENABLE_SYNTH (1 << 0)
1022
1023/*
1024 * REG_PLL_STATUS
1025 */
1026#define SPI_CP_CAL_VALID_RB (1 << 3)
1027#define SPI_PLL_LOCK_RB (1 << 0)
1028
1029/*
1030 * REG_REF_CLK_DIVIDER_LDO
1031 */
1032#define SPI_CDR_OVERSAMP(x) (((x) & 0x3) << 0)
1033
1034/*
1035 * REG_TERM_BLK1_CTRLREG0
1036 */
1037#define SPI_I_TUNE_R_CAL_TERMBLK1 (1 << 0)
1038
1039/*
1040 * REG_TERM_BLK2_CTRLREG0
1041 */
1042#define SPI_I_TUNE_R_CAL_TERMBLK2 (1 << 0)
1043
1044/*
1045 * REG_GENERAL_JRX_CTRL_0
1046 */
1047#define CHECKSUM_MODE (1 << 6) /* Checksum mode */
1048#define LINK_MODE (1 << 3) /* Link mode */
1049#define SEL_REG_MAP_1 (1 << 2) /* Link register map selection */
1050#define LINK_EN(x) (((x) & 0x3) << 0) /* Link enable */
1051
1052/*
1053 * REG_GENERAL_JRX_CTRL_1
1054 */
1055#define SUBCLASSV_LOCAL(x) (((x) & 0x7) << 0) /* JESD204B subclass */
1056
1057/*
1058 * REG_DYN_LINK_LATENCY_0
1059 */
1060#define DYN_LINK_LATENCY_0(x) (((x) & 0x1F) << 0) /* Dynamic link latency: Link 0 */
1061
1062/*
1063 * REG_DYN_LINK_LATENCY_1
1064 */
1065#define DYN_LINK_LATENCY_1(x) (((x) & 0x1F) << 0) /* Dynamic link latency: Link 1 */
1066
1067/*
1068 * REG_LMFC_DELAY_0
1069 */
1070#define LMFC_DELAY_0(x) (((x) & 0x1F) << 0) /* LMFC delay: Link 0 */
1071
1072/*
1073 * REG_LMFC_DELAY_1
1074 */
1075#define LMFC_DELAY_1(x) (((x) & 0x1F) << 0) /* LMFC delay: Link 1 */
1076
1077/*
1078 * REG_LMFC_VAR_0
1079 */
1080#define LMFC_VAR_0(x) (((x) & 0x1F) << 0) /* Location in RX LMFC where JESD words are read out from buffer */
1081
1082/*
1083 * REG_LMFC_VAR_1
1084 */
1085#define LMFC_VAR_1(x) (((x) & 0x1F) << 0) /* Location in RX LMFC where JESD words are read out from buffer */
1086
1087/*
1088 * REG_XBAR_LN_0_1
1089 */
1090#define SRC_LANE1(x) (((x) & 0x7) << 3) /* Logic Lane 1 source */
1091#define SRC_LANE0(x) (((x) & 0x7) << 0) /* Logic Lane 0 source */
1092
1093/*
1094 * REG_XBAR_LN_2_3
1095 */
1096#define SRC_LANE3(x) (((x) & 0x7) << 3) /* Logic Lane 3 source */
1097#define SRC_LANE2(x) (((x) & 0x7) << 0) /* Logic Lane 2 source */
1098
1099/*
1100 * REG_XBAR_LN_4_5
1101 */
1102#define SRC_LANE5(x) (((x) & 0x7) << 3) /* Logic Lane 5 source */
1103#define SRC_LANE4(x) (((x) & 0x7) << 0) /* Logic Lane 4 source */
1104
1105/*
1106 * REG_XBAR_LN_6_7
1107 */
1108#define SRC_LANE7(x) (((x) & 0x7) << 3) /* Logic Lane 7 source */
1109#define SRC_LANE6(x) (((x) & 0x7) << 0) /* Logic Lane 6 source */
1110
1111/*
1112 * REG_FIFO_STATUS_REG_2
1113 */
1114#define DRDL_FIFO_EMPTY (1 << 1) /* Deterministic latency (DRDL) FIFO is between JESD204B receiver and DAC2 and DAC3 */
1115#define DRDL_FIFO_FULL (1 << 0) /* DRDL FIFO is between JESD204B receiver and DAC2 and DAC3 */
1116
1117/*
1118 * REG_SYNCB_GEN_0
1119 */
1120#define EOMF_MASK_1 (1 << 3) /* EOMF_MASK_1 */
1121#define EOMF_MASK_0 (1 << 2) /* EOMF_MASK_0 */
1122#define EOF_MASK_1 (1 << 1) /* Mask EOF from QBD_1 */
1123#define EOF_MASK_0 (1 << 0) /* Mask EOF from QBD_0 */
1124
1125/*
1126 * REG_SYNCB_GEN_1
1127 */
1128#define SYNCB_ERR_DUR(x) (((x) & 0xF) << 4) /* Duration of SYNCOUT low for the purpose of error reporting */
1129#define SYNCB_SYNCREQ_DUR(x) (((x) & 0xF) << 0) /* Duration of SYNCOUT low for purpose of synchronization request */
1130
1131/*
1132 * REG_PHY_PRBS_TEST_CTRL
1133 */
1134#define PHY_TEST_START (1 << 1) /* PHY PRBS test start */
1135#define PHY_TEST_RESET (1 << 0) /* PHY PRBS test reset */
1136#define PHY_SRC_ERR_CNT(x) (((x) & 0x7) << 4) /* PHY error count source */
1137#define PHY_PRBS_PAT_SEL(x) (((x) & 0x3) << 2) /* PHY PRBS pattern select */
1138
1139/*
1140 * REG_SHORT_TPL_TEST_0
1141 */
1142#define SHORT_TPL_TEST_RESET (1 << 1) /* Short transport layer test reset */
1143#define SHORT_TPL_TEST_EN (1 << 0) /* Short transport layer test enable */
1144#define SHORT_TPL_SP_SEL(x) (((x) & 0x3) << 4) /* Short transport layer sample select */
1145#define SHORT_TPL_M_SEL(x) (((x) & 0x3) << 2) /* Short transport layer test DAC select */
1146
1147/*
1148 * REG_SHORT_TPL_TEST_3
1149 */
1150#define SHORT_TPL_FAIL (1 << 0) /* Short transport layer test fail */
1151
1152/*
1153 * REG_BID_REG
1154 */
1155#define ADJCNT_RD(x) (((x) & 0xF) << 4)
1156#define BID_RD(x) (((x) & 0xF) << 0)
1157
1158/*
1159 * REG_LID0_REG
1160 */
1161#define ADJDIR_RD (1 << 6)
1162#define PHADJ_RD (1 << 5)
1163#define LID0_RD(x) (((x) & 0x1F) << 0)
1164
1165/*
1166 * REG_SCR_L_REG
1167 */
1168#define SCR_RD (1 << 7)
1169#define L_RD(x) (((x) & 0x1F) << 0)
1170
1171/*
1172 * REG_K_REG
1173 */
1174#define K_RD(x) (((x) & 0x1F) << 0)
1175
1176/*
1177 * REG_CS_N_REG
1178 */
1179#define CS_RD(x) (((x) & 0x3) << 6)
1180#define N_RD(x) (((x) & 0x1F) << 0)
1181
1182/*
1183 * REG_NP_REG
1184 */
1185#define SUBCLASSV_RD(x) (((x) & 0x7) << 5)
1186#define NP_RD(x) (((x) & 0x1F) << 0)
1187
1188/*
1189 * REG_S_REG
1190 */
1191#define JESDV_RD(x) (((x) & 0x7) << 5)
1192#define S_RD(x) (((x) & 0x1F) << 0)
1193
1194/*
1195 * REG_HD_CF_REG
1196 */
1197#define HD_RD (1 << 7)
1198#define CF_RD(x) (((x) & 0x1F) << 0)
1199
1200/*
1201 * REG_LID1_REG
1202 */
1203#define LID1_RD(x) (((x) & 0x1F) << 0)
1204
1205/*
1206 * REG_LID2_REG
1207 */
1208#define LID2_RD(x) (((x) & 0x1F) << 0)
1209
1210/*
1211 * REG_LID3_REG
1212 */
1213#define LID3_RD(x) (((x) & 0x1F) << 0)
1214
1215/*
1216 * REG_LID4_REG
1217 */
1218#define LID4_RD(x) (((x) & 0x1F) << 0)
1219
1220/*
1221 * REG_LID5_REG
1222 */
1223#define LID5_RD(x) (((x) & 0x1F) << 0)
1224
1225/*
1226 * REG_LID6_REG
1227 */
1228#define LID6_RD(x) (((x) & 0x1F) << 0)
1229
1230/*
1231 * REG_LID7_REG
1232 */
1233#define LID7_RD(x) (((x) & 0x1F) << 0)
1234
1235/*
1236 * REG_ILS_BID
1237 */
1238#define ADJCNT(x) (((x) & 0xF) << 4)
1239#define BID(x) (((x) & 0xF) << 0)
1240
1241/*
1242 * REG_ILS_LID0
1243 */
1244#define ADJDIR (1 << 6)
1245#define PHADJ (1 << 5)
1246#define LID0(x) (((x) & 0x1F) << 0)
1247
1248/*
1249 * REG_ILS_SCR_L
1250 */
1251#define SCR (1 << 7)
1252#define L(x) (((x) & 0x1F) << 0)
1253
1254/*
1255 * REG_ILS_K
1256 */
1257#define K(x) (((x) & 0x1F) << 0)
1258
1259/*
1260 * REG_ILS_CS_N
1261 */
1262#define CS(x) (((x) & 0x3) << 6)
1263#define N(x) (((x) & 0x1F) << 0)
1264
1265/*
1266 * REG_ILS_NP
1267 */
1268#define SUBCLASSV(x) (((x) & 0x7) << 5)
1269#define NP(x) (((x) & 0x1F) << 0)
1270
1271/*
1272 * REG_ILS_S
1273 */
1274#define JESDV(x) (((x) & 0x7) << 5)
1275#define S(x) (((x) & 0x1F) << 0)
1276
1277/*
1278 * REG_ILS_HD_CF
1279 */
1280#define HD (1 << 7)
1281#define CF(x) (((x) & 0x1F) << 0)
1282
1283/*
1284 * REG_ERRCNTRMON
1285 */
1286#define LANESEL(x) (((x) & 0x7) << 4)
1287#define CNTRSEL(x) (((x) & 0x3) << 0)
1288
1289/*
1290 * REG_BADDISPARITY
1291 */
1292#define RST_IRQ_DIS (1 << 7)
1293#define DIS_ERR_CNTR_DIS (1 << 6)
1294#define RST_ERR_CNTR_DIS (1 << 5)
1295#define LANE_ADDR_DIS(x) (((x) & 0x7) << 0)
1296
1297/*
1298 * REG_NITDISPARITY
1299 */
1300#define RST_IRQ_NIT (1 << 7)
1301#define DIS_ERR_CNTR_NIT (1 << 6)
1302#define RST_ERR_CNTR_NIT (1 << 5)
1303#define LANE_ADDR_NIT(x) (((x) & 0x7) << 0)
1304
1305/*
1306 * REG_UNEXPECTEDKCHAR
1307 */
1308#define RST_IRQ_K (1 << 7)
1309#define DIS_ERR_CNTR_K (1 << 6)
1310#define RST_ERR_CNTR_K (1 << 5)
1311#define LANE_ADDR_K(x) (((x) & 0x7) << 0)
1312
1313/*
1314 * REG_CTRLREG2
1315 */
1316#define ILAS_MODE (1 << 7)
1317#define REPDATATEST (1 << 5)
1318#define QUETESTERR (1 << 4)
1319#define AUTO_ECNTR_RST (1 << 3)
1320
1321/*
1322 * REG_IRQVECTOR
1323 */
1324#define BADDIS_FLAG_OR_MASK (1 << 7)
1325#define NITD_FLAG_OR_MASK (1 << 6)
1326#define UEKC_FLAG_OR_MASK (1 << 5)
1327#define INITIALLANESYNC_FLAG_OR_MASK (1 << 3)
1328#define BADCHECKSUM_FLAG_OR_MASK (1 << 2)
1329#define CODEGRPSYNC_FLAG_OR_MASK (1 << 0)
1330
1331/*
1332 * REG_SYNCASSERTIONMASK
1333 */
1334#define BAD_DIS_S (1 << 7)
1335#define NIT_DIS_S (1 << 6)
1336#define UNEX_K_S (1 << 5)
1337#define CMM_FLAG_OR_MASK (1 << 4)
1338#define CMM_ENABLE (1 << 3)
1339
1340
1341#define AD9144_MAX_DAC_RATE 2000000000UL
1342#define AD9144_CHIP_ID 0x44
1343#define AD9144_PRBS7 0x0
1344#define AD9144_PRBS15 0x1
1345
1347 /* SPI */
1349
1350 struct jesd204_dev *jdev;
1352
1355 uint8_t num_lanes;
1356
1357 unsigned int interpolation;
1358 unsigned int fcenter_shift;
1359
1360 uint8_t lane_mux[8];
1361
1362 /* Whether to enable the internal DAC PLL (0=disable, 1=enable) */
1363 uint8_t pll_enable;
1364 /* When using the DAC PLL this specifies the external reference clock frequency in kHz. */
1366 /* When using the DAC PLL this specifies the target PLL output frequency in kHz. */
1368};
1369
1371 /* SPI */
1373 /* Device Settings */
1374 uint8_t spi3wire; // set device spi intereface 3/4 wires
1376 uint8_t num_lanes;
1377 uint8_t interpolation; // interpolation factor
1378 unsigned int fcenter_shift;
1379 uint32_t stpl_samples[4][4];
1381 uint32_t prbs_type;
1382
1386 uint8_t lane_mux[8];
1387
1388 /* Whether to enable the internal DAC PLL (0=disable, 1=enable) */
1389 uint8_t pll_enable;
1390 /* When using the DAC PLL this specifies the external reference clock frequency in kHz. */
1392 /* When using the DAC PLL this specifies the target PLL output frequency in kHz. */
1394};
1395
1396int32_t ad9144_setup_legacy(struct ad9144_dev **device,
1397 const struct ad9144_init_param *init_param);
1398
1399/* Initialize ad9144_dev, JESD FSM ON*/
1400int32_t ad9144_setup_jesd_fsm(struct ad9144_dev **device,
1401 const struct ad9144_init_param *init_param);
1402
1403int32_t ad9144_remove(struct ad9144_dev *dev);
1404
1405int32_t ad9144_spi_read(struct ad9144_dev *dev,
1406 uint16_t reg_addr,
1407 uint8_t *reg_data);
1408
1409int32_t ad9144_spi_write(struct ad9144_dev *dev,
1410 uint16_t reg_addr,
1411 uint8_t reg_data);
1412
1413int32_t ad9144_spi_check_status(struct ad9144_dev *dev,
1414 uint16_t reg_addr,
1415 uint8_t reg_mask,
1416 uint8_t exp_reg_data);
1417
1418int32_t ad9144_status(struct ad9144_dev *dev);
1419
1420int32_t ad9144_short_pattern_test(struct ad9144_dev *dev,
1421 const struct ad9144_init_param *init_param);
1422
1423int32_t ad9144_datapath_prbs_test(struct ad9144_dev *dev,
1424 const struct ad9144_init_param *init_param);
1425
1426int32_t ad9144_dac_calibrate(struct ad9144_dev *dev);
1427
1428int32_t ad9144_set_nco(struct ad9144_dev *dev, int32_t f_carrier_khz,
1429 int16_t phase);
1430
1431#endif
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t ad9144_remove(struct ad9144_dev *dev)
Definition ad9144.c:1226
int32_t ad9144_spi_read(struct ad9144_dev *dev, uint16_t reg_addr, uint8_t *reg_data)
ad9144_spi_read
Definition ad9144.c:78
int32_t ad9144_dac_calibrate(struct ad9144_dev *dev)
Definition ad9144.c:1188
int32_t ad9144_set_nco(struct ad9144_dev *dev, int32_t f_carrier_khz, int16_t phase)
Definition ad9144.c:372
int32_t ad9144_setup_legacy(struct ad9144_dev **device, const struct ad9144_init_param *init_param)
Definition ad9144.c:967
int32_t ad9144_short_pattern_test(struct ad9144_dev *dev, const struct ad9144_init_param *init_param)
ad9144_short_pattern_test
Definition ad9144.c:1279
int32_t ad9144_status(struct ad9144_dev *dev)
ad9144_status - return the status of the JESD interface
Definition ad9144.c:1240
int32_t ad9144_setup_jesd_fsm(struct ad9144_dev **device, const struct ad9144_init_param *init_param)
Definition ad9144.c:1124
int32_t ad9144_datapath_prbs_test(struct ad9144_dev *dev, const struct ad9144_init_param *init_param)
ad9144_datapath_prbs_test
Definition ad9144.c:1317
int32_t ad9144_spi_write(struct ad9144_dev *dev, uint16_t reg_addr, uint8_t reg_data)
ad9144_spi_write
Definition ad9144.c:101
int32_t ad9144_spi_check_status(struct ad9144_dev *dev, uint16_t reg_addr, uint8_t reg_mask, uint8_t exp_reg_data)
ad9144_spi_check_status
Definition ad9144.c:123
Header file of Delay functions.
Header file of SPI Interface.
Header file of utility functions.
Definition ad9144.h:1346
uint32_t pll_dac_frequency_khz
Definition ad9144.h:1367
uint8_t pll_enable
Definition ad9144.h:1363
uint8_t num_lanes
Definition ad9144.h:1355
unsigned int fcenter_shift
Definition ad9144.h:1358
unsigned int interpolation
Definition ad9144.h:1357
uint32_t pll_ref_frequency_khz
Definition ad9144.h:1365
uint8_t lane_mux[8]
Definition ad9144.h:1360
struct jesd204_dev * jdev
Definition ad9144.h:1350
uint8_t num_converters
Definition ad9144.h:1354
uint32_t sample_rate_khz
Definition ad9144.h:1353
struct no_os_spi_desc * spi_desc
Definition ad9144.h:1348
struct jesd204_link link_config
Definition ad9144.h:1351
Definition ad9144.h:1370
uint8_t jesd204_mode
Definition ad9144.h:1383
unsigned int fcenter_shift
Definition ad9144.h:1378
uint32_t lane_rate_kbps
Definition ad9144.h:1380
uint8_t jesd204_subclass
Definition ad9144.h:1384
uint8_t lane_mux[8]
Definition ad9144.h:1386
uint32_t pll_dac_frequency_khz
Definition ad9144.h:1393
uint32_t stpl_samples[4][4]
Definition ad9144.h:1379
uint8_t spi3wire
Definition ad9144.h:1374
uint32_t pll_ref_frequency_khz
Definition ad9144.h:1391
uint8_t num_lanes
Definition ad9144.h:1376
uint8_t interpolation
Definition ad9144.h:1377
struct no_os_spi_init_param spi_init
Definition ad9144.h:1372
uint8_t jesd204_scrambling
Definition ad9144.h:1385
uint8_t num_converters
Definition ad9144.h:1375
uint8_t pll_enable
Definition ad9144.h:1389
uint32_t prbs_type
Definition ad9144.h:1381
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