From patchwork Sun Apr 18 22:49:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stankus X-Patchwork-Id: 12210457 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A44F2C433B4 for ; Sun, 18 Apr 2021 22:49:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7FFF861090 for ; Sun, 18 Apr 2021 22:49:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232588AbhDRWu0 (ORCPT ); Sun, 18 Apr 2021 18:50:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232023AbhDRWuZ (ORCPT ); Sun, 18 Apr 2021 18:50:25 -0400 Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91AAFC06174A; Sun, 18 Apr 2021 15:49:56 -0700 (PDT) Received: by mail-qv1-xf2c.google.com with SMTP id er3so7567839qvb.6; Sun, 18 Apr 2021 15:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=mkWQYP2tGzlG7VW0VXji+4s6uOm8qB8eLk1wC3hc8NE=; b=n6L+IVRzZwoOD/u/etS3e7RW+7UFOV9SsT5UAxyOlNVdUrd3W39L6zTrIgK5vRThUT MW2KxuMTSgwlVekgym0FyLR7uyynpaHP9LDkCetx6oYa1Q0hCftOfYri3VK3V4VnYs/h yYD33HnrQ4rmnF7q5wyZE6jz8kuZ1GjhRT8sTynSjhlnYW/FLEpGlAJoZFMIvH6xFP+K 3RvEaja067fgjUShRTisjmglnzEA4uLGfkF4b5fUf7Z6+GTHtk6ViocGXxynfwMX7pog rqSeIR5I9aXIguYMstjrssUfHwj1Zob0owOjXNTuswrUkSwOf0uNH+bCtFyxKV+Yrzfx yXFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=mkWQYP2tGzlG7VW0VXji+4s6uOm8qB8eLk1wC3hc8NE=; b=m5n5406grUxA+6p6lAolFY6mje/xSP40MIh8e/EluUvCCf/1dx9BrS0Ncm8R03vZsh oo6KuhsE8+6NFPmc3FhaDzuJbCo8Mtqq2C3SXFM0Dz8L4pD2EABNf2fBdChe7X+H/rQm APHqQCKAysAfce5vS89yWsaDvmbLC7bul/UVbp2XSCMA10Qj6oRa/z0o9NQf24JDSgke MT/9JTgrZtml+W5yrZynPzrGd068crGWIRIEBxPcn+X5EJpEfs+1XGuoiNBtng39yFu5 yA+ESyKWi9rztfmBuHRfr3oc/7lYha5nnll/xeP77Q8ZFiUTasefBi0DBsbROvIeCNFQ GYdw== X-Gm-Message-State: AOAM5306ToQ3vjwxRhh4yVKCHEIUZIniAfq2bWyjYB8UgEew50Tp8jiS 5y9LhaK7NjCMbGlloH6YIBAqxyVIpzTJdBsl X-Google-Smtp-Source: ABdhPJz/43wwZq2AVnaKseGvzyK3m7Ljh2nMRkBjdBwshuNUT9BI1KU/XZarclwYW/XmFcW7HbFAJw== X-Received: by 2002:a0c:be92:: with SMTP id n18mr18993119qvi.31.1618786195941; Sun, 18 Apr 2021 15:49:55 -0700 (PDT) Received: from smtp.gmail.com ([2804:14c:73:9a01::1003]) by smtp.gmail.com with ESMTPSA id f22sm1225081qkm.134.2021.04.18.15.49.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Apr 2021 15:49:55 -0700 (PDT) Date: Sun, 18 Apr 2021 19:49:51 -0300 From: Lucas Stankus To: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org, gregkh@linuxfoundation.org Cc: linux-iio@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v2 1/2] dt-bindings: staging: iio: cdc: ad7746: add binding documentation for AD7746 Message-ID: <54a9eaeaa42d47037b2a07bd933e6dfade745d02.1618785336.git.lucas.p.stankus@gmail.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Add device tree binding documentation for AD7746 cdc in YAML format. Signed-off-by: Lucas Stankus --- A minor note about the adi,excitation-vdd-permille property. Jonathan suggested the name to be adi,excitation-vdd-milicent, but I was unsure of the milicent naming. With a quick search I found out that the common way to call a thousandth is 'per mille'[1], but I didn't find any use of it in the kernel documentation. Any thoughts about it? [1] https://en.wikipedia.org/wiki/Per_mille .../bindings/iio/cdc/adi,ad7746.yaml | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/cdc/adi,ad7746.yaml diff --git a/Documentation/devicetree/bindings/iio/cdc/adi,ad7746.yaml b/Documentation/devicetree/bindings/iio/cdc/adi,ad7746.yaml new file mode 100644 index 000000000000..a2a7eee674ba --- /dev/null +++ b/Documentation/devicetree/bindings/iio/cdc/adi,ad7746.yaml @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/cdc/adi,ad7746.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: AD7746 24-Bit Capacitance-to-Digital Converter with Temperature Sensor + +maintainers: + - Michael Hennerich + +description: | + AD7746 24-Bit Capacitance-to-Digital Converter with Temperature Sensor + + Specifications about the part can be found at: + https://www.analog.com/media/en/technical-documentation/data-sheets/ad7291.pdf + +properties: + compatible: + enum: + - adi,ad7745 + - adi,ad7746 + - adi,ad7747 + + reg: + maxItems: 1 + + adi,excitation-vdd-permille: + description: | + Set VDD per mille to be used as the excitation voltage. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [125, 250, 375, 500] + + adi,exca-output-en: + description: Enables the EXCA pin as the excitation output. + type: boolean + + adi,exca-output-invert: + description: Inverts the excitation output in the EXCA pin. + type: boolean + + adi,excb-output-en: + description: Enables the EXCB pin as the excitation output. + type: boolean + + adi,excb-output-invert: + description: Inverts the excitation output in the EXCB pin. + type: boolean + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + ad7746: cdc@48 { + compatible = "adi,ad7746"; + reg = <0x48>; + adi,excitation-vdd-permille = <125>; + + adi,exca-output-en; + adi,exca-output-invert; + adi,excb-output-en; + adi,excb-output-invert; + }; + }; +... From patchwork Sun Apr 18 22:50:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stankus X-Patchwork-Id: 12210459 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B269C433ED for ; Sun, 18 Apr 2021 22:50:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 42C066109F for ; Sun, 18 Apr 2021 22:50:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232880AbhDRWuo (ORCPT ); Sun, 18 Apr 2021 18:50:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232023AbhDRWuo (ORCPT ); Sun, 18 Apr 2021 18:50:44 -0400 Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B0CAC06174A; Sun, 18 Apr 2021 15:50:15 -0700 (PDT) Received: by mail-qk1-x733.google.com with SMTP id h13so15530018qka.2; Sun, 18 Apr 2021 15:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=wcWDiwCpYfyH8K6iVxPxXWa9oUIaLJ4C5jPgocQtTJM=; b=UXO/9nEbAZqN+HAFONizIKnHQ9c7OPry28nC7S6rFPREijaRAPi80t5pV0oVgSR7CC DWWGu1rE24g+v0z1j+ISNIINKYoP528Al5PggpIA8xTyf4eIuTLAyLlmdLSvOymsXHoq BcB+HU64/keoS+i+f4BQTTJ7P/0uK02pgpF+J9G9+j4wkjLbcZNNq2CUo+hpYoSk1h6b TA9JeEyWWK0h1YbRcZLkiCmd0I2Ys0+rL5cti0o0nA2dCxTH40ib6nUPpYvxmzrRFa+V kIC/oSKSEx0/t4YlpiKw0UFqicbSFeOP2saafNH9GPCCd38ccHD+3/DKbyGh/4eHxF1/ 3vnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=wcWDiwCpYfyH8K6iVxPxXWa9oUIaLJ4C5jPgocQtTJM=; b=H2Uz5oOfPheDU3uet0ppeq/vjtenUBJI/QspzjCYmI6+FkBou9D4bz/CABRGWN6uHh jfat4P0QwBvSb6MCIVkikbfWqhSBox8pPuPZKMXQD3i0cxsI2uDqTFnHgIa645ow2jon 2p+P1baZsQ8R8zAZ5F81Zy0AqwoPjNx6S2DnM9r9NUuGiSJUiz2ADRed0Gfq4sv0Mkn7 NpT6Afwd69+pbZMCFxP+SO5hHFa4dO5tPkA14B3VlBEaC8eoEiiXLSSHFBDYk1tonGE5 Zaozyn1wXljgwYpK8RvbkWZLoISa4HgscViIVtQgQ+IiiyNomqbHZKO39vt3TNNjZPpB W3Lg== X-Gm-Message-State: AOAM531L5NJSHvdzVyxOA/fq67DrnTcqpjM4de1zmGrvvBbwkY5HaHg/ XaSb2r8cyhvtPqsy03Fgicg= X-Google-Smtp-Source: ABdhPJxvsPAWqwC91PTtKTHRNbJG429ZsUwL6xQuo8e7mJ7qovTlSlh8Y9E2s22RSAwPsLz6Ay6xDQ== X-Received: by 2002:a37:848:: with SMTP id 69mr391976qki.119.1618786214698; Sun, 18 Apr 2021 15:50:14 -0700 (PDT) Received: from smtp.gmail.com ([2804:14c:73:9a01::1003]) by smtp.gmail.com with ESMTPSA id l14sm4785974qkp.56.2021.04.18.15.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Apr 2021 15:50:14 -0700 (PDT) Date: Sun, 18 Apr 2021 19:50:10 -0300 From: Lucas Stankus To: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org, gregkh@linuxfoundation.org Cc: linux-iio@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v2 2/2] staging: iio: cdc: ad7746: use dt for capacitive channel setup. Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Ditch platform_data fields in favor of device tree properties for configuring EXCA and EXCB output pins and setting the capacitive channel excitation level. As this covers all current use cases for the platform_data struct, remove ad7746.h header file since it's no longer needed. Signed-off-by: Lucas Stankus --- Changes in v2: Previously this change set was composed of two patches, but it lead to regressions between the two. Merging them avoids the unwanted behaviour without having to deal with the special cases. drivers/staging/iio/cdc/ad7746.c | 42 +++++++++++++++----------------- drivers/staging/iio/cdc/ad7746.h | 28 --------------------- 2 files changed, 19 insertions(+), 51 deletions(-) delete mode 100644 drivers/staging/iio/cdc/ad7746.h diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c index dfd71e99e872..c0e84c1cf4f1 100644 --- a/drivers/staging/iio/cdc/ad7746.c +++ b/drivers/staging/iio/cdc/ad7746.c @@ -18,8 +18,6 @@ #include #include -#include "ad7746.h" - /* * AD7746 Register Definition */ @@ -66,7 +64,7 @@ #define AD7746_EXCSETUP_NEXCB BIT(4) #define AD7746_EXCSETUP_EXCA BIT(3) #define AD7746_EXCSETUP_NEXCA BIT(2) -#define AD7746_EXCSETUP_EXCLVL(x) (((x) & 0x3) << 0) +#define AD7746_EXCSETUP_EXCLVL(x) (((x) >> 7) & 0x3) /* Config Register Bit Designations (AD7746_REG_CFG) */ #define AD7746_CONF_VTFS_SHIFT 6 @@ -676,10 +674,11 @@ static const struct iio_info ad7746_info = { static int ad7746_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct ad7746_platform_data *pdata = client->dev.platform_data; + struct device *dev = &client->dev; struct ad7746_chip_info *chip; struct iio_dev *indio_dev; unsigned char regval = 0; + unsigned int vdd_permille; int ret = 0; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip)); @@ -703,28 +702,25 @@ static int ad7746_probe(struct i2c_client *client, indio_dev->num_channels = ARRAY_SIZE(ad7746_channels); indio_dev->modes = INDIO_DIRECT_MODE; - if (pdata) { - if (pdata->exca_en) { - if (pdata->exca_inv_en) - regval |= AD7746_EXCSETUP_NEXCA; - else - regval |= AD7746_EXCSETUP_EXCA; - } - - if (pdata->excb_en) { - if (pdata->excb_inv_en) - regval |= AD7746_EXCSETUP_NEXCB; - else - regval |= AD7746_EXCSETUP_EXCB; - } + if (device_property_read_bool(dev, "adi,exca-output-en")) { + if (device_property_read_bool(dev, "adi,exca-output-invert")) + regval |= AD7746_EXCSETUP_NEXCA; + else + regval |= AD7746_EXCSETUP_EXCA; + } - regval |= AD7746_EXCSETUP_EXCLVL(pdata->exclvl); - } else { - dev_warn(&client->dev, "No platform data? using default\n"); - regval = AD7746_EXCSETUP_EXCA | AD7746_EXCSETUP_EXCB | - AD7746_EXCSETUP_EXCLVL(3); + if (device_property_read_bool(dev, "adi,excb-output-en")) { + if (device_property_read_bool(dev, "adi,excb-output-invert")) + regval |= AD7746_EXCSETUP_NEXCB; + else + regval |= AD7746_EXCSETUP_EXCB; } + ret = device_property_read_u32(dev, "adi,excitation-vdd-permille", + &vdd_permille); + if (!ret) + regval |= AD7746_EXCSETUP_EXCLVL(vdd_permille); + ret = i2c_smbus_write_byte_data(chip->client, AD7746_REG_EXC_SETUP, regval); if (ret < 0) diff --git a/drivers/staging/iio/cdc/ad7746.h b/drivers/staging/iio/cdc/ad7746.h deleted file mode 100644 index 8bdbd732dbbd..000000000000 --- a/drivers/staging/iio/cdc/ad7746.h +++ /dev/null @@ -1,28 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * AD7746 capacitive sensor driver supporting AD7745, AD7746 and AD7747 - * - * Copyright 2011 Analog Devices Inc. - */ - -#ifndef IIO_CDC_AD7746_H_ -#define IIO_CDC_AD7746_H_ - -/* - * TODO: struct ad7746_platform_data needs to go into include/linux/iio - */ - -#define AD7466_EXCLVL_0 0 /* +-VDD/8 */ -#define AD7466_EXCLVL_1 1 /* +-VDD/4 */ -#define AD7466_EXCLVL_2 2 /* +-VDD * 3/8 */ -#define AD7466_EXCLVL_3 3 /* +-VDD/2 */ - -struct ad7746_platform_data { - unsigned char exclvl; /*Excitation Voltage Level */ - bool exca_en; /* enables EXCA pin as the excitation output */ - bool exca_inv_en; /* enables /EXCA pin as the excitation output */ - bool excb_en; /* enables EXCB pin as the excitation output */ - bool excb_inv_en; /* enables /EXCB pin as the excitation output */ -}; - -#endif /* IIO_CDC_AD7746_H_ */