#include <linux/bits.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/gpio/consumer.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/spi/spi.h>
#define ADI_SPI_IF_CONFIG_A …
#define ADI_SPI_IF_CONFIG_B …
#define ADI_SPI_IF_DEVICE_CONFIG …
#define ADI_SPI_IF_CHIP_TYPE …
#define ADI_SPI_IF_PRODUCT_ID_L …
#define ADI_SPI_IF_PRODUCT_ID_H …
#define ADI_SPI_IF_CHIP_GRADE …
#define ADI_SPI_IF_SCRACTH_PAD …
#define ADI_SPI_IF_SPI_REVISION …
#define ADI_SPI_IF_SPI_VENDOR_L …
#define ADI_SPI_IF_SPI_VENDOR_H …
#define ADI_SPI_IF_SPI_STREAM_MODE …
#define ADI_SPI_IF_CONFIG_C …
#define ADI_SPI_IF_STATUS_A …
#define ADI_SPI_IF_SW_RESET_MSK …
#define ADI_SPI_IF_SW_RESET_SEL(x) …
#define ADI_SPI_IF_ADDR_ASC_MSK …
#define ADI_SPI_IF_ADDR_ASC_SEL(x) …
#define ADI_SPI_IF_SINGLE_INS_MSK …
#define ADI_SPI_IF_SINGLE_INS_SEL(x) …
#define ADI_SPI_IF_SHORT_INS_MSK …
#define ADI_SPI_IF_SHORT_INS_SEL(x) …
#define ADI_SPI_IF_STRICT_REG_MSK …
#define ADI_SPI_IF_STRICT_REG_GET(x) …
#define AD5770R_CHANNEL_CONFIG …
#define AD5770R_OUTPUT_RANGE(ch) …
#define AD5770R_FILTER_RESISTOR(ch) …
#define AD5770R_REFERENCE …
#define AD5770R_DAC_LSB(ch) …
#define AD5770R_DAC_MSB(ch) …
#define AD5770R_CH_SELECT …
#define AD5770R_CH_ENABLE …
#define AD5770R_CFG_CH0_SINK_EN(x) …
#define AD5770R_CFG_SHUTDOWN_B(x, ch) …
#define AD5770R_RANGE_OUTPUT_SCALING(x) …
#define AD5770R_RANGE_MODE(x) …
#define AD5770R_REF_RESISTOR_SEL(x) …
#define AD5770R_REF_SEL(x) …
#define AD5770R_CH_SET(x, ch) …
#define AD5770R_MAX_CHANNELS …
#define AD5770R_MAX_CH_MODES …
#define AD5770R_LOW_VREF_mV …
#define AD5770R_HIGH_VREF_mV …
enum ad5770r_ch0_modes { … };
enum ad5770r_ch1_modes { … };
enum ad5770r_ch2_5_modes { … };
enum ad5770r_ref_v { … };
enum ad5770r_output_filter_resistor { … };
struct ad5770r_out_range { … };
struct ad5770r_state { … };
static const struct regmap_config ad5770r_spi_regmap_config = …;
struct ad5770r_output_modes { … };
static struct ad5770r_output_modes ad5770r_rng_tbl[] = …;
static const unsigned int ad5770r_filter_freqs[] = …;
static const unsigned int ad5770r_filter_reg_vals[] = …;
static int ad5770r_set_output_mode(struct ad5770r_state *st,
const struct ad5770r_out_range *out_mode,
int channel)
{ … }
static int ad5770r_set_reference(struct ad5770r_state *st)
{ … }
static int ad5770r_soft_reset(struct ad5770r_state *st)
{ … }
static int ad5770r_reset(struct ad5770r_state *st)
{ … }
static int ad5770r_get_range(struct ad5770r_state *st,
int ch, int *min, int *max)
{ … }
static int ad5770r_get_filter_freq(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan, int *freq)
{ … }
static int ad5770r_set_filter_freq(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan,
unsigned int freq)
{ … }
static int ad5770r_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2, long info)
{ … }
static int ad5770r_write_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int val, int val2, long info)
{ … }
static int ad5770r_read_freq_avail(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
const int **vals, int *type, int *length,
long mask)
{ … }
static int ad5770r_reg_access(struct iio_dev *indio_dev,
unsigned int reg,
unsigned int writeval,
unsigned int *readval)
{ … }
static const struct iio_info ad5770r_info = …;
static int ad5770r_store_output_range(struct ad5770r_state *st,
int min, int max, int index)
{ … }
static ssize_t ad5770r_read_dac_powerdown(struct iio_dev *indio_dev,
uintptr_t private,
const struct iio_chan_spec *chan,
char *buf)
{ … }
static ssize_t ad5770r_write_dac_powerdown(struct iio_dev *indio_dev,
uintptr_t private,
const struct iio_chan_spec *chan,
const char *buf, size_t len)
{ … }
static const struct iio_chan_spec_ext_info ad5770r_ext_info[] = …;
#define AD5770R_IDAC_CHANNEL(index, reg) …
static const struct iio_chan_spec ad5770r_channels[] = …;
static int ad5770r_channel_config(struct ad5770r_state *st)
{ … }
static int ad5770r_init(struct ad5770r_state *st)
{ … }
static void ad5770r_disable_regulator(void *data)
{ … }
static int ad5770r_probe(struct spi_device *spi)
{ … }
static const struct of_device_id ad5770r_of_id[] = …;
MODULE_DEVICE_TABLE(of, ad5770r_of_id);
static const struct spi_device_id ad5770r_id[] = …;
MODULE_DEVICE_TABLE(spi, ad5770r_id);
static struct spi_driver ad5770r_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;