Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965237AbeALUjC (ORCPT + 1 other); Fri, 12 Jan 2018 15:39:02 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:44761 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965004AbeALUjA (ORCPT ); Fri, 12 Jan 2018 15:39:00 -0500 X-Google-Smtp-Source: ACJfBos3d/QuTOLJrJkR6ftyKIFRPIId/TaCOLKK56/XBCJ1mpyPmPp2Cn/3HTTPuv5RqCvRSU1Xlg== To: Jonathan Cameron Cc: linux-iio@vger.kernel.org, LKML , knaack.h@gmx.de, pmeerw@pmeerw.net, Michael.Hennerich@analog.com, "lars@metafoo.de >> Lars-Peter Clausen" From: Milan Stevanovic Subject: [PATCH] iio: adc: driver for ti adc081s/adc101s/adc121s Message-ID: <23df1de6-dd7e-5c45-9634-1a3ec2e9687b@gmail.com> Date: Fri, 12 Jan 2018 21:38:57 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: From cb437dd49444fb12897f88ccf485369e6ed3184e Mon Sep 17 00:00:00 2001 From: Milan Stevanovic Date: Sun, 7 Jan 2018 21:44:33 +0100 Subject: [PATCH] iio: adc: driver for ti adc081s/adc101s/adc121s Add Linux device driver for TI single-channel CMOS 8/10/12-bit analog-to-digital converter with a high-speed serial interface. Signed-off-by: Milan Stevanovic --- drivers/iio/adc/ad7476.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/iio/adc/ad7476.c b/drivers/iio/adc/ad7476.c index b7706bf..e872081 100644 --- a/drivers/iio/adc/ad7476.c +++ b/drivers/iio/adc/ad7476.c @@ -1,9 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * AD7466/7/8 AD7476/5/7/8 (A) SPI ADC driver * - * Copyright 2010 Analog Devices Inc. + * Analog Device AD7466/7/8 AD7476/5/7/8 (A) SPI ADC driver + * TI ADC081S/ADC101S/ADC121S 8/10/12-bit SPI ADC driver * - * Licensed under the GPL-2 or later. */ #include @@ -56,6 +56,9 @@ enum ad7476_supported_device_ids { ID_AD7468, ID_AD7495, ID_AD7940, + ID_ADC081S, + ID_ADC101S, + ID_ADC121S, }; static irqreturn_t ad7476_trigger_handler(int irq, void *p) @@ -147,6 +150,8 @@ static int ad7476_read_raw(struct iio_dev *indio_dev, }, \ } +#define ADC081S_CHAN(bits) _AD7476_CHAN((bits), 12 - (bits), \ + BIT(IIO_CHAN_INFO_RAW)) #define AD7476_CHAN(bits) _AD7476_CHAN((bits), 13 - (bits), \ BIT(IIO_CHAN_INFO_RAW)) #define AD7940_CHAN(bits) _AD7476_CHAN((bits), 15 - (bits), \ @@ -192,6 +197,18 @@ static const struct ad7476_chip_info ad7476_chip_info_tbl[] = { .channel[0] = AD7940_CHAN(14), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), }, + [ID_ADC081S] = { + .channel[0] = ADC081S_CHAN(8), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + }, + [ID_ADC101S] = { + .channel[0] = ADC081S_CHAN(10), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + }, + [ID_ADC121S] = { + .channel[0] = ADC081S_CHAN(12), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + }, }; static const struct iio_info ad7476_info = { @@ -294,6 +311,9 @@ static const struct spi_device_id ad7476_id[] = { {"ad7910", ID_AD7467}, {"ad7920", ID_AD7466}, {"ad7940", ID_AD7940}, + {"adc081s", ID_ADC081S}, + {"adc101s", ID_ADC101S}, + {"adc121s", ID_ADC121S}, {} }; MODULE_DEVICE_TABLE(spi, ad7476_id); -- 2.7.4