From patchwork Sat Apr 24 17:03:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 426821 Delivered-To: patch@linaro.org Received: by 2002:a02:c901:0:0:0:0:0 with SMTP id t1csp2300236jao; Sat, 24 Apr 2021 10:05:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxlGP0rGl7Q+hxUEU+kxYJqt7NEjE+/yh/d3+A2gYYIjg7zDnU+/aTdPQQ40ooJXdINJorx X-Received: by 2002:a63:df56:: with SMTP id h22mr9360848pgj.84.1619283922547; Sat, 24 Apr 2021 10:05:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619283922; cv=none; d=google.com; s=arc-20160816; b=xfVr2JEHT52vaPO8FXl/7CDsveEB0OaGXaBuQM+Er8aspIuxgN6VPhxMGETKPDm4Jx fSq1zBKznJ4kEezUolh1+vU2tntLHW+9S7hYgNIs0n2PvNtXS9tpbVnrgM/NbqzL5asX 0CvWeAFuKDaqXELKMIlO+BD8RmXXyaHLKdl47txrTo+VvAygL7377wnyuKZjpeR0QTvZ sr7OKRHFyimrXpJnagC/7IXkyFitwmtEmeWyp9ykH5P+Z+i4Se/J1xdwlvbhWbSnGxOS 30jtYv26x/Y+38netm2Jkl3EU7J4kor0YAHg16WLg1vMHS2O7YYa4K6/HUm9hBu/eWMj SRNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZTjNhmf1oy7b85y5Zr1Dn0jFRNAxESMlm5L3fG3N2kc=; b=zcpMyJ3qLlhI+Ug6oXsAazgqvvTr1AEAZixCt21na87ILsDkt4o6kfvk7AJwDhS3mQ QWzSNWsJJZ4FTSRYkTxp78cJB3329tK+V/5Idguhe0QWqjCeVrE8i1iNnmsYGzkC4XR5 C/usqxQyAv9b7Z8u+upobIqdbikJ+DXYgQQvXc5eacYtyIhiHwuf7PxFZGkRYuUr6OsD YtpEdqU3xrNUWHRfXGw95mPWCWpfnFqCMw2kG15bzTLCmiDaKWUdBip1z49vOYJsxYE9 DlJ6rP05S2BeIwH3sY/oh0o4oETWQYPRYCcvFORxwmSozaoAVhllV1TTcbz2EwEdi3Un yapw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fWaGXBjv; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o4si13299978pji.139.2021.04.24.10.05.22; Sat, 24 Apr 2021 10:05:22 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fWaGXBjv; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233563AbhDXRFw (ORCPT + 6 others); Sat, 24 Apr 2021 13:05:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:47162 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233695AbhDXRFw (ORCPT ); Sat, 24 Apr 2021 13:05:52 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1218961465; Sat, 24 Apr 2021 17:05:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1619283913; bh=/gg9QgrfbTDcW6mVmEBbOwR2zIEkXRjmkFMFIZ3N5W0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fWaGXBjvL4YB2WeSxSNQv0+tYwnF8P8oZJK/21TCfXMKXB3yOWFVCeipZGwW3h7vA dXZqnyh9DavMODbfHR7XGTt4MhXbtSqvk4ynqTyJWPi0320n+/P79e8N3Y7esoN4Fm DvJBHp31W3SWarLoTSF7zHAlOLzeZEZzLdaGYPspjJ/TKuX6XA2TlLOoX+gJtgSzvh IzKjl8UrjFASgRxPPpa0bCUsWCmtWTVLWUex1K1zfav+mn+1YbcHj2v/g3Z/8hf73j y6K7kV+P1H8gS/vScIGSgyXLlWmYXIQkUBvjI3gLN0m1aD8T8MKVUlfnrDHm/cKA0b AEv8JUxBcJZeA== From: Jonathan Cameron To: linux-iio@vger.kernel.org, Rob Herring Cc: Lars-Peter Clausen , devicetree@vger.kernel.org, Jonathan Cameron , Michael Hennerich , kernel test robot Subject: [PATCH v3 1/2] iio:adc:ad7476: Handle the different regulators used by various parts. Date: Sat, 24 Apr 2021 18:03:45 +0100 Message-Id: <20210424170346.526242-2-jic23@kernel.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210424170346.526242-1-jic23@kernel.org> References: <20210424170346.526242-1-jic23@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Jonathan Cameron Not all of the parts supported by this driver use single supply. Hence we add chip_info fields to say what additional supplies exist and in the case of vref, ensure that is used for the reference voltage rather than vcc. One corner case is the ad7091r which has an internal reference that can be over-driven by an external reference connected on the vref pin. To handle that force_ext_vref is introduced and set if an optional vref regulator is present. Tested using really simple QEMU model and some fixed regulators. The devm_add_action_or_reset() callback is changed to take the regulator as it's parameter so we can use one callback for all the different regulators without having to store pointers to them in the iio_priv() structure. Signed-off-by: Jonathan Cameron Cc: Michael Hennerich Reported-by: kernel test robot --- drivers/iio/adc/ad7476.c | 116 ++++++++++++++++++++++++++++++++++----- 1 file changed, 101 insertions(+), 15 deletions(-) -- 2.31.1 diff --git a/drivers/iio/adc/ad7476.c b/drivers/iio/adc/ad7476.c index 9e9ff07cf972..22991cda932a 100644 --- a/drivers/iio/adc/ad7476.c +++ b/drivers/iio/adc/ad7476.c @@ -32,12 +32,14 @@ struct ad7476_chip_info { /* channels used when convst gpio is defined */ struct iio_chan_spec convst_channel[2]; void (*reset)(struct ad7476_state *); + bool has_vref; + bool has_vdrive; }; struct ad7476_state { struct spi_device *spi; const struct ad7476_chip_info *chip_info; - struct regulator *reg; + struct regulator *ref_reg; struct gpio_desc *convst_gpio; struct spi_transfer xfer; struct spi_message msg; @@ -52,13 +54,17 @@ struct ad7476_state { }; enum ad7476_supported_device_ids { + ID_AD7091, ID_AD7091R, + ID_AD7273, + ID_AD7274, ID_AD7276, ID_AD7277, ID_AD7278, ID_AD7466, ID_AD7467, ID_AD7468, + ID_AD7475, ID_AD7495, ID_AD7940, ID_ADC081S, @@ -145,8 +151,8 @@ static int ad7476_read_raw(struct iio_dev *indio_dev, GENMASK(st->chip_info->channel[0].scan_type.realbits - 1, 0); return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: - if (!st->chip_info->int_vref_uv) { - scale_uv = regulator_get_voltage(st->reg); + if (st->ref_reg) { + scale_uv = regulator_get_voltage(st->ref_reg); if (scale_uv < 0) return scale_uv; } else { @@ -187,13 +193,32 @@ static int ad7476_read_raw(struct iio_dev *indio_dev, BIT(IIO_CHAN_INFO_RAW)) static const struct ad7476_chip_info ad7476_chip_info_tbl[] = { + [ID_AD7091] = { + .channel[0] = AD7091R_CHAN(12), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .convst_channel[0] = AD7091R_CONVST_CHAN(12), + .convst_channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .reset = ad7091_reset, + }, [ID_AD7091R] = { .channel[0] = AD7091R_CHAN(12), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), .convst_channel[0] = AD7091R_CONVST_CHAN(12), .convst_channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .int_vref_uv = 2500000, + .has_vref = true, .reset = ad7091_reset, }, + [ID_AD7273] = { + .channel[0] = AD7940_CHAN(10), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .has_vref = true, + }, + [ID_AD7274] = { + .channel[0] = AD7940_CHAN(12), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .has_vref = true, + }, [ID_AD7276] = { .channel[0] = AD7940_CHAN(12), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), @@ -218,10 +243,17 @@ static const struct ad7476_chip_info ad7476_chip_info_tbl[] = { .channel[0] = AD7476_CHAN(8), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), }, + [ID_AD7475] = { + .channel[0] = AD7476_CHAN(12), + .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .has_vref = true, + .has_vdrive = true, + }, [ID_AD7495] = { .channel[0] = AD7476_CHAN(12), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), .int_vref_uv = 2500000, + .has_vdrive = true, }, [ID_AD7940] = { .channel[0] = AD7940_CHAN(14), @@ -254,6 +286,7 @@ static const struct ad7476_chip_info ad7476_chip_info_tbl[] = { [ID_LTC2314_14] = { .channel[0] = AD7940_CHAN(14), .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1), + .has_vref = true, }, }; @@ -263,15 +296,16 @@ static const struct iio_info ad7476_info = { static void ad7476_reg_disable(void *data) { - struct ad7476_state *st = data; + struct regulator *reg = data; - regulator_disable(st->reg); + regulator_disable(reg); } static int ad7476_probe(struct spi_device *spi) { struct ad7476_state *st; struct iio_dev *indio_dev; + struct regulator *reg; int ret; indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); @@ -282,19 +316,71 @@ static int ad7476_probe(struct spi_device *spi) st->chip_info = &ad7476_chip_info_tbl[spi_get_device_id(spi)->driver_data]; - st->reg = devm_regulator_get(&spi->dev, "vcc"); - if (IS_ERR(st->reg)) - return PTR_ERR(st->reg); + reg = devm_regulator_get(&spi->dev, "vcc"); + if (IS_ERR(reg)) + return PTR_ERR(reg); - ret = regulator_enable(st->reg); + ret = regulator_enable(reg); if (ret) return ret; - ret = devm_add_action_or_reset(&spi->dev, ad7476_reg_disable, - st); + ret = devm_add_action_or_reset(&spi->dev, ad7476_reg_disable, reg); if (ret) return ret; + /* Either vcc or vref (below) as appropriate */ + if (!st->chip_info->int_vref_uv) + st->ref_reg = reg; + + if (st->chip_info->has_vref) { + + /* If a device has an internal reference vref is optional */ + if (st->chip_info->int_vref_uv) { + reg = devm_regulator_get_optional(&spi->dev, "vref"); + } else { + reg = devm_regulator_get(&spi->dev, "vref"); + if (IS_ERR(reg)) + return PTR_ERR(reg); + } + + if (!IS_ERR(reg)) { + ret = regulator_enable(reg); + if (ret) + return ret; + + ret = devm_add_action_or_reset(&spi->dev, + ad7476_reg_disable, + reg); + if (ret) + return ret; + st->ref_reg = reg; + } else { + /* + * Can only get here if device supports both internal + * and external reference, but the regulator connected + * to the external reference is not connected. + * Set the reference regulator pointer to NULL to + * indicate this. + */ + st->ref_reg = NULL; + } + } + + if (st->chip_info->has_vdrive) { + reg = devm_regulator_get(&spi->dev, "vdrive"); + if (IS_ERR(reg)) + return PTR_ERR(reg); + + ret = regulator_enable(reg); + if (ret) + return ret; + + ret = devm_add_action_or_reset(&spi->dev, ad7476_reg_disable, + reg); + if (ret) + return ret; + } + st->convst_gpio = devm_gpiod_get_optional(&spi->dev, "adi,conversion-start", GPIOD_OUT_LOW); @@ -333,17 +419,17 @@ static int ad7476_probe(struct spi_device *spi) } static const struct spi_device_id ad7476_id[] = { - {"ad7091", ID_AD7091R}, + {"ad7091", ID_AD7091}, {"ad7091r", ID_AD7091R}, - {"ad7273", ID_AD7277}, - {"ad7274", ID_AD7276}, + {"ad7273", ID_AD7273}, + {"ad7274", ID_AD7274}, {"ad7276", ID_AD7276}, {"ad7277", ID_AD7277}, {"ad7278", ID_AD7278}, {"ad7466", ID_AD7466}, {"ad7467", ID_AD7467}, {"ad7468", ID_AD7468}, - {"ad7475", ID_AD7466}, + {"ad7475", ID_AD7475}, {"ad7476", ID_AD7466}, {"ad7476a", ID_AD7466}, {"ad7477", ID_AD7467}, From patchwork Sat Apr 24 17:03:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 426822 Delivered-To: patch@linaro.org Received: by 2002:a02:c901:0:0:0:0:0 with SMTP id t1csp2300247jao; Sat, 24 Apr 2021 10:05:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+JlMiMXKcvwuTLgT6EIQ2T1TRar42QFWYwqP8zqsitC9x/S/gFsuBR6uk5yCw/S5VSMs7 X-Received: by 2002:a17:902:b592:b029:ec:b451:5805 with SMTP id a18-20020a170902b592b02900ecb4515805mr9752086pls.72.1619283923578; Sat, 24 Apr 2021 10:05:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619283923; cv=none; d=google.com; s=arc-20160816; b=hnBvCXntky8RLWno1x1Z62vsL6mYLaEg/nU0HmBqybb/VBPg2dYN3kMMXs/ReSlnNV BK+q0T2rIWKaYzP3IHb6RnFnFqU4xVTualLLtzCIygb3YNO7kOxKKcyh845Li4QIV3H3 BpMlfTyDI0x/WJHo9b5lMh+7fa5DoIyX9tJeNCDXMbsWgyX/QTap2YFn/dfdTkVS9k3t wfr/DwF/Ds8vG5I06y+u3DKyUaZVXD3F3zRRIg6LKEbA+yp7WxF8V1qH3JsR6LbD+OgX +RLD4ZWxDXPfXahOoCPjix+c7FW+1Nrx0W2xYhVu9b4IHL2iG70cboCUPUBDAaNCRIRb q9pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ySXmv/4iqjv3yfhyzyrIpHUGUyOK3jXYqrDTP7CByQ0=; b=d9Cz2wSDe70WEuwXqT8SdurX68jInEOvLXHDo2LIpSKttR4ZYxO0eGaL8YkAw997WV jL0FaDdbk5nJi3AxkGAGjXZfixh9Vj5Gy8E5pF6rGKb9d7yRjsN+NXuaKj+s2U4Szow6 +e+aNVsIX00XodthcY75E4/6nKQiyNx+2VIjlfk9k6Q4KSJF25M8cmn0jLMcZDRoKGU3 w620LHwnAVmXKGzURFnJKwXl7y8ARHf4fWKaEY/CmxZhfS5guLm11SQeqzKZNEbIvY9b eTZA24p5No10rGTxvRNs7uhme1fd44+Hz791+nw+iN4ohgC01ddnJQPKHk0A4PIXMwvA tiPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=V6hwH693; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o4si13299978pji.139.2021.04.24.10.05.23; Sat, 24 Apr 2021 10:05:23 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=V6hwH693; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233684AbhDXRF5 (ORCPT + 6 others); Sat, 24 Apr 2021 13:05:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:47190 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233695AbhDXRFy (ORCPT ); Sat, 24 Apr 2021 13:05:54 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5846061466; Sat, 24 Apr 2021 17:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1619283916; bh=CIr0F/ldmetVzCY7jomzQI+Bkz6vdQinCpWv3hZwks4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=V6hwH693ybDOVZgz9EjZzCLrRYSvlKzUj80N0PYizNbVpw7fcC/2FlX4i67ijp3jS ypHJ7QX9/aaIt0QQSc6YEuemsQPRlib0/OjsHfmwEvujXnUsVZrUE7kYnOxBkT1z1w 0UAoI1SmW4URe3FZ+gOvf3YC2dylsIYb78HpQNvHz0HNmBPou0ZXLX6dJpsYZkF719 0MT0TN+MI9z2fbVvE5duA1/+i4/wmY6QOvlBM12/BcAsJuhHbDCL2R0lZRVbEuUmdI Pvpnt9wUVZjdsjnqwugMNTNz+3wbpFVTquLM5yofjrsbNodwPusetzbvAWSkUs0DK3 Wl8abSABNTG1Q== From: Jonathan Cameron To: linux-iio@vger.kernel.org, Rob Herring Cc: Lars-Peter Clausen , devicetree@vger.kernel.org, Jonathan Cameron , Michael Hennerich , Rob Herring Subject: [PATCH v3 2/2] dt-bindings:iio:adc:adi, ad7474: Add missing binding document Date: Sat, 24 Apr 2021 18:03:46 +0100 Message-Id: <20210424170346.526242-3-jic23@kernel.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210424170346.526242-1-jic23@kernel.org> References: <20210424170346.526242-1-jic23@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Jonathan Cameron This binding covers class of simple SPI ADCs which only provide data output - they don't have MOSI pin. The only real variation between them is over how many supplies they use and which one is used for the reference. Michael listed as maintainer for this one as it is his driver and falls under the catch all MAINTAINERS entry for ADI devices. Signed-off-by: Jonathan Cameron Cc: Michael Hennerich Reviewed-by: Rob Herring --- .../bindings/iio/adc/adi,ad7476.yaml | 174 ++++++++++++++++++ 1 file changed, 174 insertions(+) -- 2.31.1 diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml new file mode 100644 index 000000000000..cf711082ad7d --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml @@ -0,0 +1,174 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2019 Analog Devices Inc. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/adi,ad7476.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: AD7476 and similar simple SPI ADCs from multiple manufacturers. + +maintainers: + - Michael Hennerich + +description: | + A lot of simple SPI ADCs have very straight forward interfaces. + They typically don't provide a MOSI pin, simply reading out data + on MISO when the clock toggles. + +properties: + compatible: + enum: + - adi,ad7091 + - adi,ad7091r + - adi,ad7273 + - adi,ad7274 + - adi,ad7276 + - adi,ad7277 + - adi,ad7278 + - adi,ad7466 + - adi,ad7467 + - adi,ad7468 + - adi,ad7475 + - adi,ad7476 + - adi,ad7476a + - adi,ad7477 + - adi,ad7477a + - adi,ad7478 + - adi,ad7478a + - adi,ad7495 + - adi,ad7910 + - adi,ad7920 + - adi,ad7940 + - ti,adc081s + - ti,adc101s + - ti,adc121s + - ti,ads7866 + - ti,ads7867 + - ti,ads7868 + - lltc,ltc2314-14 + + reg: + maxItems: 1 + + vcc-supply: + description: + Main powersupply voltage for the chips, sometimes referred to as VDD on + datasheets. If there is no separate vref-supply, then this is needed + to establish channel scaling. + + vdrive-supply: + description: + Some devices have separate supply for their digital control side. + + vref-supply: + description: + Some devices have a specific reference voltage supplied on a different pin + to the other supplies. Needed to be able to establish channel scaling + unless there is also an internal reference available (e.g. ad7091r) + + spi-max-frequency: true + + adi,conversion-start-gpios: + description: A GPIO used to trigger the start of a conversion + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false + +allOf: + # Devices where reference is vcc + - if: + properties: + compatible: + contains: + enum: + - adi,ad7091 + - adi,ad7276 + - adi,ad7277 + - adi,ad7278 + - adi,ad7466 + - adi,ad7467 + - adi,ad7468 + - adi,ad7940 + - ti,adc081s + - ti,adc101s + - ti,adc121s + - ti,ads7866 + - ti,ads7868 + required: + - vcc-supply + # Devices with a vref + - if: + properties: + compatible: + contains: + enum: + - adi,ad7091r + - adi,ad7273 + - adi,ad7274 + - adi,ad7475 + - lltc,ltc2314-14 + then: + properties: + vref-supply: true + else: + properties: + vref-supply: false + # Devices with a vref where it is not optional + - if: + properties: + compatible: + contains: + enum: + - adi,ad7273 + - adi,ad7274 + - adi,ad7475 + - lltc,ltc2314-14 + then: + required: + - vref-supply + - if: + properties: + compatible: + contains: + enum: + - adi,ad7475 + - adi,ad7495 + then: + properties: + vdrive-supply: true + else: + properties: + vdrive-supply: false + - if: + properties: + compatible: + contains: + enum: + - adi,ad7091 + - adi,ad7091r + then: + properties: + adi,conversion-start-gpios: true + else: + properties: + adi,conversion-start-gpios: false + +examples: + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + adc@0 { + compatible = "adi,ad7091r"; + reg = <0>; + spi-max-frequency = <5000000>; + vcc-supply = <&adc_vcc>; + vref-supply = <&adc_vref>; + }; + }; +...