13#ifndef __AD9208_REGISTERS_H__
14#define __AD9208_REGISTERS_H__
22 const uint16_t address, uint8_t *data,
29#define AD9208_JESD_NOF_LANES 8
30#define AD9208_JESD_NOF_LINKS 2
31#define AD9208_JESD_NOF_SYNCOUTB 2
32#define AD9208_ADC_NOF_CH 2
33#define AD9208_ADC_CH_INDEX(x) (NO_OS_BIT(x)>>1)
35#define AD9208_IF_CFG_A_REG 0x000
36#define AD9208_IF_CFG_B_REG 0x001
37#define AD9208_DEV_CFG_REG 0x002
38#define AD9208_PDN_MODE(x) (((x)&0x3)<<0)
40#define AD9208_CHIP_TYPE_REG 0x003
41#define AD9208_PROD_ID_LSB_REG 0x004
42#define AD9208_PROD_ID_MSB_REG 0x005
43#define AD9208_CHIP_GRADE_REG 0x006
44#define AD9208_CH_INDEX_REG 0x008
45#define AD9208_CH_INDEX_SEL(x) (((x)&0x3)<<0)
46#define AD9208_CHANNEL_PAGE_0 NO_OS_BIT(0)
47#define AD9208_CHANNEL_PAGE_1 NO_OS_BIT(1)
48#define AD9208_CHANNEL_PAGE_2 NO_OS_BIT(2)
49#define AD9208_CHANNEL_PAGE_3 NO_OS_BIT(3)
50#define AD9208_CHANNEL_PAGE_4 NO_OS_BIT(4)
51#define AD9208_CHANNEL_PAGE_5 NO_OS_BIT(5)
52#define AD9208_MAINDAC_PAGE_0 NO_OS_BIT(6)
53#define AD9208_MAINDAC_PAGE_1 NO_OS_BIT(7)
55#define AD9208_CHIP_SPI_XFER_REG 0x000F
56#define AD9208_CHIP_TRIGGER_SPI_XFER NO_OS_BIT(0)
58#define AD9208_CHIP_PIN_CTRL0_REG 0x03F
59#define AD9208_CHIP_PDN_PIN_DISABLE NO_OS_BIT(7)
60#define AD9208_CHIP_PIN_CTRL1_REG 0x040
61#define AD9208_CHIP_PDN_MODE(x) (((x)&0xC0)<<6)
62#define AD9208_CHIP_PIN_CTRL_MASK(x) (0x07 << (3 * (x)))
64#define AD9208_IP_CLK_CFG_REG 0x0108
65#define AD9208_IP_CLK_DIV(x) (((x)&0x3)<<0)
66#define AD9208_IP_CLK_PHASE_ADJ_REG 0x0109
67#define AD9208_IP_CLK_PHASE_ADJ(x) (((x)&0xF)<<0)
69#define AD9208_IP_CLK_STAT_REG 0x011B
70#define AD9208_IP_CLK_DCS1_REG 0x011C
71#define AD9208_IP_CLK_DCS2_REG 0x011E
73#define AD9208_SYSREF_CTRL_0_REG 0x0120
74#define AD9208_SYSREF_MODE_SEL(x) (((x)&0x3)<<1)
75#define AD9208_SYSREF_CTRL_1_REG 0x0121
76#define AD9208_SYSREF_TRANSITION_SEL(x) (((x)&0x1)<<4)
77#define AD9208_SYSREF_CLK_EDGE_SEL(x) (((x)&0x1)<<3)
78#define AD9208_SYSREF_NSHOT_IGNORE(x) (((x)&0xF)<<0)
79#define AD9208_SYSREF_CTRL_2_REG 0x0122
80#define AD9208_SYSREF_WIN_NEG(x) (((x)&0x3)<<2)
81#define AD9208_SYSREF_WIN_POS(x) (((x)&0x3)<<0)
82#define AD9208_SYSREF_CTRL_3_REG 0x0123
83#define AD9208_SYSREF_TS_DELAY(x) (((x)&0x7F)<<0)
85#define AD9208_SYSREF_STAT_0_REG 0x0128
86#define AD9208_SYSREF_STAT_1_REG 0x0129
87#define AD9208_SYSREF_STAT_2_REG 0x012A
89#define AD9208_BUFF_CFG_P_REG 0x1A4C
90#define AD9208_BUFF_CTRL_P(x) (((x)&0x3F)<<0)
91#define AD9208_BUFF_CFG_N_REG 0x1A4D
92#define AD9208_BUFF_CTRL_N(x) (((x)&0x3F)<<0)
94#define AD9208_CHIP_SYNC_MODE_REG 0x01FF
95#define AD9208_SYNC_TS_ENABLE NO_OS_BIT(0)
97#define AD9208_ADC_MODE_REG 0x0200
98#define AD9208_ADC_MODE(x) (((x)&0x3)<<0)
99#define AD9208_ADC_Q_IGNORE NO_OS_BIT(5)
101#define AD9208_ADC_DCM_REG 0x0201
102#define AD9208_ADC_DCM_RATE(x) (((x)&0xF)<<0)
103#define AD9208_DCM_NONE 0x0
104#define AD9208_DCM2_EN NO_OS_BIT(0)
105#define AD9208_DCM4_EN NO_OS_BIT(1)
106#define AD9208_DCM16_EN NO_OS_BIT(2)
107#define AD9208_DCM3_EN NO_OS_BIT(3)
109#define AD9208_FD_UT_LSB_REG 0x0247
110#define AD9208_FD_UT_LSB(x) (((x)&0xFF)<<0)
111#define AD9208_FD_UT_MSB_REG 0x0248
112#define AD9208_FD_UT_MSB(x) (((x>>8)&0x1F)<<0)
113#define AD9208_FD_LT_LSB_REG 0x0249
114#define AD9208_FD_LT_LSB(x) (((x)&0xFF)<<0)
115#define AD9208_FD_LT_MSB_REG 0x024A
116#define AD9208_FD_LT_MSB(x) (((x>>8)&0x1F)<<0)
118#define AD9208_FD_DWELL_LSB_REG 0x024B
119#define AD9208_FD_DWELL_LSB(x) (((x)&0xFF)<<0)
120#define AD9208_FD_DWELL_MSB_REG 0x024C
121#define AD9208_FD_DWELL_MSB(x) (((x>>8)&0xFF)<<0)
123#define AD9208_DDC_SYNC_CTRL_REG 0x0300
124#define AD9208_DDC_UPDATE_MODE NO_OS_BIT(7)
125#define AD9208_NCO_SOFT_RESET NO_OS_BIT(4)
126#define AD9208_NCO_SYSREF_N_SHOT_MODE NO_OS_BIT(1)
127#define AD9208_NCO_SYSREF_SYNC_EN NO_OS_BIT(0)
129#define AD9208_DDCX_REG_OFFSET 0x20
130#define AD9208_DDCX_CTRL0_REG 0x0310
131#define AD9208_DDCX_MIXER_SEL NO_OS_BIT(7)
132#define AD9208_DDCX_GAIN_SEL NO_OS_BIT(6)
133#define AD9208_DDCX_NCO_IF_MODE(x) (((x)&0x3)<<4)
134#define AD9208_DDCX_COMPLEX_TO_REAL NO_OS_BIT(3)
135#define AD9208_DDCX_DCM_FILT_SEL_0(x) (((x)&0x7)<<0)
137#define AD9208_DDCX_DATA_SEL_REG 0x0311
138#define AD9208_DDCX_DCM_FILT_SEL_1(x) (((x)&0xF)<<4)
139#define AD9208_DDCX_Q_IP_CHB_SEL NO_OS_BIT(2)
140#define AD9208_DDCX_I_IP_CHB_SEL NO_OS_BIT(0)
142#define AD9208_DDCX_FTW0_REG 0x0316
143#define AD9208_DDCX_FTW1_REG 0x0317
144#define AD9208_DDCX_FTW2_REG 0x0318
145#define AD9208_DDCX_FTW3_REG 0x0319
146#define AD9208_DDCX_FTW4_REG 0x031A
147#define AD9208_DDCX_FTW5_REG 0x031B
149#define AD9208_DDCX_PO0_REG 0x031D
150#define AD9208_DDCX_PO1_REG 0x031E
151#define AD9208_DDCX_PO2_REG 0x031F
152#define AD9208_DDCX_PO3_REG 0x0320
153#define AD9208_DDCX_PO4_REG 0x0321
154#define AD9208_DDCX_PO5_REG 0x0322
156#define AD9208_DDCX_FRAC_REG_OFFSET 0x10
157#define AD9208_DDCX_MAW0_REG 0x0390
158#define AD9208_DDCX_MAW1_REG 0x0391
159#define AD9208_DDCX_MAW2_REG 0x0392
160#define AD9208_DDCX_MAW3_REG 0x0393
161#define AD9208_DDCX_MAW4_REG 0x0394
162#define AD9208_DDCX_MAW5_REG 0x0395
164#define AD9208_DDCX_MBW0_REG 0x0398
165#define AD9208_DDCX_MBW1_REG 0x0399
166#define AD9208_DDCX_MBW2_REG 0x039A
167#define AD9208_DDCX_MBW3_REG 0x039B
168#define AD9208_DDCX_MBW4_REG 0x039C
169#define AD9208_DDCX_MBW5_REG 0x039D
171#define AD9208_REG_TEST_MODE 0x0550
173#define AD9208_TESTMODE_OFF 0x0
174#define AD9208_TESTMODE_MIDSCALE_SHORT 0x1
175#define AD9208_TESTMODE_POS_FULLSCALE 0x2
176#define AD9208_TESTMODE_NEG_FULLSCALE 0x3
177#define AD9208_TESTMODE_ALT_CHECKERBOARD 0x4
178#define AD9208_TESTMODE_PN23_SEQ 0x5
179#define AD9208_TESTMODE_PN9_SEQ 0x6
180#define AD9208_TESTMODE_ONE_ZERO_TOGGLE 0x7
181#define AD9208_TESTMODE_USER 0x8
182#define AD9208_TESTMODE_RAMP 0xF
184#define AD9208_REG_OUTPUT_MODE 0x0561
185#define AD9208_OUTPUT_MODE_OFFSET_BINARY 0x0
186#define AD9208_OUTPUT_MODE_TWOS_COMPLEMENT 0x1
188#define AD9208_OP_MODE_CTRL_1_REG 0x0559
189#define AD9208_OP_MODE_CTRL_2_REG 0x055A
190#define AD9208_OP_CONV_CTRL_BIT_SEL(x) (((x)&0xF)>>0)
191#define AD9208_OP_OVERANGE_CLR_REG 0x0562
192#define AD9208_OP_OVERANGE_STAT_REG 0x0563
194#define AD9208_JESD_LMFC_OFFSET_REG 0x0578
195#define AD9208_JESD_LMFC_OFFSET(x) (((x)&0x1F)>>0)
197#define AD9208_JESD_SERDES_PLL_CFG_REG 0x056E
198#define AD9208_JESD_SLR_CTRL(x) (((x)&0xF)<<4)
200#define AD9208_JESD_SERDES_PLL_REG 0x056F
201#define AD9208_JESD_PLL_LOCK_STAT NO_OS_BIT(7)
203#define AD9208_JESD_LINK_CTRL1_REG 0x0571
204#define AD9208_JESD_LINK_PDN NO_OS_BIT(0)
206#define AD9208_JESD_ID_CFG_REG_OFFSET 0x3
207#define AD9208_JESD_DID_CFG_REG 0x0580
208#define AD9208_JESD_BID_CFG_REG 0x0581
209#define AD9208_JESD_BID(x) (((x)&0xF)<<0)
210#define AD9208_JESD_LID0_CFG_REG 0x0583
211#define AD9208_JESD_LID0(x) (((x)&0x1F)<<0)
213#define AD9208_JESD_CFG_REG_OFFSET 0x8
214#define AD9208_JESD_L_SCR_CFG_REG 0x058B
215#define AD9208_JESD_SCR_EN NO_OS_BIT(7)
216#define AD9208_JESD_LANES(x) (((x)&0x1F)<<0)
218#define AD9208_JESD_F_CFG_REG 0x058C
219#define AD9208_JESD_F(x) (((x)&0xF)<<0)
221#define AD9208_JESD_K_CFG_REG 0x058D
222#define AD9208_JESD_K(x) (((x)&0x1F)<<0)
224#define AD9208_JESD_M_CFG_REG 0x058E
225#define AD9208_JESD_M(x) (((x)&0x7)<<0)
227#define AD9208_JESD_CS_N_CFG_REG 0x058F
228#define AD9208_JESD_CS(x) (((x)&0x3)<<6)
229#define AD9208_JESD_N(x) (((x)&0x1F)<<0)
231#define AD9208_JESD_SCV_NP_CFG_REG 0x0590
232#define AD9208_JESD_SUBCLASS(x) (((x)&0x7)<<5)
233#define AD9208_JESD_NP(x) (((x)&0x1F)<<0)
234#define AD9208_JESD_S_CFG_REG 0x0591
235#define AD9208_JESD_S(x) (((x)&0x1F)<<0)
237#define AD9208_JESD_HD_CF_CFG_REG 0x0592
238#define AD9208_JESD_HD NO_OS_BIT(7)
239#define AD9208_JESD_CF(x) (((x)&0x1F)<<0)
241#define AD9208_JESD_XBAR_CFG_REG_OFFSET 0x5
242#define AD9208_JESD_XBAR_CFG_REG 0x05B2
243#define AD9208_JESD_XBAR_LN_EVEN(x) (((x)&0x7) << 0)
244#define AD9208_JESD_XBAR_LN_ODD(x) (((x)&0x7) << 4)
246#define AD9208_DC_OFFSET_CAL_CTRL 0x0701
247#define AD9208_DC_OFFSET_CAL_EN NO_OS_BIT(7)
249#define AD9208_VREF_CTRL_REG 0x18A6
250#define AD9208_EXT_VREF_MODE NO_OS_BIT(0)
252#define AD9208_EXT_VCM_CTRL_REG 0x18E3
253#define AD9208_EXT_VCM_BUFF NO_OS_BIT(6)
254#define AD9208_EXT_VCM_BUFF_CURR(x) (((x)&0x3F) << 0)
256#define AD9208_TEMP_DIODE_CTRL_REG 0x18E6
257#define AD9208_CENTRAL_DIODE_1X_EN NO_OS_BIT(0)
258#define AD9208_CENTRAL_DIODE_20X_EN NO_OS_BIT(1)
260#define AD9208_ANALOG_CFG_REG 0x1908
261#define AD9208_DC_COUPLE_EN(x) (((x)&0x1)<<2)
263#define AD9208_FULL_SCALE_CFG_REG 0x1910
264#define AD9208_TRM_VREF(x) (((x)&0xF)<<0)
int ad9208_register_write_tbl(ad9208_handle_t *h, struct adi_reg_data *tbl, uint32_t count)
Definition ad9208_reg.c:78
int ad9208_register_read_block(ad9208_handle_t *h, const uint16_t address, uint8_t *data, uint32_t count)
Definition ad9208_reg.c:62
int ad9208_adc_select_ch(ad9208_handle_t *h, uint8_t ch)
int ad9208_register_chip_transfer(ad9208_handle_t *h)
Definition ad9208_reg.c:112
int ad9208_is_sync_spi_update_enabled(ad9208_handle_t *h, uint8_t *enabled)
Definition ad9208_reg.c:96
API definitions header file.
Definition ad9208_api.h:78