]> Pileus Git - ~andy/linux/blob - drivers/staging/iio/adc/ad7476.h
Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
[~andy/linux] / drivers / staging / iio / adc / ad7476.h
1 /*
2  * AD7476/5/7/8 (A) SPI ADC driver
3  *
4  * Copyright 2010 Analog Devices Inc.
5  *
6  * Licensed under the GPL-2 or later.
7  */
8 #ifndef IIO_ADC_AD7476_H_
9 #define IIO_ADC_AD7476_H_
10
11 #define RES_MASK(bits)  ((1 << (bits)) - 1)
12
13 /*
14  * TODO: struct ad7476_platform_data needs to go into include/linux/iio
15  */
16
17 struct ad7476_platform_data {
18         u16                             vref_mv;
19 };
20
21 struct ad7476_chip_info {
22         u16                             int_vref_mv;
23         struct iio_chan_spec            channel[2];
24 };
25
26 struct ad7476_state {
27         struct spi_device               *spi;
28         const struct ad7476_chip_info   *chip_info;
29         struct regulator                *reg;
30         u16                             int_vref_mv;
31         struct spi_transfer             xfer;
32         struct spi_message              msg;
33         /*
34          * DMA (thus cache coherency maintenance) requires the
35          * transfer buffers to live in their own cache lines.
36          */
37         unsigned char                   data[2] ____cacheline_aligned;
38 };
39
40 enum ad7476_supported_device_ids {
41         ID_AD7466,
42         ID_AD7467,
43         ID_AD7468,
44         ID_AD7475,
45         ID_AD7476,
46         ID_AD7477,
47         ID_AD7478,
48         ID_AD7495
49 };
50
51 #ifdef CONFIG_IIO_BUFFER
52 int ad7476_register_ring_funcs_and_init(struct iio_dev *indio_dev);
53 void ad7476_ring_cleanup(struct iio_dev *indio_dev);
54 #else /* CONFIG_IIO_BUFFER */
55
56 static inline int
57 ad7476_register_ring_funcs_and_init(struct iio_dev *indio_dev)
58 {
59         return 0;
60 }
61
62 static inline void ad7476_ring_cleanup(struct iio_dev *indio_dev)
63 {
64 }
65 #endif /* CONFIG_IIO_BUFFER */
66 #endif /* IIO_ADC_AD7476_H_ */