no-OS
Loading...
Searching...
No Matches
ad4080.c File Reference

Implementation of AD4080 Driver. More...

#include <stdlib.h>
#include <assert.h>
#include <errno.h>
#include "ad4080.h"
#include "no_os_delay.h"
Include dependency graph for ad4080.c:

Functions

int ad4080_read_data (struct ad4080_dev *dev, uint8_t *buf, size_t len)
 Read from the AD4080 FIFO.
 
int ad4080_write (struct ad4080_dev *dev, uint16_t reg_addr, uint8_t reg_val)
 Write device register.
 
int ad4080_read (struct ad4080_dev *dev, uint16_t reg_addr, uint8_t *reg_val)
 Read device register.
 
int ad4080_update_bits (struct ad4080_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t reg_val)
 Update specific register bits.
 
int ad4080_soft_reset (struct ad4080_dev *dev)
 Software reset the device.
 
int ad4080_set_addr_asc (struct ad4080_dev *dev, enum ad4080_addr_asc addr_asc)
 Set Address Ascension.
 
int ad4080_get_addr_asc (struct ad4080_dev *dev, enum ad4080_addr_asc *addr_asc)
 Get Address Ascension.
 
int ad4080_set_single_instr (struct ad4080_dev *dev, enum ad4080_single_instr single_instr)
 Set Single/Streaming Mode.
 
int ad4080_get_single_instr (struct ad4080_dev *dev, enum ad4080_single_instr *single_instr)
 Get Single/Streaming Mode.
 
int ad4080_set_short_instr (struct ad4080_dev *dev, enum ad4080_short_instr short_instr)
 Set Short Instruction.
 
int ad4080_get_short_instr (struct ad4080_dev *dev, enum ad4080_short_instr *short_instr)
 Get Short Instruction.
 
int ad4080_set_op_mode (struct ad4080_dev *dev, enum ad4080_op_mode op_mode)
 Set Operation Mode.
 
int ad4080_get_op_mode (struct ad4080_dev *dev, enum ad4080_op_mode *op_mode)
 Get Operation Mode.
 
int ad4080_set_strict_reg_access (struct ad4080_dev *dev, enum ad4080_strict_reg_access strict_reg)
 Set Strict Register Access.
 
int ad4080_get_strict_reg_access (struct ad4080_dev *dev, enum ad4080_strict_reg_access *strict_reg)
 Get Strict Register Access.
 
int ad4080_set_intf_chk_en (struct ad4080_dev *dev, enum ad4080_intf_chk_en intf_chk_en)
 Set AD4080 Output Pattern.
 
int ad4080_get_intf_chk_en (struct ad4080_dev *dev, enum ad4080_intf_chk_en *intf_chk_en)
 Get AD4080 Output Pattern.
 
int ad4080_set_cnv_spi_lvds_lanes (struct ad4080_dev *dev, enum ad4080_cnv_spi_lvds_lanes cnv_spi_lvds_lanes)
 Set AD4080 LVDS/SPI Lane Control.
 
int ad4080_get_cnv_spi_lvds_lanes (struct ad4080_dev *dev, enum ad4080_cnv_spi_lvds_lanes *cnv_spi_lvds_lanes)
 Get AD4080 LVDS/SPI Lane Control.
 
int ad4080_set_conv_data_spi_lvds (struct ad4080_dev *dev, enum ad4080_conv_data_spi_lvds conv_data_spi_lvds)
 Set AD4080 Data Interface Configuration.
 
int ad4080_get_conv_data_spi_lvds (struct ad4080_dev *dev, enum ad4080_conv_data_spi_lvds *conv_data_spi_lvds)
 Get AD4080 Data Interface Configuration.
 
int ad4080_set_lvds_cnv_clk_cnt (struct ad4080_dev *dev, uint8_t lvds_cnv_clk_cnt)
 Set AD4080 Interface clock periods from CNV rising edge.
 
int ad4080_get_lvds_cnv_clk_cnt (struct ad4080_dev *dev, uint8_t *lvds_cnv_clk_cnt)
 Get AD4080 Interface clock periods from CNV rising edge.
 
int ad4080_set_lvds_self_clk_mode (struct ad4080_dev *dev, enum ad4080_lvds_self_clk_mode lvds_self_clk_mode)
 Set AD4080 LVDS Self Clock Mode.
 
int ad4080_get_lvds_self_clk_mode (struct ad4080_dev *dev, enum ad4080_lvds_self_clk_mode *lvds_self_clk_mode)
 Get AD4080 LVDS Self Clock Mode.
 
int ad4080_set_lvds_cnv_clk_mode (struct ad4080_dev *dev, enum ad4080_lvds_cnv_clk_mode cnv_clk_mode)
 Set AD4080 LVDS CNV Clock Mode.
 
int ad4080_get_lvds_cnv_clk_mode (struct ad4080_dev *dev, enum ad4080_lvds_cnv_clk_mode *cnv_clk_mode)
 Get AD4080 LVDS CNV Clock Mode.
 
int ad4080_set_lvds_vod (struct ad4080_dev *dev, enum ad4080_lvds_vod lvds_vod)
 Set AD4080 LVDS Differential Output Voltage.
 
int ad4080_get_lvds_vod (struct ad4080_dev *dev, enum ad4080_lvds_vod *lvds_vod)
 Get AD4080 LVDS Differential Output Voltage.
 
int ad4080_set_ana_dig_ldo_pd (struct ad4080_dev *dev, enum ad4080_ana_dig_ldo_pd ana_dig_ldo_pd)
 Set AD4080 Analog/Digital LDO.
 
int ad4080_get_ana_dig_ldo_pd (struct ad4080_dev *dev, enum ad4080_ana_dig_ldo_pd *ana_dig_ldo_pd)
 Get AD4080 Analog/Digital LDO.
 
int ad4080_set_intf_ldo_pd (struct ad4080_dev *dev, enum ad4080_intf_ldo_pd intf_ldo_pd)
 Set AD4080 Interface LDO.
 
int ad4080_get_intf_ldo_pd (struct ad4080_dev *dev, enum ad4080_intf_ldo_pd *intf_ldo_pd)
 Get AD4080 Interface LDO.
 
int ad4080_set_fifo_mode (struct ad4080_dev *dev, enum ad4080_fifo_mode fifo_mode)
 Set AD4080 Conversion Data FIFO Mode.
 
int ad4080_get_fifo_mode (struct ad4080_dev *dev, enum ad4080_fifo_mode *fifo_mode)
 Get Set AD4080 Conversion Data FIFO Mode.
 
int ad4080_set_fifo_watermark (struct ad4080_dev *dev, uint16_t fifo_watermark)
 Set AD4080 FIFO Watermark.
 
int ad4080_get_fifo_watermark (struct ad4080_dev *dev, uint16_t *fifo_watermark)
 Get AD4080 FIFO Watermark.
 
int ad4080_set_gpio_output_enable (struct ad4080_dev *dev, enum ad4080_gpio gpio, enum ad4080_gpio_op_enable gpio_op_enable)
 Configure GPIO as input or output.
 
int ad4080_set_gpio_output_func (struct ad4080_dev *dev, enum ad4080_gpio gpio, enum ad4080_gpio_op_func_sel gpio_func)
 Configure the GPIO output for a specific function.
 
int ad4080_gpio_write_data (struct ad4080_dev *dev, enum ad4080_gpio gpio, bool data)
 Set the GPIO data.
 
int ad4080_gpio_read_data (struct ad4080_dev *dev, enum ad4080_gpio gpio, bool *data)
 Read the GPIO data.
 
int ad4080_configuration_intf_init (struct ad4080_dev *dev, struct ad4080_init_param init_param)
 Configure the config SPI interface during initialization.
 
int ad4080_data_intf_init (struct ad4080_dev *dev, struct ad4080_init_param init_param)
 Configure the data interface during initialization.
 
int ad4080_init (struct ad4080_dev **device, struct ad4080_init_param init_param)
 Initialize the device.
 
int ad4080_remove (struct ad4080_dev *dev)
 Remove the device and release resources.
 

Variables

const struct ad4080_chip_info ad4080_chip_info_tbl [NUM_AD4080_DEVICES]
 

Detailed Description

Implementation of AD4080 Driver.

Author
Antoniu Miclaus (anton.nosp@m.iu.m.nosp@m.iclau.nosp@m.s@an.nosp@m.alog..nosp@m.com)
Niel Acuna (niel..nosp@m.acun.nosp@m.a@ana.nosp@m.log..nosp@m.com)

Copyright 2023-2025(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ ad4080_configuration_intf_init()

int ad4080_configuration_intf_init ( struct ad4080_dev * dev,
struct ad4080_init_param init_param )

Configure the config SPI interface during initialization.

Parameters
dev- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_data_intf_init()

int ad4080_data_intf_init ( struct ad4080_dev * dev,
struct ad4080_init_param init_param )

Configure the data interface during initialization.

Parameters
dev- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_get_addr_asc()

int ad4080_get_addr_asc ( struct ad4080_dev * dev,
enum ad4080_addr_asc * addr_asc )

Get Address Ascension.

Parameters
dev- The device structure.
addr_asc- The address ascension mode.
Returns
Address ascension value

◆ ad4080_get_ana_dig_ldo_pd()

int ad4080_get_ana_dig_ldo_pd ( struct ad4080_dev * dev,
enum ad4080_ana_dig_ldo_pd * ana_dig_ldo_pd )

Get AD4080 Analog/Digital LDO.

Parameters
dev- The device structure.
ana_dig_ldo_pd- The Analog/Digital LDO value
Returns
MSPI Analog/Digital LDO value

◆ ad4080_get_cnv_spi_lvds_lanes()

int ad4080_get_cnv_spi_lvds_lanes ( struct ad4080_dev * dev,
enum ad4080_cnv_spi_lvds_lanes * cnv_spi_lvds_lanes )

Get AD4080 LVDS/SPI Lane Control.

Parameters
dev- The device structure.
cnv_spi_lvds_lanes- The LVDS/SPI Lane Control mode.
Returns
LVDS/SPI Lane Control value

◆ ad4080_get_conv_data_spi_lvds()

int ad4080_get_conv_data_spi_lvds ( struct ad4080_dev * dev,
enum ad4080_conv_data_spi_lvds * conv_data_spi_lvds )

Get AD4080 Data Interface Configuration.

Parameters
dev- The device structure.
conv_data_spi_lvds- The conversion data mode.
Returns
Data Interface Configuration value

◆ ad4080_get_fifo_mode()

int ad4080_get_fifo_mode ( struct ad4080_dev * dev,
enum ad4080_fifo_mode * fifo_mode )

Get Set AD4080 Conversion Data FIFO Mode.

Parameters
dev- The device structure.
fifo_mode- The Conversion Data FIFO Mode
Returns
AD4080 Conversion Data FIFO Mode value

◆ ad4080_get_fifo_watermark()

int ad4080_get_fifo_watermark ( struct ad4080_dev * dev,
uint16_t * fifo_watermark )

Get AD4080 FIFO Watermark.

Parameters
dev- The device structure.
fifo_watermark- The FIFO Watermark.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_get_intf_chk_en()

int ad4080_get_intf_chk_en ( struct ad4080_dev * dev,
enum ad4080_intf_chk_en * intf_chk_en )

Get AD4080 Output Pattern.

Parameters
dev- The device structure.
intf_chk_en- The Output Pattern mode.
Returns
Output Pattern value

◆ ad4080_get_intf_ldo_pd()

int ad4080_get_intf_ldo_pd ( struct ad4080_dev * dev,
enum ad4080_intf_ldo_pd * intf_ldo_pd )

Get AD4080 Interface LDO.

Parameters
dev- The device structure.
intf_ldo_pd- The Interface LDO value
Returns
Interface LDO value

◆ ad4080_get_lvds_cnv_clk_cnt()

int ad4080_get_lvds_cnv_clk_cnt ( struct ad4080_dev * dev,
uint8_t * lvds_cnv_clk_cnt )

Get AD4080 Interface clock periods from CNV rising edge.

Parameters
dev- The device structure.
lvds_cnv_clk_cnt- Interface clock periods from CNV rising edge value
Returns
Interface clock periods from CNV rising edge value

◆ ad4080_get_lvds_cnv_clk_mode()

int ad4080_get_lvds_cnv_clk_mode ( struct ad4080_dev * dev,
enum ad4080_lvds_cnv_clk_mode * cnv_clk_mode )

Get AD4080 LVDS CNV Clock Mode.

Parameters
dev- The device structure.
cnv_clk_mode- The LVDS CNV Clock Mode value
Returns
LVDS CNV Clock Mode value

◆ ad4080_get_lvds_self_clk_mode()

int ad4080_get_lvds_self_clk_mode ( struct ad4080_dev * dev,
enum ad4080_lvds_self_clk_mode * lvds_self_clk_mode )

Get AD4080 LVDS Self Clock Mode.

Parameters
dev- The device structure.
lvds_self_clk_mode- The LVDS Self Clock Mode.
Returns
LVDS Self Clock Mode value

◆ ad4080_get_lvds_vod()

int ad4080_get_lvds_vod ( struct ad4080_dev * dev,
enum ad4080_lvds_vod * lvds_vod )

Get AD4080 LVDS Differential Output Voltage.

Parameters
dev- The device structure.
lvds_vod- The LVDS Differential Output Voltage value
Returns
LVDS Differential Output Voltage value

◆ ad4080_get_op_mode()

int ad4080_get_op_mode ( struct ad4080_dev * dev,
enum ad4080_op_mode * op_mode )

Get Operation Mode.

Parameters
dev- The device structure.
op_mode- The Operation Mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_get_short_instr()

int ad4080_get_short_instr ( struct ad4080_dev * dev,
enum ad4080_short_instr * short_instr )

Get Short Instruction.

Parameters
dev- The device structure.
short_instr- The short instruction mode.
Returns
Short Instruction value

◆ ad4080_get_single_instr()

int ad4080_get_single_instr ( struct ad4080_dev * dev,
enum ad4080_single_instr * single_instr )

Get Single/Streaming Mode.

Parameters
dev- The device structure.
single_instr- The single instruction mode.
Returns
Single/Streaming Mode value

◆ ad4080_get_strict_reg_access()

int ad4080_get_strict_reg_access ( struct ad4080_dev * dev,
enum ad4080_strict_reg_access * strict_reg )

Get Strict Register Access.

Parameters
dev- The device structure.
strict_reg- The strict reg mode.
Returns
Strict Register Access value

◆ ad4080_gpio_read_data()

int ad4080_gpio_read_data ( struct ad4080_dev * dev,
enum ad4080_gpio gpio,
bool * data )

Read the GPIO data.

Parameters
dev- The device structure.
gpio- The GPIO pin to be configured.
data- Pointer to the data (0 or 1) read back.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_gpio_write_data()

int ad4080_gpio_write_data ( struct ad4080_dev * dev,
enum ad4080_gpio gpio,
bool data )

Set the GPIO data.

Parameters
dev- The device structure.
gpio- The GPIO pin to be configured.
data- The data (0 or 1) to be written.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_init()

int ad4080_init ( struct ad4080_dev ** device,
struct ad4080_init_param init_param )

Initialize the device.

Parameters
device- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_read()

int ad4080_read ( struct ad4080_dev * dev,
uint16_t reg_addr,
uint8_t * reg_val )

Read device register.

Parameters
dev- The device structure.
reg_addr- The register address.
reg_val- The data read from the register.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_read_data()

int ad4080_read_data ( struct ad4080_dev * dev,
uint8_t * buf,
size_t len )

Read from the AD4080 FIFO.

Parameters
dev- The device structure.
buf- Receive data buffer.
len- Length of the buf.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_remove()

int ad4080_remove ( struct ad4080_dev * dev)

Remove the device and release resources.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_addr_asc()

int ad4080_set_addr_asc ( struct ad4080_dev * dev,
enum ad4080_addr_asc addr_asc )

Set Address Ascension.

Parameters
dev- The device structure.
addr_asc- The address ascension mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_ana_dig_ldo_pd()

int ad4080_set_ana_dig_ldo_pd ( struct ad4080_dev * dev,
enum ad4080_ana_dig_ldo_pd ana_dig_ldo_pd )

Set AD4080 Analog/Digital LDO.

Parameters
dev- The device structure.
ana_dig_ldo_pd- The Analog/Digital LDO value
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_cnv_spi_lvds_lanes()

int ad4080_set_cnv_spi_lvds_lanes ( struct ad4080_dev * dev,
enum ad4080_cnv_spi_lvds_lanes cnv_spi_lvds_lanes )

Set AD4080 LVDS/SPI Lane Control.

Parameters
dev- The device structure.
cnv_spi_lvds_lanes- The LVDS/SPI Lane Control mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_conv_data_spi_lvds()

int ad4080_set_conv_data_spi_lvds ( struct ad4080_dev * dev,
enum ad4080_conv_data_spi_lvds conv_data_spi_lvds )

Set AD4080 Data Interface Configuration.

Parameters
dev- The device structure.
conv_data_spi_lvds- The conversion data mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_fifo_mode()

int ad4080_set_fifo_mode ( struct ad4080_dev * dev,
enum ad4080_fifo_mode fifo_mode )

Set AD4080 Conversion Data FIFO Mode.

Parameters
dev- The device structure.
fifo_mode- The Conversion Data FIFO Mode
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_fifo_watermark()

int ad4080_set_fifo_watermark ( struct ad4080_dev * dev,
uint16_t fifo_watermark )

Set AD4080 FIFO Watermark.

Parameters
dev- The device structure.
fifo_watermark- The FIFO Watermark.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_set_gpio_output_enable()

int ad4080_set_gpio_output_enable ( struct ad4080_dev * dev,
enum ad4080_gpio gpio,
enum ad4080_gpio_op_enable gpio_op_enable )

Configure GPIO as input or output.

Parameters
dev- The device structure.
gpio- The GPIO pin to be configured.
gpio_op_enable- The GPIO Output Enable bit selection
Returns
0 in case of success, negative error code otherwise

◆ ad4080_set_gpio_output_func()

int ad4080_set_gpio_output_func ( struct ad4080_dev * dev,
enum ad4080_gpio gpio,
enum ad4080_gpio_op_func_sel gpio_func )

Configure the GPIO output for a specific function.

Parameters
dev- The device structure.
gpio- The GPIO pin to be configured.
gpio_func- The function to be selected for the GPIO.
Returns
0 in case of success, negative error code otherwise

◆ ad4080_set_intf_chk_en()

int ad4080_set_intf_chk_en ( struct ad4080_dev * dev,
enum ad4080_intf_chk_en intf_chk_en )

Set AD4080 Output Pattern.

Parameters
dev- The device structure.
intf_chk_en- The Output Pattern mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_intf_ldo_pd()

int ad4080_set_intf_ldo_pd ( struct ad4080_dev * dev,
enum ad4080_intf_ldo_pd intf_ldo_pd )

Set AD4080 Interface LDO.

Parameters
dev- The device structure.
intf_ldo_pd- The Interface LDO value
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_lvds_cnv_clk_cnt()

int ad4080_set_lvds_cnv_clk_cnt ( struct ad4080_dev * dev,
uint8_t lvds_cnv_clk_cnt )

Set AD4080 Interface clock periods from CNV rising edge.

Parameters
dev- The device structure.
lvds_cnv_clk_cnt- Interface clock periods from CNV rising edge value
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_lvds_cnv_clk_mode()

int ad4080_set_lvds_cnv_clk_mode ( struct ad4080_dev * dev,
enum ad4080_lvds_cnv_clk_mode cnv_clk_mode )

Set AD4080 LVDS CNV Clock Mode.

Parameters
dev- The device structure.
cnv_clk_mode- The LVDS CNV Clock Mode value
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_lvds_self_clk_mode()

int ad4080_set_lvds_self_clk_mode ( struct ad4080_dev * dev,
enum ad4080_lvds_self_clk_mode lvds_self_clk_mode )

Set AD4080 LVDS Self Clock Mode.

Parameters
dev- The device structure.
lvds_self_clk_mode- The LVDS Self Clock Mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_lvds_vod()

int ad4080_set_lvds_vod ( struct ad4080_dev * dev,
enum ad4080_lvds_vod lvds_vod )

Set AD4080 LVDS Differential Output Voltage.

Parameters
dev- The device structure.
lvds_vod- The LVDS Differential Output Voltage value
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_op_mode()

int ad4080_set_op_mode ( struct ad4080_dev * dev,
enum ad4080_op_mode op_mode )

Set Operation Mode.

Parameters
dev- The device structure.
op_mode- The operation mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_short_instr()

int ad4080_set_short_instr ( struct ad4080_dev * dev,
enum ad4080_short_instr short_instr )

Set Short Instruction.

Parameters
dev- The device structure.
short_instr- The short instruction mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_single_instr()

int ad4080_set_single_instr ( struct ad4080_dev * dev,
enum ad4080_single_instr single_instr )

Set Single/Streaming Mode.

Parameters
dev- The device structure.
single_instr- The single instruction mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_set_strict_reg_access()

int ad4080_set_strict_reg_access ( struct ad4080_dev * dev,
enum ad4080_strict_reg_access strict_reg )

Set Strict Register Access.

Parameters
dev- The device structure.
strict_reg- The strict reg mode.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_soft_reset()

int ad4080_soft_reset ( struct ad4080_dev * dev)

Software reset the device.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_update_bits()

int ad4080_update_bits ( struct ad4080_dev * dev,
uint16_t reg_addr,
uint8_t mask,
uint8_t reg_val )

Update specific register bits.

Parameters
dev- The device structure.
reg_addr- The register address.
mask- Specific bits mask.
reg_val- The data to be written.
Returns
0 in case of success, negative error code otherwise.

◆ ad4080_write()

int ad4080_write ( struct ad4080_dev * dev,
uint16_t reg_addr,
uint8_t reg_val )

Write device register.

Parameters
dev-The device structure.
reg_addr- The register address.
reg_val- The data to be written.
Returns
0 in case of success, negative error code otherwise.

Variable Documentation

◆ ad4080_chip_info_tbl

const struct ad4080_chip_info ad4080_chip_info_tbl[NUM_AD4080_DEVICES]