0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __ADI_AXI_ADC_H__
0009 #define __ADI_AXI_ADC_H__
0010
0011 struct device;
0012 struct iio_chan_spec;
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 struct adi_axi_adc_chip_info {
0025 const char *name;
0026 unsigned int id;
0027
0028 const struct iio_chan_spec *channels;
0029 unsigned int num_channels;
0030
0031 const unsigned int (*scale_table)[2];
0032 int num_scales;
0033
0034 unsigned long max_rate;
0035 };
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 struct adi_axi_adc_conv {
0046 const struct adi_axi_adc_chip_info *chip_info;
0047
0048 int (*preenable_setup)(struct adi_axi_adc_conv *conv);
0049 int (*reg_access)(struct adi_axi_adc_conv *conv, unsigned int reg,
0050 unsigned int writeval, unsigned int *readval);
0051 int (*read_raw)(struct adi_axi_adc_conv *conv,
0052 struct iio_chan_spec const *chan,
0053 int *val, int *val2, long mask);
0054 int (*write_raw)(struct adi_axi_adc_conv *conv,
0055 struct iio_chan_spec const *chan,
0056 int val, int val2, long mask);
0057 };
0058
0059 struct adi_axi_adc_conv *devm_adi_axi_adc_conv_register(struct device *dev,
0060 size_t sizeof_priv);
0061
0062 void *adi_axi_adc_conv_priv(struct adi_axi_adc_conv *conv);
0063
0064 #endif