2
* AD5446 SPI DAC driver
4
* Copyright 2010 Analog Devices Inc.
6
* Licensed under the GPL-2 or later.
8
#ifndef IIO_DAC_AD5446_H_
9
#define IIO_DAC_AD5446_H_
11
/* DAC Control Bits */
13
#define AD5446_LOAD (0x0 << 14) /* Load and update */
14
#define AD5446_SDO_DIS (0x1 << 14) /* Disable SDO */
15
#define AD5446_NOP (0x2 << 14) /* No operation */
16
#define AD5446_CLK_RISING (0x3 << 14) /* Clock data on rising edge */
18
#define AD5620_LOAD (0x0 << 14) /* Load and update Norm Operation*/
19
#define AD5620_PWRDWN_1k (0x1 << 14) /* Power-down: 1kOhm to GND */
20
#define AD5620_PWRDWN_100k (0x2 << 14) /* Power-down: 100kOhm to GND */
21
#define AD5620_PWRDWN_TRISTATE (0x3 << 14) /* Power-down: Three-state */
23
#define AD5660_LOAD (0x0 << 16) /* Load and update Norm Operation*/
24
#define AD5660_PWRDWN_1k (0x1 << 16) /* Power-down: 1kOhm to GND */
25
#define AD5660_PWRDWN_100k (0x2 << 16) /* Power-down: 100kOhm to GND */
26
#define AD5660_PWRDWN_TRISTATE (0x3 << 16) /* Power-down: Three-state */
28
#define RES_MASK(bits) ((1 << (bits)) - 1)
30
#define MODE_PWRDWN_1k 0x1
31
#define MODE_PWRDWN_100k 0x2
32
#define MODE_PWRDWN_TRISTATE 0x3
35
* struct ad5446_state - driver instance specific data
37
* @chip_info: chip model specific constants, available modes etc
38
* @reg: supply regulator
39
* @poll_work: bottom half of polling interrupt handler
40
* @vref_mv: actual reference voltage used
41
* @xfer: default spi transfer
42
* @msg: default spi message
43
* @data: spi transmit buffer
47
struct spi_device *spi;
48
const struct ad5446_chip_info *chip_info;
49
struct regulator *reg;
50
struct work_struct poll_work;
51
unsigned short vref_mv;
53
unsigned pwr_down_mode;
55
struct spi_transfer xfer;
56
struct spi_message msg;
64
* struct ad5446_chip_info - chip specific information
65
* @bits: accuracy of the DAC in bits
66
* @storagebits: number of bits written to the DAC
67
* @left_shift: number of bits the datum must be shifted
68
* @int_vref_mv: AD5620/40/60: the internal reference voltage
69
* @store_sample: chip specific helper function to store the datum
70
* @store_sample: chip specific helper function to store the powerpown cmd
73
struct ad5446_chip_info {
78
void (*store_sample) (struct ad5446_state *st, unsigned val);
79
void (*store_pwr_down) (struct ad5446_state *st, unsigned mode);
83
* ad5446_supported_device_ids:
84
* The AD5620/40/60 parts are available in different fixed internal reference
85
* voltage options. The actual part numbers may look differently
86
* (and a bit cryptic), however this style is used to make clear which
87
* parts are supported here.
90
enum ad5446_supported_device_ids {
109
#endif /* IIO_DAC_AD5446_H_ */