iio:ad7476: Add support for ad7273/ad7274/ad7276/ad7277/ad7278
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 10 Sep 2012 09:33:00 +0000 (10:33 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 15 Sep 2012 09:02:16 +0000 (10:02 +0100)
The ad7276/ad7277/ad7278 are similar to the ad7476/ad7477/ad7478 but have the
same number of leading zeros as the ad7940. The ad7273/ad7274 have a extra pin
for VREF where as for the ad7276/ad7277/ad7278 VREF is taken from VDD, but
otherwise they are compatible to the ad7276/ad7277.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/Kconfig
drivers/iio/adc/ad7476.c

index e2e6963..03791a6 100644 (file)
@@ -36,9 +36,9 @@ config AD7476
        select IIO_BUFFER
        select IIO_TRIGGERED_BUFFER
        help
-         Say yes here to build support for Analog Devices AD7475, AD7476, AD7477,
-         AD7478, AD7466, AD7467, AD7468, AD7495, AD7910, AD7920, AD7920 SPI analog
-         to digital converters (ADC).
+         Say yes here to build support for Analog Devices AD7273, AD7274, AD7276,
+         AD7277, AD7278, AD7475, AD7476, AD7477, AD7478, AD7466, AD7467, AD7468,
+         AD7495, AD7910, AD7920, AD7920 SPI analog to digital converters (ADC).
 
          If unsure, say N (but it's safe to say "Y").
 
index be22757..be2098d 100644 (file)
@@ -45,6 +45,9 @@ struct ad7476_state {
 };
 
 enum ad7476_supported_device_ids {
+       ID_AD7276,
+       ID_AD7277,
+       ID_AD7278,
        ID_AD7466,
        ID_AD7467,
        ID_AD7468,
@@ -146,6 +149,18 @@ static int ad7476_read_raw(struct iio_dev *indio_dev,
 #define AD7940_CHAN(bits) _AD7476_CHAN((bits), 15 - (bits))
 
 static const struct ad7476_chip_info ad7476_chip_info_tbl[] = {
+       [ID_AD7276] = {
+               .channel[0] = AD7940_CHAN(12),
+               .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
+       },
+       [ID_AD7277] = {
+               .channel[0] = AD7940_CHAN(10),
+               .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
+       },
+       [ID_AD7278] = {
+               .channel[0] = AD7940_CHAN(8),
+               .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
+       },
        [ID_AD7466] = {
                .channel[0] = AD7476_CHAN(12),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
@@ -256,6 +271,11 @@ static int __devexit ad7476_remove(struct spi_device *spi)
 }
 
 static const struct spi_device_id ad7476_id[] = {
+       {"ad7273", ID_AD7277},
+       {"ad7274", ID_AD7276},
+       {"ad7276", ID_AD7276},
+       {"ad7277", ID_AD7277},
+       {"ad7278", ID_AD7278},
        {"ad7466", ID_AD7466},
        {"ad7467", ID_AD7467},
        {"ad7468", ID_AD7468},