From patchwork Tue Oct 29 16:29:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 11217863 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4921513BD for ; Tue, 29 Oct 2019 13:30:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 100E12086A for ; Tue, 29 Oct 2019 13:30:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="qhD/Ja7L" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388256AbfJ2Nai (ORCPT ); Tue, 29 Oct 2019 09:30:38 -0400 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:2940 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726858AbfJ2Nai (ORCPT ); Tue, 29 Oct 2019 09:30:38 -0400 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9TDRqPI015098; Tue, 29 Oct 2019 09:29:15 -0400 Received: from nam01-bn3-obe.outbound.protection.outlook.com (mail-bn3nam01lp2058.outbound.protection.outlook.com [104.47.33.58]) by mx0a-00128a01.pphosted.com with ESMTP id 2vvk26f2yb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 29 Oct 2019 09:29:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U18vShZwpHU5lhVVyZuWUCTTRx2kUX50uc9navf9djIwIigv0lQ5oGjPJ3VoUxYCDVI4PPwJYRgv7abwGWnxDuJC5TYpoPIUyQDKrBweC3WzE9SlEHpWh3x0JXu8COtypnLDwtr67S0Fxh0CEEoGS8GfdG1oS3pBLri+fEOu2zYkpGKzxFoURN2w3KyUk+SzhO9CbBaExoFPeYmW572JIOZPrh8FAeaaWtUBgbHFr5R8FRudxBRjYw58AopSBJQtzAuCu33xcruR4W5udXdaT8dYr0PBE50JGZDPq42taVYkXBi7ZuYzHKJx68mE5rGm3gUbdKIgunQe/xfIhF8nOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iwOQSctrHkMqvmUhNhpYdgInKnkuVMe+jVc9or4fY+g=; b=ahnCi/Rr7OHW2DViWibfRT7TscdAtFMgCQ6QYlhpG9PVdv9UFCZjYUQ3uSfFdW6FCm/jvKu9j7g6Plz40pnt5scg+3AEl+sO0jYZxEqgd+C+hUgZfNcUXi8s86zLAckBBK/vvhYzYa63JOQAnenIzIQ5KcxugpffnKrHjdmrxFCtS+mHZA6/Ee7hIxJ026dT9iNhjVzFlrFlHiFonApfXvdJtoNHgbr+vW1HU77f0f1uucO9v8HC/TRBvTWqMLmZrOdi5r/HHQNbMlI5y+50APS4UK/IbVSDjorD6uu/C1YDSskZldbk4682RrPg8JJ/O/R9UhJIWZTh5qzcI5CdBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iwOQSctrHkMqvmUhNhpYdgInKnkuVMe+jVc9or4fY+g=; b=qhD/Ja7LVA3Oq8arxXr6BicqhdpGM13ZvQs91ftH2hikjygJL8qjBbggvihx140FP3mzTq7UFGaqGJ3Fsx//cEzXNGx9N7U48q9Hjg5UeW2tFmnydxumNwz8O3EYKZ6MS+I9xc4ro7vuTl5bTb3QjQq/sf2ZtI/ka7MS399nlc8= Received: from BN6PR03CA0086.namprd03.prod.outlook.com (2603:10b6:405:6f::24) by SN6PR03MB4206.namprd03.prod.outlook.com (2603:10b6:805:c5::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Tue, 29 Oct 2019 13:29:12 +0000 Received: from CY1NAM02FT030.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::203) by BN6PR03CA0086.outlook.office365.com (2603:10b6:405:6f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.23 via Frontend Transport; Tue, 29 Oct 2019 13:29:11 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by CY1NAM02FT030.mail.protection.outlook.com (10.152.75.163) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2387.20 via Frontend Transport; Tue, 29 Oct 2019 13:29:11 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id x9TDT24P025579 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Tue, 29 Oct 2019 06:29:02 -0700 Received: from ben-Latitude-E6540.ad.analog.com (10.48.65.163) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Tue, 29 Oct 2019 09:29:09 -0400 From: Beniamin Bia To: CC: , , , , , , , , , , , , , , , , Paul Cercueil , Beniamin Bia Subject: [PATCH v2 1/4] iio: adc: Add support for AD7091R5 ADC Date: Tue, 29 Oct 2019 18:29:25 +0200 Message-ID: <20191029162928.9720-1-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(136003)(396003)(346002)(376002)(39860400002)(199004)(189003)(7696005)(476003)(6666004)(36756003)(7416002)(51416003)(356004)(1076003)(126002)(246002)(86362001)(486006)(44832011)(26005)(8676002)(2351001)(5660300002)(7636002)(70586007)(50226002)(70206006)(305945005)(6306002)(8936002)(336012)(2616005)(107886003)(186003)(6916009)(966005)(48376002)(14444005)(316002)(47776003)(16586007)(54906003)(478600001)(50466002)(426003)(106002)(4326008)(2906002)(30864003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB4206;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3dc8c1ad-802b-409d-846c-08d75c73fbf0 X-MS-TrafficTypeDiagnostic: SN6PR03MB4206: X-MS-Exchange-PUrlCount: 1 X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-Forefront-PRVS: 0205EDCD76 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TgZ7A7vmv05MFyDajDiM/D/Eafhq9lHZKLY4jTB/wyvb7qANOCNEsIEJZ0ZTuwURPJaFH1YKk3OR1NlSI2G5akTltg6Ar3fo9eHv4ARkdL+kNyEwK/UgSpzYqk+P2Q6FAvyTJbqTwKEpw1a7KLgGTudSPod9gr0+7nvXiyUeESTW1BopCMz34DXcHwbdxKSLnrYhjv/7ZC8sAlI3pzXWyxVsTAS0C9ndGPtFE4glKbHhQ+PIEvH6IGKf4srtq/iYZ/2WHV75L1s+y/GnI3uJMnzqtOcF3XPM4N/C1hqWbvG7RrPlfVCzCmlxKZCReg1juuRvhGBY8e+golFhJJSNXLJLf3L1uI6IJXX++VftsUq5HOhTb1ThYLd4fyD1IlSqHRRfEV4FTCHvT3MGmOcsa7elg8n2zlXWMk7cVWMe7Tw9wNZzUHjollFTLHx6N4+WBbYSEaqlcSsi8FFfpMlE2Aoq3HM2Gc1Dj2yZuhomWZw= X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2019 13:29:11.2671 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3dc8c1ad-802b-409d-846c-08d75c73fbf0 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4206 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-29_04:2019-10-28,2019-10-29 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 phishscore=0 suspectscore=0 clxscore=1015 mlxlogscore=999 impostorscore=0 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910290132 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Paul Cercueil AD7091 is 4-Channel, I2C, Ultra Low Power,12-Bit ADC. Datasheet: Link: https://www.analog.com/media/en/technical-documentation/data-sheets/ad7091r-5.pdf Signed-off-by: Paul Cercueil Co-developed-by: Beniamin Bia Signed-off-by: Beniamin Bia --- Changes in v2: -blank lines removed -prefix added to macros -comments rework -error checking syntax changed -iio mutex replaced by a mutex -device remove function was removed and later replaced by devm_add_action -regmap include removed from header drivers/iio/adc/Kconfig | 7 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/ad7091r-base.c | 264 +++++++++++++++++++++++++++++++++ drivers/iio/adc/ad7091r-base.h | 25 ++++ drivers/iio/adc/ad7091r5.c | 102 +++++++++++++ 5 files changed, 399 insertions(+) create mode 100644 drivers/iio/adc/ad7091r-base.c create mode 100644 drivers/iio/adc/ad7091r-base.h create mode 100644 drivers/iio/adc/ad7091r5.c diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig index 7e3286265a38..80b1b9551749 100644 --- a/drivers/iio/adc/Kconfig +++ b/drivers/iio/adc/Kconfig @@ -22,6 +22,13 @@ config AD7124 To compile this driver as a module, choose M here: the module will be called ad7124. +config AD7091R5 + tristate "Analog Devices AD7091R5 ADC Driver" + depends on I2C + select REGMAP_I2C + help + Say yes here to build support for Analog Devices AD7091R-5 ADC. + config AD7266 tristate "Analog Devices AD7265/AD7266 ADC driver" depends on SPI_MASTER diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile index ef9cc485fb67..55e44735aaac 100644 --- a/drivers/iio/adc/Makefile +++ b/drivers/iio/adc/Makefile @@ -6,6 +6,7 @@ # When adding new entries keep the list in alphabetical order obj-$(CONFIG_AD_SIGMA_DELTA) += ad_sigma_delta.o obj-$(CONFIG_AD7124) += ad7124.o +obj-$(CONFIG_AD7091R5) += ad7091r5.o ad7091r-base.o obj-$(CONFIG_AD7266) += ad7266.o obj-$(CONFIG_AD7291) += ad7291.o obj-$(CONFIG_AD7298) += ad7298.o diff --git a/drivers/iio/adc/ad7091r-base.c b/drivers/iio/adc/ad7091r-base.c new file mode 100644 index 000000000000..c2500f614d54 --- /dev/null +++ b/drivers/iio/adc/ad7091r-base.c @@ -0,0 +1,264 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * AD7091RX Analog to Digital converter driver + * + * Copyright 2014-2019 Analog Devices Inc. + */ + +#include +#include +#include +#include +#include +#include + +#include "ad7091r-base.h" + +#define AD7091R_REG_RESULT 0 +#define AD7091R_REG_CHANNEL 1 +#define AD7091R_REG_CONF 2 +#define AD7091R_REG_ALERT 3 +#define AD7091R_REG_CH_LOW_LIMIT(ch) ((ch) * 3 + 4) +#define AD7091R_REG_CH_HIGH_LIMIT(ch) ((ch) * 3 + 5) +#define AD7091R_REG_CH_HYSTERESIS(ch) ((ch) * 3 + 6) + +/* AD7091R_REG_RESULT */ +#define AD7091R_REG_RESULT_CH_ID(x) (((x) >> 13) & 0x3) +#define AD7091R_REG_RESULT_CONV_RESULT(x) ((x) & 0xfff) + +/* AD7091R_REG_CONF */ +#define AD7091R_REG_CONF_AUTO BIT(8) +#define AD7091R_REG_CONF_CMD BIT(10) + +#define AD7091R_REG_CONF_MODE_MASK \ + (AD7091R_REG_CONF_AUTO | AD7091R_REG_CONF_CMD) + +enum ad7091r_mode { + AD7091R_MODE_SAMPLE, + AD7091R_MODE_COMMAND, + AD7091R_MODE_AUTOCYCLE, +}; + +struct ad7091r_state { + struct device *dev; + struct regmap *map; + const struct ad7091r_chip_info *chip_info; + enum ad7091r_mode mode; + struct mutex lock; +}; + +static int ad7091r_set_mode(struct ad7091r_state *st, enum ad7091r_mode mode) +{ + int ret; + + switch (mode) { + case AD7091R_MODE_SAMPLE: + ret = regmap_update_bits(st->map, AD7091R_REG_CONF, + AD7091R_REG_CONF_MODE_MASK, 0); + break; + case AD7091R_MODE_COMMAND: + ret = regmap_update_bits(st->map, AD7091R_REG_CONF, + AD7091R_REG_CONF_MODE_MASK, + AD7091R_REG_CONF_CMD); + break; + case AD7091R_MODE_AUTOCYCLE: + ret = regmap_update_bits(st->map, AD7091R_REG_CONF, + AD7091R_REG_CONF_MODE_MASK, + AD7091R_REG_CONF_AUTO); + break; + default: + ret = -EINVAL; + break; + } + + if (ret) + return ret; + + st->mode = mode; + + return ret; +} + +static int ad7091r_set_channel(struct ad7091r_state *st, unsigned int channel) +{ + unsigned int foo; + int ret; + + /* AD7091R_REG_CHANNEL specified which channels to be converted */ + ret = regmap_write(st->map, AD7091R_REG_CHANNEL, + BIT(channel) | (BIT(channel) << 8)); + if (ret) + return ret; + + /* + * There is a latency of one conversion before the channel conversion + * sequence is updated + */ + return regmap_read(st->map, AD7091R_REG_RESULT, &foo); +} + +static int ad7091r_read_one(struct iio_dev *iio_dev, + unsigned int channel, unsigned int *read_val) +{ + struct ad7091r_state *st = iio_priv(iio_dev); + unsigned int val; + int ret; + + ret = ad7091r_set_channel(st, channel); + if (ret) + return ret; + + ret = regmap_read(st->map, AD7091R_REG_RESULT, &val); + if (ret) + return ret; + + if (AD7091R_REG_RESULT_CH_ID(val) != channel) + return -EIO; + + *read_val = AD7091R_REG_RESULT_CONV_RESULT(val); + + return 0; +} + +static int ad7091r_read_raw(struct iio_dev *iio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long m) +{ + struct ad7091r_state *st = iio_priv(iio_dev); + unsigned int read_val; + int ret; + + mutex_lock(&st->lock); + + switch (m) { + case IIO_CHAN_INFO_RAW: + if (st->mode != AD7091R_MODE_COMMAND) { + ret = -EBUSY; + goto unlock; + } + + ret = ad7091r_read_one(iio_dev, chan->channel, &read_val); + if (ret) + goto unlock; + + *val = read_val; + ret = IIO_VAL_INT; + break; + + default: + ret = -EINVAL; + break; + } + +unlock: + mutex_unlock(&st->lock); + return ret; +} + +static const struct iio_info ad7091r_info = { + .read_raw = ad7091r_read_raw, +}; + +static irqreturn_t ad7091r_event_handler(int irq, void *private) +{ + struct ad7091r_state *st = (struct ad7091r_state *) private; + struct iio_dev *iio_dev = dev_get_drvdata(st->dev); + unsigned int i, read_val; + int ret; + s64 timestamp = iio_get_time_ns(iio_dev); + + ret = regmap_read(st->map, AD7091R_REG_ALERT, &read_val); + if (ret) + return IRQ_HANDLED; + + for (i = 0; i < st->chip_info->num_channels; i++) { + if (read_val & BIT(i * 2)) + iio_push_event(iio_dev, + IIO_UNMOD_EVENT_CODE(IIO_VOLTAGE, i, + IIO_EV_TYPE_THRESH, + IIO_EV_DIR_RISING), timestamp); + if (read_val & BIT(i * 2 + 1)) + iio_push_event(iio_dev, + IIO_UNMOD_EVENT_CODE(IIO_VOLTAGE, i, + IIO_EV_TYPE_THRESH, + IIO_EV_DIR_FALLING), timestamp); + } + + return IRQ_HANDLED; +} + +int ad7091r_probe(struct device *dev, const char *name, + const struct ad7091r_chip_info *chip_info, + struct regmap *map, int irq) +{ + struct iio_dev *iio_dev; + struct ad7091r_state *st; + int ret; + + iio_dev = devm_iio_device_alloc(dev, sizeof(*st)); + if (!iio_dev) + return -ENOMEM; + + st = iio_priv(iio_dev); + st->dev = dev; + st->chip_info = chip_info; + st->map = map; + + iio_dev->dev.parent = dev; + iio_dev->name = name; + iio_dev->info = &ad7091r_info; + iio_dev->modes = INDIO_DIRECT_MODE; + + iio_dev->num_channels = chip_info->num_channels; + iio_dev->channels = chip_info->channels; + + if (irq) { + ret = devm_request_threaded_irq(dev, irq, NULL, + ad7091r_event_handler, + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, name, st); + if (ret) + return ret; + } + + /* Use command mode by default to convert only desired channels*/ + ret = ad7091r_set_mode(st, AD7091R_MODE_COMMAND); + if (ret < 0) + return ret; + + return iio_device_register(iio_dev); +} +EXPORT_SYMBOL_GPL(ad7091r_probe); + +static bool ad7091r_writeable_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case AD7091R_REG_RESULT: + case AD7091R_REG_ALERT: + return false; + default: + return true; + } +} + +static bool ad7091r_volatile_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case AD7091R_REG_RESULT: + case AD7091R_REG_ALERT: + return true; + default: + return false; + } +} + +const struct regmap_config ad7091r_regmap_config = { + .reg_bits = 8, + .val_bits = 16, + .writeable_reg = ad7091r_writeable_reg, + .volatile_reg = ad7091r_volatile_reg, +}; +EXPORT_SYMBOL_GPL(ad7091r_regmap_config); + +MODULE_AUTHOR("Beniamin Bia "); +MODULE_DESCRIPTION("Analog Devices AD7091Rx multi-channel converters"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/iio/adc/ad7091r-base.h b/drivers/iio/adc/ad7091r-base.h new file mode 100644 index 000000000000..5f1147735953 --- /dev/null +++ b/drivers/iio/adc/ad7091r-base.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * AD7091RX Analog to Digital converter driver + * + * Copyright 2014-2019 Analog Devices Inc. + */ + +#ifndef __DRIVERS_IIO_ADC_AD7091R_BASE_H__ +#define __DRIVERS_IIO_ADC_AD7091R_BASE_H__ + +struct device; +struct ad7091r_state; + +struct ad7091r_chip_info { + unsigned int num_channels; + const struct iio_chan_spec *channels; +}; + +extern const struct regmap_config ad7091r_regmap_config; + +int ad7091r_probe(struct device *dev, const char *name, + const struct ad7091r_chip_info *chip_info, + struct regmap *map, int irq); + +#endif /* __DRIVERS_IIO_ADC_AD7091R5_BASE_H__ */ diff --git a/drivers/iio/adc/ad7091r5.c b/drivers/iio/adc/ad7091r5.c new file mode 100644 index 000000000000..2c44dd02ba1a --- /dev/null +++ b/drivers/iio/adc/ad7091r5.c @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * AD7091R5 Analog to Digital converter driver + * + * Copyright 2014-2019 Analog Devices Inc. + */ + +#include +#include +#include +#include + +#include "ad7091r-base.h" + +static const struct iio_event_spec ad7091r5_events[] = { + { + .type = IIO_EV_TYPE_THRESH, + .dir = IIO_EV_DIR_RISING, + .mask_separate = BIT(IIO_EV_INFO_VALUE) | + BIT(IIO_EV_INFO_ENABLE), + }, + { + .type = IIO_EV_TYPE_THRESH, + .dir = IIO_EV_DIR_FALLING, + .mask_separate = BIT(IIO_EV_INFO_VALUE) | + BIT(IIO_EV_INFO_ENABLE), + }, + { + .type = IIO_EV_TYPE_THRESH, + .dir = IIO_EV_DIR_EITHER, + .mask_separate = BIT(IIO_EV_INFO_HYSTERESIS), + }, +}; + +#define AD7091R_CHANNEL(idx, bits, ev, num_ev) { \ + .type = IIO_VOLTAGE, \ + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ + .indexed = 1, \ + .channel = idx, \ + .event_spec = ev, \ + .num_event_specs = num_ev, \ +} +static const struct iio_chan_spec ad7091r5_channels_irq[] = { + AD7091R_CHANNEL(0, 12, ad7091r5_events, ARRAY_SIZE(ad7091r5_events)), + AD7091R_CHANNEL(1, 12, ad7091r5_events, ARRAY_SIZE(ad7091r5_events)), + AD7091R_CHANNEL(2, 12, ad7091r5_events, ARRAY_SIZE(ad7091r5_events)), + AD7091R_CHANNEL(3, 12, ad7091r5_events, ARRAY_SIZE(ad7091r5_events)), +}; + +static const struct iio_chan_spec ad7091r5_channels_noirq[] = { + AD7091R_CHANNEL(0, 12, NULL, 0), + AD7091R_CHANNEL(1, 12, NULL, 0), + AD7091R_CHANNEL(2, 12, NULL, 0), + AD7091R_CHANNEL(3, 12, NULL, 0), +}; +#undef AD7091R_CHANNEL + +static const struct ad7091r_chip_info ad7091r5_chip_info_irq = { + .channels = ad7091r5_channels_irq, + .num_channels = ARRAY_SIZE(ad7091r5_channels_irq), +}; + +static const struct ad7091r_chip_info ad7091r5_chip_info_noirq = { + .channels = ad7091r5_channels_noirq, + .num_channels = ARRAY_SIZE(ad7091r5_channels_noirq), +}; + +static int ad7091r5_i2c_probe(struct i2c_client *i2c, + const struct i2c_device_id *id) +{ + const struct ad7091r_chip_info *chip_info; + struct regmap *map = devm_regmap_init_i2c(i2c, &ad7091r_regmap_config); + + if (IS_ERR(map)) + return PTR_ERR(map); + + if (i2c->irq) + chip_info = &ad7091r5_chip_info_irq; + else + chip_info = &ad7091r5_chip_info_noirq; + + return ad7091r_probe(&i2c->dev, id->name, chip_info, map, i2c->irq); +} + +static const struct i2c_device_id ad7091r5_i2c_ids[] = { + {"ad7091r5", 0}, + {} +}; +MODULE_DEVICE_TABLE(i2c, ad7091r5_i2c_ids); + +static struct i2c_driver ad7091r5_driver = { + .driver = { + .name = "ad7091r5", + }, + .probe = ad7091r5_i2c_probe, + .id_table = ad7091r5_i2c_ids, +}; +module_i2c_driver(ad7091r5_driver); + +MODULE_AUTHOR("Beniamin Bia "); +MODULE_DESCRIPTION("Analog Devices AD7091R5 multi-channel ADC driver"); +MODULE_LICENSE("GPL v2"); From patchwork Tue Oct 29 16:29:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 11217865 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6C412112B for ; Tue, 29 Oct 2019 13:31:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 35B762086A for ; Tue, 29 Oct 2019 13:31:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="0VNWBzOQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388464AbfJ2NbY (ORCPT ); Tue, 29 Oct 2019 09:31:24 -0400 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:17438 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731885AbfJ2NbY (ORCPT ); Tue, 29 Oct 2019 09:31:24 -0400 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9TDRgEM031831; Tue, 29 Oct 2019 09:30:53 -0400 Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2056.outbound.protection.outlook.com [104.47.45.56]) by mx0a-00128a01.pphosted.com with ESMTP id 2vvg08fc32-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Oct 2019 09:30:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IJx+2WgpaH0aIIdcHrBDHu3QFsNbFTLrlHmFcgW9iHNe372MLU0Mr0mEmIKWJiLVH9abMmeuQZqO3G/ml4FVu/LU1i88Ers0efjAqRGTrzRt5GA1m10w9VQ77oQXmK4Bc1exxdKatidm6H0J9r2sEcH73J26u0AIAVjiLe3gpD+3wGRZSiIxbSXT2jf6PG+u1JuGV6WO8Zqba/7dIM2fkFv0GNF1xB4BNzjpKVgtRJU0DptWgukBjD/UYDSIKgSxQDVASHhR0fiA33UC2jR1kK6Mncw4GLIwSCqx+hkrVh5A2QtL4TUlPVCp72hDsv9BItL8yi7PCcR+Ds7c92yrhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FsSFjA0MLFz86vtGu3357yz5IPgO30pMB33y0+rmsMs=; b=CNqF/GvN+CBtryNwTagaSDKgYr9bOv32kNfQMevh5BYA9SHk4euFpvd7fqaZdIWmfg/zVENoWeQ/ZdpVF46eLMyj0bpgEV5KIH2Uw1xgip3tjigBcspHIQsqFj1MOsLXUQGEg3zpDwSxeFDwB+RRU0T+O0SXeKv5jrjjR+BW5YoXcIxcQSHGYBtMdxlNAuZI3GnbiB0rEqedBEt7fbDGCRsmyRDJaEO+GIeCUbTnJML/sGGP077P+PJ1DzW7U693Mwm+Klwf2uvEZ4ULyn342pctuzNT+r67Lrb64hxT5xJL5IiFd7hRd8oL6NmHMQs6aQ2/y+GNENWW3J3sria+4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.55) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FsSFjA0MLFz86vtGu3357yz5IPgO30pMB33y0+rmsMs=; b=0VNWBzOQf9UfvfutBe/jimd3lpJFIzRici1+4c6iQBN2IkZ0QfBv6BYKv+n6jqMD1Tgpjzru88BpkHznf3mC9CCdwXArcpvjZauqZmJuj91k/GVrnadbiUzDsieE5a5AIkcip58A9k7FR6CxzN0MI5Nu0H4Y4xWx+iMADZSBKxI= Received: from CY1PR03CA0007.namprd03.prod.outlook.com (2603:10b6:600::17) by CY1PR03MB2267.namprd03.prod.outlook.com (2a01:111:e400:c612::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Tue, 29 Oct 2019 13:30:50 +0000 Received: from CY1NAM02FT039.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::206) by CY1PR03CA0007.outlook.office365.com (2603:10b6:600::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2387.23 via Frontend Transport; Tue, 29 Oct 2019 13:30:50 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.55 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.55; helo=nwd2mta1.analog.com; Received: from nwd2mta1.analog.com (137.71.25.55) by CY1NAM02FT039.mail.protection.outlook.com (10.152.75.140) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2387.20 via Frontend Transport; Tue, 29 Oct 2019 13:30:50 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id x9TDUnsU018919 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Tue, 29 Oct 2019 06:30:49 -0700 Received: from ben-Latitude-E6540.ad.analog.com (10.48.65.163) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Tue, 29 Oct 2019 09:30:49 -0400 From: Beniamin Bia To: CC: , , , , , , , , , , , , , , , , Paul Cercueil , Beniamin Bia Subject: [PATCH v2 2/4] iio: adc: ad7091r5: Add scale and external VREF support Date: Tue, 29 Oct 2019 18:29:26 +0200 Message-ID: <20191029162928.9720-2-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191029162928.9720-1-beniamin.bia@analog.com> References: <20191029162928.9720-1-beniamin.bia@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.55;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(396003)(136003)(376002)(346002)(189003)(199004)(486006)(76176011)(4326008)(106002)(5660300002)(126002)(476003)(11346002)(47776003)(2616005)(51416003)(7696005)(70206006)(446003)(6916009)(8936002)(44832011)(478600001)(8676002)(70586007)(246002)(86362001)(36756003)(7636002)(50226002)(16586007)(305945005)(7416002)(316002)(336012)(426003)(107886003)(2351001)(186003)(2906002)(356004)(26005)(14444005)(50466002)(54906003)(48376002)(1076003)(6666004);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB2267;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c46eaabc-bca9-4d43-3cd4-08d75c7436e2 X-MS-TrafficTypeDiagnostic: CY1PR03MB2267: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-Forefront-PRVS: 0205EDCD76 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XP4lwy2Yax27DDTR4hTveCmm+s3ygTwwh1biIaX4TLDwI/emiWMhWMsKmQ614Ds+9HjHYiZ2iwfzQLZcwKTQTGk3uKuXSk/qhznd++S0S4swhnLkuz3QJOifdVsH5VTh7DnRKbuzNsObucQRu8d2H7mZtsMiHE53BEyvO4zUad0aaWocHwRrefEO9U0zcXLnzKKPllwO4bro2Vu8/48oU2uSxIR2wznAuqcWo6iqV70ql5oUS3G29SMlhwRhGoYhvOVBGwVTiQTxOfYWnXeS4nyhRJamQupqywV/nkYp8gJQ+B7B+ywqdfbVEa0vL8/AidZ1kSY5FqvsMurfLzJk91dIrHfB+HkMHqoINtnQW1UXqt4aARqd3aXI5kTikaN3ahtxs+T9YGiU8zZ+Hy3H2WaUr4ukjYJOIk/zwOly+hf3TAmB0mTAqyPCOG3d2B1b X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2019 13:30:50.1481 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c46eaabc-bca9-4d43-3cd4-08d75c7436e2 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.55];Helo=[nwd2mta1.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2267 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-29_04:2019-10-28,2019-10-29 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 suspectscore=1 mlxlogscore=999 impostorscore=0 bulkscore=0 mlxscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910290132 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Paul Cercueil The scale can now be obtained with the "in_voltage_scale" file. By default, the scale returned corresponds to the internal VREF of 2.5V. It is possible to use an external VREF (through the REFIN/REFOUT pin of the chip), by passing a regulator to the driver. The scale will then be calculated according to the voltage reported by the regulator. Signed-off-by: Paul Cercueil Co-developed-by: Beniamin Bia Signed-off-by: Beniamin Bia --- Changes in v2: -device remove function replaced by devm_add_action_or_reset drivers/iio/adc/ad7091r-base.c | 41 ++++++++++++++++++++++++++++++++++ drivers/iio/adc/ad7091r-base.h | 1 + drivers/iio/adc/ad7091r5.c | 5 +++++ 3 files changed, 47 insertions(+) diff --git a/drivers/iio/adc/ad7091r-base.c b/drivers/iio/adc/ad7091r-base.c index c2500f614d54..fda1112e7376 100644 --- a/drivers/iio/adc/ad7091r-base.c +++ b/drivers/iio/adc/ad7091r-base.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "ad7091r-base.h" @@ -42,6 +43,7 @@ enum ad7091r_mode { struct ad7091r_state { struct device *dev; struct regmap *map; + struct regulator *reg; const struct ad7091r_chip_info *chip_info; enum ad7091r_mode mode; struct mutex lock; @@ -145,6 +147,21 @@ static int ad7091r_read_raw(struct iio_dev *iio_dev, ret = IIO_VAL_INT; break; + case IIO_CHAN_INFO_SCALE: + if (st->reg) { + ret = regulator_get_voltage(st->reg); + if (ret < 0) + goto unlock; + + *val = ret / 1000; + } else { + *val = st->chip_info->vref_mV; + } + + *val2 = chan->scan_type.realbits; + ret = IIO_VAL_FRACTIONAL_LOG2; + break; + default: ret = -EINVAL; break; @@ -187,6 +204,16 @@ static irqreturn_t ad7091r_event_handler(int irq, void *private) return IRQ_HANDLED; } +void ad7091r_remove(void *data) +{ + struct ad7091r_state *st; + + st = (struct ad7091r_state *)data; + + if (st->reg) + regulator_disable(st->reg); +} + int ad7091r_probe(struct device *dev, const char *name, const struct ad7091r_chip_info *chip_info, struct regmap *map, int irq) @@ -220,6 +247,20 @@ int ad7091r_probe(struct device *dev, const char *name, return ret; } + st->reg = devm_regulator_get_optional(dev, "vref"); + if (IS_ERR(st->reg)) { + if (PTR_ERR(st->reg) == EPROBE_DEFER) + return -EPROBE_DEFER; + + st->reg = NULL; + } else { + ret = regulator_enable(st->reg); + if (ret) + return ret; + } + + devm_add_action_or_reset(dev, ad7091r_remove, st); + /* Use command mode by default to convert only desired channels*/ ret = ad7091r_set_mode(st, AD7091R_MODE_COMMAND); if (ret < 0) diff --git a/drivers/iio/adc/ad7091r-base.h b/drivers/iio/adc/ad7091r-base.h index 5f1147735953..76b76968d071 100644 --- a/drivers/iio/adc/ad7091r-base.h +++ b/drivers/iio/adc/ad7091r-base.h @@ -14,6 +14,7 @@ struct ad7091r_state; struct ad7091r_chip_info { unsigned int num_channels; const struct iio_chan_spec *channels; + unsigned int vref_mV; }; extern const struct regmap_config ad7091r_regmap_config; diff --git a/drivers/iio/adc/ad7091r5.c b/drivers/iio/adc/ad7091r5.c index 2c44dd02ba1a..7ee4a781cc01 100644 --- a/drivers/iio/adc/ad7091r5.c +++ b/drivers/iio/adc/ad7091r5.c @@ -35,10 +35,13 @@ static const struct iio_event_spec ad7091r5_events[] = { #define AD7091R_CHANNEL(idx, bits, ev, num_ev) { \ .type = IIO_VOLTAGE, \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \ .indexed = 1, \ .channel = idx, \ .event_spec = ev, \ .num_event_specs = num_ev, \ + .scan_type.storagebits = 16, \ + .scan_type.realbits = bits, \ } static const struct iio_chan_spec ad7091r5_channels_irq[] = { AD7091R_CHANNEL(0, 12, ad7091r5_events, ARRAY_SIZE(ad7091r5_events)), @@ -58,11 +61,13 @@ static const struct iio_chan_spec ad7091r5_channels_noirq[] = { static const struct ad7091r_chip_info ad7091r5_chip_info_irq = { .channels = ad7091r5_channels_irq, .num_channels = ARRAY_SIZE(ad7091r5_channels_irq), + .vref_mV = 2500, }; static const struct ad7091r_chip_info ad7091r5_chip_info_noirq = { .channels = ad7091r5_channels_noirq, .num_channels = ARRAY_SIZE(ad7091r5_channels_noirq), + .vref_mV = 2500, }; static int ad7091r5_i2c_probe(struct i2c_client *i2c, From patchwork Tue Oct 29 16:29:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 11217867 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 18E3213BD for ; Tue, 29 Oct 2019 13:31:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E06EA20874 for ; Tue, 29 Oct 2019 13:31:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="CzNLNWmI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388604AbfJ2Nbf (ORCPT ); Tue, 29 Oct 2019 09:31:35 -0400 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:9166 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388603AbfJ2Nbc (ORCPT ); Tue, 29 Oct 2019 09:31:32 -0400 Received: from pps.filterd (m0167090.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9TDRO96025702; Tue, 29 Oct 2019 09:31:01 -0400 Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2051.outbound.protection.outlook.com [104.47.32.51]) by mx0b-00128a01.pphosted.com with ESMTP id 2vvjs67pdg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Oct 2019 09:31:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XNvVRDgwJNHBtge2OVZcyMlNoKer78we13KduDlc45me0IIznSBMVTnXX58csXQEduNl2a054x9+SioNo+FjzzK/GLdgRSU8Nx3Hl2koNaztPgDfTy2XzWYlPu4GfomjmOvbn+e6XX9D8gd2A269DrzjNXkEAfndtm3NBSbkdH6G1iqgomfs8gX42gnHg2EC5BX7AJ9tEa+NqJSascxQWklQovNHIrXJqIw8pn201scPh//cnoX8lNr78yYdYcH+r7RPYETJbIyxUz25e6rPj0Fl0SRVCztR6y4rpSn9RnZ6MANrAWGiIfAUgDM7BZQfMoMudmDfClUdwsnj8SduAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1/amaYrqGuhjPwFNLJc33pq/tFhm1TJOvSZ5h4xAJZU=; b=EmOO9/S1RRTMoZGFP7ek+Gf//GDajgt6N7OXZm/f1F+NC6vOj9YncY+9Y0bF0f4w7iqrD8DbfQCd3X+6WBdz/eERcLPCJR8FjP0XqxAh+mBGft2J2BjImk67dIgzwQB1M23Bh3VwTff5qzfb6QKwxNCjwlD+vFC8fx+RApczolxMOKbaHOsHHfdhHVWDU6ZYfci+0yZsttb7VJYTXWWJ5oxTtMPyjSmZmvqlDfgVlbLoujlbauEdkuykKBSvk582jIUlKFgl8PR+kK+KwAdwZnU81oyZcT9elYCnhSOk0K3vSy0IsFoA7M213Glz4sdKSuhzdEBZWbmjTiVy3eLPvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.55) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1/amaYrqGuhjPwFNLJc33pq/tFhm1TJOvSZ5h4xAJZU=; b=CzNLNWmI/6hcSQBo3poC/INHPuwygFEmxsuqzv1iukz6joVxT1svauAoN4tQyLZNTe53Kk5QBPBsUNhKKYYRFMFc2PAzulHNangWrjcZ8Gy4mkZKGOyde2KC2GeE4IDW9VZZur7ctm7fTyEMy7K2BYjgkhgtt6fkzAMLFJaCBXs= Received: from BN3PR03CA0097.namprd03.prod.outlook.com (2603:10b6:400:4::15) by MN2PR03MB4910.namprd03.prod.outlook.com (2603:10b6:208:108::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.22; Tue, 29 Oct 2019 13:30:59 +0000 Received: from CY1NAM02FT053.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::202) by BN3PR03CA0097.outlook.office365.com (2603:10b6:400:4::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2387.22 via Frontend Transport; Tue, 29 Oct 2019 13:30:58 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.55 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.55; helo=nwd2mta1.analog.com; Received: from nwd2mta1.analog.com (137.71.25.55) by CY1NAM02FT053.mail.protection.outlook.com (10.152.74.165) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2387.20 via Frontend Transport; Tue, 29 Oct 2019 13:30:58 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id x9TDUvj9018981 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Tue, 29 Oct 2019 06:30:57 -0700 Received: from ben-Latitude-E6540.ad.analog.com (10.48.65.163) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Tue, 29 Oct 2019 09:30:57 -0400 From: Beniamin Bia To: CC: , , , , , , , , , , , , , , , , Beniamin Bia Subject: [PATCH v2 3/4] dt-binding: iio: Add documentation for AD7091R5 Date: Tue, 29 Oct 2019 18:29:27 +0200 Message-ID: <20191029162928.9720-3-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191029162928.9720-1-beniamin.bia@analog.com> References: <20191029162928.9720-1-beniamin.bia@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.55;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(136003)(376002)(346002)(396003)(199004)(189003)(2351001)(86362001)(966005)(305945005)(7636002)(8936002)(6306002)(4326008)(50226002)(7416002)(106002)(54906003)(8676002)(70206006)(26005)(47776003)(51416003)(7696005)(76176011)(478600001)(186003)(246002)(70586007)(336012)(426003)(36756003)(486006)(11346002)(126002)(446003)(6916009)(476003)(2616005)(44832011)(16586007)(50466002)(48376002)(5660300002)(6666004)(356004)(107886003)(2906002)(316002)(1076003);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR03MB4910;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 375c44b4-88b3-469f-8966-08d75c743bdd X-MS-TrafficTypeDiagnostic: MN2PR03MB4910: X-MS-Exchange-PUrlCount: 3 X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-Forefront-PRVS: 0205EDCD76 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nqen8xVFmnScHnHPf1ssVsmM7WrZBpXK/t/uXssx1DJkI8QQfcPaVOQpiwnhSWwE/I7kSGJ/MwEn44Me4W2BtjsHrKMUlj+HArskxhIOCFV0vcmviGLZ+GmoPP/bDiAZwRtxTzPTJVMk6RTGltiZ4waxAiNUO7NY38gDDdV0Av9bj11qUAO5xgaaV7NrYZMSWM2oHwRZA7CBoCY+8F1CbQcvvL1hggW6dlrMOPoKTXyj2ea70MVIVMwehq/1Zki/7KZ/O1LE204RFhfZmEGptLbGM7agSAVawcGUNTm1nncVrSTFJrWoUHn7Z95oiwcMirsRrgGOWk+KF6XXNYojdFuiGkJn9Ia30ONfzVcrj7imvvVVVEAMx4ICn8jOsTe0HrJ8r3hrGIT5jzIKdJjlpym8sH6MRZtReaZes9rGyKfFTXamAdR7km1uBl+nWgzi9QPzXKt3YmLW3im1sInW4sjcw8qPbTscn+01WaphC/0= X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2019 13:30:58.5169 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 375c44b4-88b3-469f-8966-08d75c743bdd X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.55];Helo=[nwd2mta1.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB4910 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-29_04:2019-10-28,2019-10-29 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 impostorscore=0 clxscore=1015 adultscore=0 priorityscore=1501 spamscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910290132 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Documentation for AD7091R5 ADC was added. Signed-off-by: Beniamin Bia --- Changes in v2: -nothing changed .../bindings/iio/adc/adi,ad7091r5.yaml | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml new file mode 100644 index 000000000000..d041cd76804e --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/adi,ad7091r5.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices AD7091R5 4-Channel 12-Bit ADC + +maintainers: + - Beniamin Bia + +description: | + Analog Devices AD7091R5 4-Channel 12-Bit ADC + https://www.analog.com/media/en/technical-documentation/data-sheets/ad7091r-5.pdf + +properties: + compatible: + enum: + - adi,ad7091R5 + + reg: + maxItems: 1 + + avcc-supply: + description: + Phandle to the Avcc power supply + maxItems: 1 + + interrupts: + maxItems: 1 + + +required: + - compatible + - reg + +examples: + - | + #include + #include + i2c { + #address-cells = <1>; + #size-cells = <0>; + + adc@0 { + compatible = "adi,ad7091r5"; + reg = <0x2F>; + + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; + interrupt-parent = <&gpio>; + }; + }; +... From patchwork Tue Oct 29 16:52:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 11217935 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9D729112B for ; Tue, 29 Oct 2019 13:52:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7190F21479 for ; Tue, 29 Oct 2019 13:52:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="EeCNSq8Z" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388923AbfJ2Nwk (ORCPT ); Tue, 29 Oct 2019 09:52:40 -0400 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:46200 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388294AbfJ2Nwk (ORCPT ); Tue, 29 Oct 2019 09:52:40 -0400 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9TDlsPq024029; Tue, 29 Oct 2019 09:52:14 -0400 Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2059.outbound.protection.outlook.com [104.47.32.59]) by mx0a-00128a01.pphosted.com with ESMTP id 2vvk26f4s1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 29 Oct 2019 09:52:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bQpD3Y2Tgme/Bnx+fJWRA+Tw7LQibR6xqBdeQg6ZMfAqKvnf45ov8Nv3YjIFKWONNJ/EGqhR8fNjrjTWXev1bzD6t2iBgH+hdecZqk0nykh1PnE2bixFeP3MjckZsAze8veU12OAUGAfZptUf+kwklfdgHKBrvj/flLNMFt4ccIGlLtCNTcD41MMAevwB8jU668WgfEj+1alJFwKd0VNolYe8fIWQWBAjPCN8HCcpBFnyeCp90BwgwTX8wOIOzh3Se2mtXh5CWiN8NQu/zrMCUACC0MbcAgceJw8w9tEUZrvn21ZTwWDYPKJKj2Vm85bIJPcE7Tl+1ycSCcc+FgT7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2hDD8b0bGRPVx8DUhOmfebYAy7xhfl7NFy8y6rLjG6g=; b=nS8DLo8oUAJEyD925xXxI//QYTQJlbGipxNsoQg4onEkCPFkp9fw1pgkL4K3/3i/V/0HXP7vcnMaHnSGHmED2l3VTYPjnrL54BWixHWL2FR1F3dD4n+EwOQomPIoIQj4Tluj2zIj19BUY4qCAtuGUofz+fG+NOnOAv1/PTnlJdbfcmhAjJz+J2iWAl01pmua1PVrItBBGX6HBr4uXmRXBi8CBmGqaPkMVClcUSBzXQkK4hfBCXjQhXE4mdMfY6ZzVLMHsewNhd/IbSVxweCl8ubC58GGe/Ej1EX4yAASZwr8ubX8+VziA3UpVEvWXNYNmUm5imA5e+FBtFaG/XB9sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2hDD8b0bGRPVx8DUhOmfebYAy7xhfl7NFy8y6rLjG6g=; b=EeCNSq8ZAonicKPJ/VNyKWlTb8zb6LZooATrpN3pvSierSbOxeRhI3sao3Xr4mo2oxZOggcC7q+g4TOymw7et0da3+v7LaEM6gOavmnt6Ya/9LycXsDy569a1KvH7xxeRooEOc8ZoGKJMejFlFJ50tP6pSoid2nRsolpVQD6qKk= Received: from DM3PR03CA0015.namprd03.prod.outlook.com (2603:10b6:0:50::25) by SN6PR03MB4413.namprd03.prod.outlook.com (2603:10b6:805:101::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.20; Tue, 29 Oct 2019 13:52:12 +0000 Received: from BL2NAM02FT041.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::208) by DM3PR03CA0015.outlook.office365.com (2603:10b6:0:50::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25 via Frontend Transport; Tue, 29 Oct 2019 13:52:12 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT041.mail.protection.outlook.com (10.152.77.122) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2387.20 via Frontend Transport; Tue, 29 Oct 2019 13:52:12 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id x9TDq4Qs031817 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Tue, 29 Oct 2019 06:52:04 -0700 Received: from ben-Latitude-E6540.ad.analog.com (10.48.65.163) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Tue, 29 Oct 2019 09:52:10 -0400 From: Beniamin Bia To: CC: , , , , , , , , , , , , , , , , Beniamin Bia Subject: [PATCH v2 4/4] MAINTAINERS: add entry for AD7091R5 driver Date: Tue, 29 Oct 2019 18:52:24 +0200 Message-ID: <20191029165224.11164-1-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191029162928.9720-1-beniamin.bia@analog.com> References: <20191029162928.9720-1-beniamin.bia@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(346002)(396003)(136003)(376002)(199004)(189003)(48376002)(54906003)(478600001)(8676002)(2351001)(106002)(8936002)(246002)(2906002)(47776003)(6306002)(107886003)(50226002)(86362001)(70206006)(70586007)(4326008)(6666004)(966005)(11346002)(76176011)(486006)(446003)(2616005)(6916009)(126002)(51416003)(1076003)(7416002)(26005)(7636002)(4744005)(476003)(186003)(305945005)(316002)(16586007)(50466002)(426003)(5660300002)(36756003)(336012)(356004)(7696005)(44832011);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB4413;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 134b07c1-e0d2-4c8e-4d52-08d75c7732e8 X-MS-TrafficTypeDiagnostic: SN6PR03MB4413: X-MS-Exchange-PUrlCount: 1 X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1303; X-Forefront-PRVS: 0205EDCD76 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M7XIdFSmIiu5Wgpfg+Qpq2yZXgvW3ehqdO7VzFgU0kiWfsQsu48DQ+EhZUFTrEe6r4AO6Zmj+eDMab+J3EuzpJbGl7iUZxJZkVayCHDk4Mu4bITZyHFCVuj35OmnN3cWd5lWEAm/PMCA9ACVPMbP3L3Lh0/vn9aYdl6ldkQQEdW7Muy0WnDCpIfAFTcaDlsMlBG4qRBh0qMBYGVd3smXQT6WhWWHL2tRAl8cZNyfDZ6xvnru6fFQWSbogz8G/T5+iRLfDI3vWQc+kOSIviHUD9y36cM8vUG5rT2ydj/cSzxS6WDBpE87DufRFinnIKUOPX754jsnOeqnwVG230bUqBJYVMpFhi/QsoOGkMQdK7JEiesSmAWdaFLYegh5fRBK/N7QvTepBhj8kdJi8dJl0nfmFj+qs065FKgvBf+DHBhJH+wrc12Ubkx2krxyGBZzR6k9xS0WEy7XPEqpVmtfRgT5lfgmoDw2F0tTSDT6Pfs= X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2019 13:52:12.0562 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 134b07c1-e0d2-4c8e-4d52-08d75c7732e8 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4413 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-29_04:2019-10-28,2019-10-29 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 phishscore=0 suspectscore=1 clxscore=1015 mlxlogscore=999 impostorscore=0 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910290136 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Add Beniamin Bia as a maintainer for AD7091R5 ADC. Signed-off-by: Beniamin Bia --- Changes in v2: -nothing changed MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 2e01d0f0b0e5..7f1e4b88688f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -893,6 +893,14 @@ S: Supported F: drivers/iio/dac/ad5758.c F: Documentation/devicetree/bindings/iio/dac/ad5758.txt +ANALOG DEVICES INC AD7091R5 DRIVER +M: Beniamin Bia +L: linux-iio@vger.kernel.org +W: http://ez.analog.com/community/linux-device-drivers +S: Supported +F: drivers/iio/adc/ad7091r5.c +F: Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml + ANALOG DEVICES INC AD7124 DRIVER M: Stefan Popa L: linux-iio@vger.kernel.org