linux/drivers/iio/dac/ad5770r.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * AD5770R Digital to analog converters driver
 *
 * Copyright 2018 Analog Devices Inc.
 */

#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

/* ADI_SPI_IF_CONFIG_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)

/* ADI_SPI_IF_CONFIG_B */
#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)

/* ADI_SPI_IF_CONFIG_C */
#define ADI_SPI_IF_STRICT_REG_MSK
#define ADI_SPI_IF_STRICT_REG_GET(x)

/* AD5770R configuration registers */
#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

/* AD5770R_CHANNEL_CONFIG */
#define AD5770R_CFG_CH0_SINK_EN(x)
#define AD5770R_CFG_SHUTDOWN_B(x, ch)

/* AD5770R_OUTPUT_RANGE */
#define AD5770R_RANGE_OUTPUT_SCALING(x)
#define AD5770R_RANGE_MODE(x)

/* AD5770R_REFERENCE */
#define AD5770R_REF_RESISTOR_SEL(x)
#define AD5770R_REF_SEL(x)

/* AD5770R_CH_ENABLE */
#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 - driver instance specific data
 * @spi:		spi_device
 * @regmap:		regmap
 * @vref_reg:		fixed regulator for reference configuration
 * @gpio_reset:		gpio descriptor
 * @output_mode:	array contains channels output ranges
 * @vref:		reference value
 * @ch_pwr_down:	powerdown flags
 * @internal_ref:	internal reference flag
 * @external_res:	external 2.5k resistor flag
 * @transf_buf:		cache aligned buffer for spi read/write
 */
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();