]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/staging/iio/dac/ad5446.h
staging:iio:dac:ad5446: Remove duplicated chip_info entries
[karo-tx-linux.git] / drivers / staging / iio / dac / ad5446.h
1 /*
2  * AD5446 SPI DAC driver
3  *
4  * Copyright 2010 Analog Devices Inc.
5  *
6  * Licensed under the GPL-2 or later.
7  */
8 #ifndef IIO_DAC_AD5446_H_
9 #define IIO_DAC_AD5446_H_
10
11 /* DAC Control Bits */
12
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 */
17
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 */
22
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 */
27
28 #define MODE_PWRDWN_1k          0x1
29 #define MODE_PWRDWN_100k        0x2
30 #define MODE_PWRDWN_TRISTATE    0x3
31
32 /**
33  * struct ad5446_state - driver instance specific data
34  * @spi:                spi_device
35  * @chip_info:          chip model specific constants, available modes etc
36  * @reg:                supply regulator
37  * @vref_mv:            actual reference voltage used
38  */
39
40 struct ad5446_state {
41         struct spi_device               *spi;
42         const struct ad5446_chip_info   *chip_info;
43         struct regulator                *reg;
44         unsigned short                  vref_mv;
45         unsigned                        cached_val;
46         unsigned                        pwr_down_mode;
47         unsigned                        pwr_down;
48 };
49
50 /**
51  * struct ad5446_chip_info - chip specific information
52  * @channel:            channel spec for the DAC
53  * @int_vref_mv:        AD5620/40/60: the internal reference voltage
54  * @store_sample:       chip specific helper function to store the datum
55  * @store_sample:       chip specific helper function to store the powerpown cmd
56  */
57
58 struct ad5446_chip_info {
59         struct iio_chan_spec    channel;
60         u16                     int_vref_mv;
61         int (*store_sample)     (struct ad5446_state *st, unsigned val);
62         int (*store_pwr_down)   (struct ad5446_state *st, unsigned mode);
63 };
64
65 /**
66  * ad5446_supported_device_ids:
67  * The AD5620/40/60 parts are available in different fixed internal reference
68  * voltage options. The actual part numbers may look differently
69  * (and a bit cryptic), however this style is used to make clear which
70  * parts are supported here.
71  */
72
73 enum ad5446_supported_device_ids {
74         ID_AD5444,
75         ID_AD5446,
76         ID_AD5541A,
77         ID_AD5512A,
78         ID_AD5553,
79         ID_AD5601,
80         ID_AD5611,
81         ID_AD5621,
82         ID_AD5620_2500,
83         ID_AD5620_1250,
84         ID_AD5640_2500,
85         ID_AD5640_1250,
86         ID_AD5660_2500,
87         ID_AD5660_1250,
88 };
89
90 #endif /* IIO_DAC_AD5446_H_ */