mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 06:52:34 -04:00
Make sure include files are given in alphabetical order and that we include the ones that were missing and remove the ones we don't really use. Signed-off-by: Nuno Sá <nuno.sa@analog.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
78 lines
2.1 KiB
C
78 lines
2.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_AD5446_H
|
|
#define _LINUX_AD5446_H
|
|
|
|
#include <linux/bits.h>
|
|
#include <linux/compiler.h>
|
|
#include <linux/iio/iio.h>
|
|
#include <linux/mutex.h>
|
|
#include <linux/types.h>
|
|
|
|
struct device;
|
|
|
|
extern const struct iio_chan_spec_ext_info ad5446_ext_info_powerdown[];
|
|
|
|
#define _AD5446_CHANNEL(bits, storage, _shift, ext) { \
|
|
.type = IIO_VOLTAGE, \
|
|
.indexed = 1, \
|
|
.output = 1, \
|
|
.channel = 0, \
|
|
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
|
|
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
|
|
.scan_type = { \
|
|
.sign = 'u', \
|
|
.realbits = (bits), \
|
|
.storagebits = (storage), \
|
|
.shift = (_shift), \
|
|
}, \
|
|
.ext_info = (ext), \
|
|
}
|
|
|
|
#define AD5446_CHANNEL(bits, storage, shift) \
|
|
_AD5446_CHANNEL(bits, storage, shift, NULL)
|
|
|
|
#define AD5446_CHANNEL_POWERDOWN(bits, storage, shift) \
|
|
_AD5446_CHANNEL(bits, storage, shift, ad5446_ext_info_powerdown)
|
|
|
|
/**
|
|
* struct ad5446_state - driver instance specific data
|
|
* @dev: this device
|
|
* @chip_info: chip model specific constants, available modes etc
|
|
* @vref_mv: actual reference voltage used
|
|
* @cached_val: store/retrieve values during power down
|
|
* @pwr_down_mode: power down mode (1k, 100k or tristate)
|
|
* @pwr_down: true if the device is in power down
|
|
* @lock: lock to protect the data buffer during write ops
|
|
*/
|
|
struct ad5446_state {
|
|
struct device *dev;
|
|
const struct ad5446_chip_info *chip_info;
|
|
unsigned short vref_mv;
|
|
unsigned int cached_val;
|
|
unsigned int pwr_down_mode;
|
|
unsigned int pwr_down;
|
|
/* mutex to protect device shared data */
|
|
struct mutex lock;
|
|
union {
|
|
__be16 d16;
|
|
u8 d24[3];
|
|
} __aligned(IIO_DMA_MINALIGN);
|
|
};
|
|
|
|
/**
|
|
* struct ad5446_chip_info - chip specific information
|
|
* @channel: channel spec for the DAC
|
|
* @int_vref_mv: AD5620/40/60: the internal reference voltage
|
|
* @write: chip specific helper function to write to the register
|
|
*/
|
|
struct ad5446_chip_info {
|
|
struct iio_chan_spec channel;
|
|
u16 int_vref_mv;
|
|
int (*write)(struct ad5446_state *st, unsigned int val);
|
|
};
|
|
|
|
int ad5446_probe(struct device *dev, const char *name,
|
|
const struct ad5446_chip_info *chip_info);
|
|
|
|
#endif
|