40#define AD7768_REG_CH_STANDBY 0x00
41#define AD7768_REG_CH_MODE_A 0x01
42#define AD7768_REG_CH_MODE_B 0x02
43#define AD7768_REG_CH_MODE_SEL 0x03
44#define AD7768_REG_PWR_MODE 0x04
45#define AD7768_REG_GENERAL_CFG 0x05
46#define AD7768_REG_DATA_CTRL 0x06
47#define AD7768_REG_INTERFACE_CFG 0x07
48#define AD7768_REG_BIST_CTRL 0x08
49#define AD7768_REG_DEV_STATUS 0x09
50#define AD7768_REG_REV_ID 0x0A
51#define AD7768_REG_DEV_ID_MSB 0x0B
52#define AD7768_REG_DEV_ID_LSB 0x0C
53#define AD7768_REG_SW_REV_ID 0x0D
54#define AD7768_REG_GPIO_CTRL 0x0E
55#define AD7768_REG_GPIO_WR_DATA 0x0F
56#define AD7768_REG_GPIO_RD_DATA 0x10
57#define AD7768_REG_PRECHARGE_BUF_1 0x11
58#define AD7768_REG_PRECHARGE_BUF_2 0x12
59#define AD7768_REG_POS_REF_BUF 0x13
60#define AD7768_REG_NEG_REF_BUF 0x14
61#define AD7768_REG_CH_OFFSET_1(ch) (0x1E + (ch) * 3)
62#define AD7768_REG_CH_OFFSET_2(ch) (0x1F + (ch) * 3)
63#define AD7768_REG_CH_OFFSET_3(ch) (0x20 + (ch) * 3)
64#define AD7768_REG_CH_GAIN_1(ch) (0x36 + (ch) * 3)
65#define AD7768_REG_CH_GAIN_2(ch) (0x37 + (ch) * 3)
66#define AD7768_REG_CH_GAIN_3(ch) (0x38 + (ch) * 3)
67#define AD7768_REG_CH_SYNC_OFFSET(ch) (0x4E + (ch) * 3)
68#define AD7768_REG_DIAG_METER_RX 0x56
69#define AD7768_REG_DIAG_CTRL 0x57
70#define AD7768_REG_DIAG_MOD_DELAY_CTRL 0x58
71#define AD7768_REG_DIAG_CHOP_CTRL 0x59
74#define AD7768_CH_STANDBY(x) (1 << (x))
77#define AD7768_CH_MODE_FILTER_TYPE (1 << 3)
78#define AD7768_CH_MODE_DEC_RATE_MSK NO_OS_GENMASK(2, 0)
79#define AD7768_CH_MODE_DEC_RATE(x) (((x) & 0x7) << 0)
82#define AD7768_CH_MODE(x) (1 << (x))
85#define AD7768_PWR_MODE_POWER_MODE_MSK NO_OS_GENMASK(5, 4)
86#define AD7768_PWR_MODE_SLEEP_MODE (1 << 7)
87#define AD7768_PWR_MODE_POWER_MODE(x) (((x) & 0x3) << 4)
88#define AD7768_PWR_MODE_LVDS_ENABLE (1 << 3)
89#define AD7768_PWR_MODE_MCLK_DIV_MSK NO_OS_GENMASK(1, 0)
90#define AD7768_PWR_MODE_MCLK_DIV(x) (((x) & 0x3) << 0)
91#define ad7768_map_power_mode_to_regval(x) ((x) ? ((x) + 1) : 0)
94#define AD7768_DATA_CTRL_SPI_SYNC (1 << 7)
95#define AD7768_DATA_CTRL_SINGLE_SHOT_EN (1 << 4)
96#define AD7768_DATA_CTRL_SPI_RESET(x) (((x) & 0x3) << 0)
97#define AD7768_DATA_CONTROL_SPI_SYNC_MSK NO_OS_BIT(7)
98#define AD7768_DATA_CONTROL_SPI_SYNC NO_OS_BIT(7)
99#define AD7768_DATA_CONTROL_SPI_SYNC_CLEAR 0
102#define AD7768_INTERFACE_CFG_CRC_SEL(x) (((x) & 0x3) << 2)
103#define AD7768_INTERFACE_CFG_DCLK_DIV(x) (((x) & 0x3) << 0)
104#define AD7768_INTERFACE_CFG_DCLK_DIV_MSK NO_OS_GENMASK(1, 0)
105#define AD7768_INTERFACE_CFG_DCLK_DIV_MODE(x) (4 - no_os_find_first_set_bit(x))
106#define AD7768_MAX_DCLK_DIV 8
108#define AD7768_RESOLUTION 24
109#define AD7768_SAMPLE_SIZE 32
110#define AD7768_MAX_FREQ_PER_MODE 6
111#define AD7768_NUM_CHANNELS 8
199static const int ad7768_dec_rate_vals[6] = {
200 32, 64, 128, 256, 512, 1024
203static const int ad7768_mclk_div_vals[3] = {
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t ad7768_set_ch_state(ad7768_dev *dev, ad7768_ch ch, ad7768_ch_state state)
Definition ad7768.c:461
int32_t ad7768_get_ch_mode(ad7768_dev *dev, ad7768_ch ch, ad7768_ch_mode *mode)
Definition ad7768.c:600
int32_t ad7768_set_conv_op(ad7768_dev *dev, ad7768_conv_op conv_op)
Definition ad7768.c:364
ad7768_dclk_div
Definition ad7768.h:137
@ AD7768_DCLK_DIV_1
Definition ad7768.h:141
@ AD7768_DCLK_DIV_2
Definition ad7768.h:140
@ AD7768_DCLK_DIV_8
Definition ad7768.h:138
@ AD7768_DCLK_DIV_4
Definition ad7768.h:139
int32_t ad7768_get_sleep_mode(ad7768_dev *dev, ad7768_sleep_mode *mode)
Definition ad7768.c:174
ad7768_conv_op
Definition ad7768.h:149
@ AD7768_STANDARD_CONV
Definition ad7768.h:150
@ AD7768_ONE_SHOT_CONV
Definition ad7768.h:151
int32_t ad7768_set_mclk_div(ad7768_dev *dev, ad7768_mclk_div clk_div)
Definition ad7768.c:274
ad7768_mclk_div
Definition ad7768.h:131
@ AD7768_MCLK_DIV_4
Definition ad7768.h:134
@ AD7768_MCLK_DIV_8
Definition ad7768.h:133
@ AD7768_MCLK_DIV_32
Definition ad7768.h:132
ad7768_ch_mode
Definition ad7768.h:178
@ AD7768_MODE_A
Definition ad7768.h:179
@ AD7768_MODE_B
Definition ad7768.h:180
int32_t ad7768_set_mode_config(ad7768_dev *dev, ad7768_ch_mode mode, ad7768_filt_type filt_type, ad7768_dec_rate dec_rate)
Definition ad7768.c:516
int32_t ad7768_set_sleep_mode(ad7768_dev *dev, ad7768_sleep_mode mode)
Definition ad7768.c:156
int ad7768_remove(ad7768_dev *dev)
Definition ad7768.c:912
int32_t ad7768_set_dclk_div(ad7768_dev *dev, ad7768_dclk_div clk_div)
Definition ad7768.c:310
ad7768_power_mode
Definition ad7768.h:118
@ AD7768_ECO
Definition ad7768.h:119
@ AD7768_FAST
Definition ad7768.h:121
@ AD7768_MEDIAN
Definition ad7768.h:120
int32_t ad7768_set_crc_sel(ad7768_dev *dev, ad7768_crc_sel crc_sel)
Definition ad7768.c:418
int ad7768_set_power_mode_and_sampling_freq(ad7768_dev *dev, enum ad7768_power_modes_raw mode)
Definition ad7768.c:873
int32_t ad7768_spi_write(ad7768_dev *dev, uint8_t reg_addr, uint8_t reg_data)
Definition ad7768.c:88
int32_t ad7768_spi_write_mask(ad7768_dev *dev, uint8_t reg_addr, uint8_t mask, uint8_t data)
Definition ad7768.c:132
#define AD7768_MAX_FREQ_PER_MODE
Definition ad7768.h:110
ad7768_filt_type
Definition ad7768.h:183
@ AD7768_FILTER_SINC
Definition ad7768.h:185
@ AD7768_FILTER_WIDEBAND
Definition ad7768.h:184
int32_t ad7768_set_ch_mode(ad7768_dev *dev, ad7768_ch ch, ad7768_ch_mode mode)
Definition ad7768.c:572
ad7768_dec_rate
Definition ad7768.h:188
@ AD7768_DEC_X1024
Definition ad7768.h:194
@ AD7768_DEC_X512
Definition ad7768.h:193
@ AD7768_DEC_X128
Definition ad7768.h:191
@ AD7768_DEC_X1024_2ND
Definition ad7768.h:195
@ AD7768_DEC_X64
Definition ad7768.h:190
@ AD7768_DEC_X256
Definition ad7768.h:192
@ AD7768_DEC_X1024_3RD
Definition ad7768.h:196
@ AD7768_DEC_X32
Definition ad7768.h:189
ad7768_ch_state
Definition ad7768.h:173
@ AD7768_ENABLED
Definition ad7768.h:174
@ AD7768_STANDBY
Definition ad7768.h:175
void ad7768_set_available_sampl_freq(ad7768_dev *dev)
Definition ad7768.c:842
int32_t ad7768_get_mclk_div(ad7768_dev *dev, ad7768_mclk_div *clk_div)
Definition ad7768.c:292
ad7768_power_modes_raw
Definition ad7768.h:124
@ AD7768_LOW_POWER_MODE
Definition ad7768.h:125
@ AD7768_NUM_POWER_MODES
Definition ad7768.h:128
@ AD7768_FAST_MODE
Definition ad7768.h:127
@ AD7768_MEDIAN_MODE
Definition ad7768.h:126
int32_t ad7768_get_dclk_div(ad7768_dev *dev, ad7768_dclk_div *clk_div)
Definition ad7768.c:347
int32_t ad7768_get_mode_config(ad7768_dev *dev, ad7768_ch_mode mode, ad7768_filt_type *filt_type, ad7768_dec_rate *dec_rate)
Definition ad7768.c:544
int32_t ad7768_get_conv_op(ad7768_dev *dev, ad7768_conv_op *conv_op)
Definition ad7768.c:401
int32_t ad7768_get_crc_sel(ad7768_dev *dev, ad7768_crc_sel *crc_sel)
Definition ad7768.c:436
int32_t ad7768_get_power_mode(ad7768_dev *dev, ad7768_power_mode *mode)
Definition ad7768.c:257
int32_t ad7768_get_ch_state(ad7768_dev *dev, ad7768_ch ch, ad7768_ch_state *state)
Definition ad7768.c:489
ad7768_pin_spi_ctrl
Definition ad7768.h:144
@ AD7768_SPI_CTRL
Definition ad7768.h:146
@ AD7768_PIN_CTRL
Definition ad7768.h:145
int32_t ad7768_setup_begin(ad7768_dev **device, ad7768_init_param init_param)
Definition ad7768.c:648
int32_t ad7768_setup(ad7768_dev **device, ad7768_init_param init_param)
Definition ad7768.c:616
int32_t ad7768_spi_read_mask(ad7768_dev *dev, uint8_t reg_addr, uint8_t mask, uint8_t *data)
Definition ad7768.c:110
ad7768_crc_sel
Definition ad7768.h:154
@ AD7768_CRC_16
Definition ad7768.h:157
@ AD7768_CRC_16_2ND
Definition ad7768.h:158
@ AD7768_CRC_4
Definition ad7768.h:156
@ AD7768_NO_CRC
Definition ad7768.h:155
int32_t ad7768_set_power_mode(ad7768_dev *dev, ad7768_power_mode mode)
Definition ad7768.c:220
ad7768_ch
Definition ad7768.h:161
@ AD7768_CH4
Definition ad7768.h:166
@ AD7768_CH3
Definition ad7768.h:165
@ AD7768_CH5
Definition ad7768.h:167
@ AD7768_CH2
Definition ad7768.h:164
@ AD7768_CH6
Definition ad7768.h:168
@ AD7768_CH1
Definition ad7768.h:163
@ AD7768_CH0
Definition ad7768.h:162
@ AD7768_CH7
Definition ad7768.h:169
@ AD7768_CH_NO
Definition ad7768.h:170
ad7768_sleep_mode
Definition ad7768.h:113
@ AD7768_ACTIVE
Definition ad7768.h:114
@ AD7768_SLEEP
Definition ad7768.h:115
int32_t ad7768_spi_read(ad7768_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
Definition ad7768.c:62
int32_t ad7768_setup_finish(ad7768_dev *dev, ad7768_init_param init_param)
Definition ad7768.c:698
Header file of GPIO Interface.
Header file of SPI Interface.
unsigned int n_freqs
Definition ad7768.h:213
struct ad7768_freq_config freq_cfg[AD7768_MAX_FREQ_PER_MODE]
Definition ad7768.h:214
struct no_os_gpio_desc * gpio_mode3
Definition ad7768.h:224
ad7768_power_mode power_mode
Definition ad7768.h:228
struct no_os_gpio_desc * gpio_mode0
Definition ad7768.h:221
ad7768_sleep_mode sleep_mode
Definition ad7768.h:227
struct ad7768_avail_freq avail_freq[AD7768_NUM_POWER_MODES]
Definition ad7768.h:241
uint8_t pin_spi_input_value
Definition ad7768.h:225
unsigned int sampling_freq
Definition ad7768.h:240
ad7768_dec_rate dec_rate[2]
Definition ad7768.h:237
ad7768_mclk_div mclk_div
Definition ad7768.h:230
struct no_os_gpio_desc * gpio_mode2
Definition ad7768.h:223
struct no_os_spi_desc * spi_desc
Definition ad7768.h:218
unsigned int mclk
Definition ad7768.h:238
ad7768_filt_type filt_type[2]
Definition ad7768.h:236
enum ad7768_power_modes_raw power_mode_raw
Definition ad7768.h:229
struct no_os_gpio_desc * gpio_mode1
Definition ad7768.h:222
ad7768_pin_spi_ctrl pin_spi_ctrl
Definition ad7768.h:226
ad7768_crc_sel crc_sel
Definition ad7768.h:233
ad7768_ch_state ch_state[8]
Definition ad7768.h:234
ad7768_ch_mode ch_mode[8]
Definition ad7768.h:235
unsigned int datalines
Definition ad7768.h:239
uint8_t gpio_reset_value
Definition ad7768.h:220
ad7768_dclk_div dclk_div
Definition ad7768.h:231
ad7768_conv_op conv_op
Definition ad7768.h:232
struct no_os_gpio_desc * gpio_reset
Definition ad7768.h:219
unsigned int freq
Definition ad7768.h:208
unsigned int dec_rate
Definition ad7768.h:209
ad7768_crc_sel crc_sel
Definition ad7768.h:261
struct no_os_gpio_init_param gpio_mode0
Definition ad7768.h:250
struct no_os_spi_init_param spi_init
Definition ad7768.h:246
ad7768_conv_op conv_op
Definition ad7768.h:260
ad7768_power_mode power_mode
Definition ad7768.h:257
ad7768_dclk_div dclk_div
Definition ad7768.h:259
ad7768_mclk_div mclk_div
Definition ad7768.h:258
struct no_os_gpio_init_param gpio_mode3
Definition ad7768.h:253
unsigned int datalines
Definition ad7768.h:263
struct no_os_gpio_init_param gpio_mode1
Definition ad7768.h:251
struct no_os_gpio_init_param gpio_reset
Definition ad7768.h:248
uint8_t pin_spi_input_value
Definition ad7768.h:255
uint8_t gpio_reset_value
Definition ad7768.h:249
ad7768_sleep_mode sleep_mode
Definition ad7768.h:256
struct no_os_gpio_init_param gpio_mode2
Definition ad7768.h:252
unsigned int mclk
Definition ad7768.h:262
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128