Received: by 10.213.65.68 with SMTP id h4csp1228390imn; Sat, 24 Mar 2018 06:56:38 -0700 (PDT) X-Google-Smtp-Source: AG47ELtTMMCnI3Dr0OtHFxnLrTTLHqn6JoP2c+LmfBSui9ZHDMdTvlBxYc4/7cWDhrINduLzM9VN X-Received: by 10.101.91.3 with SMTP id y3mr23199768pgq.299.1521899798167; Sat, 24 Mar 2018 06:56:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521899798; cv=none; d=google.com; s=arc-20160816; b=TNnguQApKHAay6hbOFuQMuDO0lltI7sc9WTJ+SPzcmv2v3OlUhenwTNeDzYVGm97sp 9BkCkDI0AX6aVmUB/avzKGN3A2LnEhvmHisaWcf0ZogudAbHtXtpph+AtUcrAIWX6RGD P4Y2KJ/6iTqluyzzAQpxR9oDGErg576Gdiqi7LW3eBDemHF4KCoE3GbQPkh/Xr+l094T yNx6bFEF0G1pZvNWjvponclY8vZcKT8/IjIxrzOAIt94x/Bx856IeMBvIF9CKmqm6ilL XyCK5AODbxpfuLvBADtn74/5cLpKbelbIJZXibLbdRcA1ObgpMjwhVGqDaMCxc2UQeE4 +QRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dmarc-filter:arc-authentication-results; bh=NVJaw65hDDdDoPpqmdLO5Tdv2DjpcsIvScd6ByJt4/Y=; b=oHlZ8oT4AcAAcM+1YZQ8VGk1i5qU0RdzOUZxT7kNm6rqsR0NW459smmUNHnv6l74Ex v2qYxIb6alYN8iEtrnzvy9w2i15uJvnHLZA4dFuqlV9mcKerWA+HV1O22Sf5jJn/gXsV lfkpRlxuAb5yqPldKoLva/XzPYJQAtu5gVicnsdzfpxVnOmN9ZW1P1ILXieMkYtSCGsn HEAuMrw52bFznkiR43KcCHBkxuNCJY5RSbILaYoxSGLIlSShWahDOcnE1o79NkVLIvVE mq/FtYrtq8O58xOGfa3NuYhUgh3K7VZspkY9r7tKcorl1/4Qbwb9pvJNZrIS5lx4hC0F 9hKA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f30-v6si4441833plj.600.2018.03.24.06.55.52; Sat, 24 Mar 2018 06:56:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752230AbeCXNx1 (ORCPT + 99 others); Sat, 24 Mar 2018 09:53:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:39918 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751953AbeCXNx0 (ORCPT ); Sat, 24 Mar 2018 09:53:26 -0400 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 80E622172C; Sat, 24 Mar 2018 13:53:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 80E622172C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=jic23@kernel.org Date: Sat, 24 Mar 2018 13:53:19 +0000 From: Jonathan Cameron To: Peter Rosin Cc: linux-kernel@vger.kernel.org, Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Rob Herring , Mark Rutland , "David S. Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Linus Walleij , Randy Dunlap , linux-iio@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH 2/3] dt-bindings: iio: wrapper: add io-channel-unit-converter Message-ID: <20180324135319.4ba6ce92@archlinux> In-Reply-To: <20180319170246.26830-3-peda@axentia.se> References: <20180319170246.26830-1-peda@axentia.se> <20180319170246.26830-3-peda@axentia.se> X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 19 Mar 2018 18:02:45 +0100 Peter Rosin wrote: > Allow linear scaling and modification of the type of an io-channel. > > When an ADC channel measures the midpoint of a voltage divider, the > interesting voltage is often the voltage over the full resistance > of the divider. Likewise, measuring the voltage over a resistor is > often a way to get to the current through it. > > This binding allows description of such hardware which is external > to the ADC. > > Signed-off-by: Peter Rosin > --- > .../iio/wrapper/io-channel-unit-converter.txt | 84 ++++++++++++++++++++++ Hmm. I'm not convinced by the naming really though I can see where you care coming from as it can effectively use a voltage ADC to measure a current. Lets see if the devicetree people or anyone else has a suggestion on this. Could go with AFE as that is how a chip doing this would normally be described. It's just that here we are doing it in old fashioned resistors... There are a few unusual elements in here binding wise so definitely looking for input on the bindings! Thanks, Jonathan > MAINTAINERS | 6 ++ > 2 files changed, 90 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/wrapper/io-channel-unit-converter.txt > > diff --git a/Documentation/devicetree/bindings/iio/wrapper/io-channel-unit-converter.txt b/Documentation/devicetree/bindings/iio/wrapper/io-channel-unit-converter.txt > new file mode 100644 > index 000000000000..23af661abe32 > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/wrapper/io-channel-unit-converter.txt > @@ -0,0 +1,84 @@ > +I/O channel unit converter bindings > + > +Allow linear scaling and modification of the type of an io-channel. I can certainly conceive that we will have simple non linear cases in future though they get awfully hard to describe so we can tackle that when it happens. > + > +When an ADC channel measures the midpoint of a voltage divider, the > +interesting voltage is often the voltage over the full resistance > +of the divider. Likewise, measuring the voltage over a resistor is > +often a way to get to the current through it. > + > +Required properties: > +- compatible : "io-channel-unit-converter" > +- io-channels : Channel node of the parent channel. > +- io-channel-names : Should be "parent". > + > +Optional properties: > +- numerator : The parent channel scale is multiplied by this value (default 1). > +- denominator : The parent channel scale is divided by this value (default 1). > +- type : The type of the wrapped channel is modified to this type. The default > + is to use the same type as the parent channel. Recognized types are: > + "voltage" > + "current" > + > +Example 1: > +The system voltage is circa 12V, but divided down with a 22/200 > +voltage divider to adjust it to the ADC range. > + > +SYSV ADC GND > + + + + > + | .-----. | .----. | > + '--| 200 |-+-| 22 |--' > + '-----' '----' > + > +sysv { > + compatible = "io-channel-unit-converter"; > + io-channles = <&maxadc 1>; > + io-channel-names = "parent"; > + > + /* multiply the ADC voltage by 222/22 to get the system voltage */ > + numerator = <222>; /* 200 + 22 */ > + denominator = <22>; > +} > + > +&spi { > + maxadc: adc@0 { > + compatible = "maxim,max1027"; > + reg = <0>; > + #io-channel-cells = <1>; > + interrupt-parent = <&gpio5>; > + interrupts = <15 IRQ_TYPE_EDGE_RISING>; > + spi-max-frequency = <1000000>; > + }; > +}; > + > +Example 2: > +The system current is measured by measuring the voltage over a > +3.3 ohm resistor. > + > +sysi { > + compatible = "io-channel-unit-converter"; > + io-channles = <&tiadc 0>; > + io-channel-names = "parent"; > + > + /* divide the ADC voltage by 33/10 (i.e. 3.3) to get current */ > + numerator = <10>; > + denominator = <33>; > + type = "current"; > +} > + > +&i2c { > + tiadc: adc@48 { > + compatible = "ti,ads1015"; > + reg = <0x48>; > + #io-channel-cells = <1>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + channel@0 { /* IN0,IN1 differential */ > + reg = <0>; > + ti,gain = <1>; > + ti,datarate = <4>; > + }; > + }; > +}; > diff --git a/MAINTAINERS b/MAINTAINERS > index 96e5503bfb60..5dd555c7b1b0 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -6884,6 +6884,12 @@ F: drivers/staging/iio/ > F: include/linux/iio/ > F: tools/iio/ > > +IIO UNIT CONVERTER > +M: Peter Rosin > +L: linux-iio@vger.kernel.org > +S: Maintained > +F: Documentation/devicetree/bindings/iio/wrapper/io-channel-unit-converter.txt > + > IKANOS/ADI EAGLE ADSL USB DRIVER > M: Matthieu Castet > M: Stanislaw Gruszka