Message ID | 20180410152802.30958-2-peda@axentia.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 10, 2018 at 05:28:01PM +0200, Peter Rosin wrote: > An ADC is often used to measure other quantities indirectly. These > bindings describe two cases, a current through a shunt resistor, and > a "big" voltage measured with the help of a voltage divider. > > Signed-off-by: Peter Rosin <peda@axentia.se> > --- > .../bindings/iio/afe/current-sense-shunt.txt | 41 ++++++++++++++++++++ > .../bindings/iio/afe/voltage-divider.txt | 45 ++++++++++++++++++++++ > MAINTAINERS | 7 ++++ > 3 files changed, 93 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt > create mode 100644 Documentation/devicetree/bindings/iio/afe/voltage-divider.txt Reviewed-by: Rob Herring <robh@kernel.org> -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2018-04-10 17:28, Peter Rosin wrote: > +Example: > +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 = "voltage-divider"; > + io-channels = <&maxadc 1>; > + > + /* Multiply the ADC voltage by 222/22 to get the system voltage. */ > + numerator = <222>; /* 200 + 22 */ > + denominator = <22>; > +}; While I already got a reviewed-by from Rob, and maybe I shouldn't be stirring the pot, but I had an umpteenth look and I now think this one looks a bit odd. It shows a bit that it originates from when the compatible was the very generic "io-channel-unit-converter" in v1 of the series. What I mean is that a voltage divider presumable always gets you a lower voltage. Therefore, one would assume that the denominator should be larger than the numerator. The fact that this translates into the inverted fraction when calculating backwards through the voltage divider should probably not affect the binding. So, in the above example, I think it would make more sense to have numerator = <22>; denominator = <222>; /* 200 + 22 */ (and then, naturally, adjust the driver to invert the fraction) Comments? Cheers, Peter -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 16 Apr 2018 16:00:44 +0200 Peter Rosin <peda@axentia.se> wrote: > On 2018-04-10 17:28, Peter Rosin wrote: > > +Example: > > +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 = "voltage-divider"; > > + io-channels = <&maxadc 1>; > > + > > + /* Multiply the ADC voltage by 222/22 to get the system voltage. */ > > + numerator = <222>; /* 200 + 22 */ > > + denominator = <22>; > > +}; > > While I already got a reviewed-by from Rob, and maybe I shouldn't be > stirring the pot, but I had an umpteenth look and I now think this > one looks a bit odd. It shows a bit that it originates from when the > compatible was the very generic "io-channel-unit-converter" in v1 > of the series. What I mean is that a voltage divider presumable always > gets you a lower voltage. Therefore, one would assume that the > denominator should be larger than the numerator. The fact that this > translates into the inverted fraction when calculating backwards > through the voltage divider should probably not affect the binding. > > So, in the above example, I think it would make more sense to have > > numerator = <22>; > denominator = <222>; /* 200 + 22 */ > > (and then, naturally, adjust the driver to invert the fraction) > > Comments? Agreed - it is odd as we currently have it. I wouldn't have a particular problem with renaming this compatible as voltage scaler (voltage multiplier has a specific meaning we should avoid stepping on!) Anyhow, either way is fine with me, but I agree the current version is odd. Jonathan > > Cheers, > Peter > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt b/Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt new file mode 100644 index 000000000000..4d842aa85040 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt @@ -0,0 +1,41 @@ +Current Sense Shunt +=================== + +When an io-channel measures the voltage over a current sense shunt, +the interesting mesaurement is almost always the current through the +shunt, not the voltage over it. This binding describes such a current +sense circuit. + +Required properties: +- compatible : "current-sense-shunt" +- io-channels : Channel node of a voltage io-channel. +- shunt-resistor-micro-ohms : The shunt resistance in microohms. + +Example: +The system current is measured by measuring the voltage over a +3.3 ohms shunt resistor. + +sysi { + compatible = "current-sense-shunt"; + io-channels = <&tiadc 0>; + + /* Divide the voltage by 3300000/1000000 (or 3.3) for the current. */ + shunt-resistor-micro-ohms = <3300000>; +}; + +&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/Documentation/devicetree/bindings/iio/afe/voltage-divider.txt b/Documentation/devicetree/bindings/iio/afe/voltage-divider.txt new file mode 100644 index 000000000000..fd4a215d9e6d --- /dev/null +++ b/Documentation/devicetree/bindings/iio/afe/voltage-divider.txt @@ -0,0 +1,45 @@ +Voltage divider +=============== + +When an io-channel measures the midpoint of a voltage divider, the +interesting voltage is often the voltage over the full resistance +of the divider. This binding describes the voltage divider in such +a curcuit. + +Required properties: +- compatible : "voltage-divider" +- io-channels : Channel node of a voltage io-channel. + +Optional properties: +- numerator : The io-channel scale is multiplied by this value (default 1). +- denominator : The io-channel scale is divided by this value (default 1). + +Example: +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 = "voltage-divider"; + io-channels = <&maxadc 1>; + + /* 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>; + }; +}; diff --git a/MAINTAINERS b/MAINTAINERS index 6e950b8b4a41..237fcdfdddc6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6887,6 +6887,13 @@ F: drivers/staging/iio/ F: include/linux/iio/ F: tools/iio/ +IIO UNIT CONVERTER +M: Peter Rosin <peda@axentia.se> +L: linux-iio@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt +F: Documentation/devicetree/bindings/iio/afe/voltage-divider.txt + IKANOS/ADI EAGLE ADSL USB DRIVER M: Matthieu Castet <castet.matthieu@free.fr> M: Stanislaw Gruszka <stf_xl@wp.pl>
An ADC is often used to measure other quantities indirectly. These bindings describe two cases, a current through a shunt resistor, and a "big" voltage measured with the help of a voltage divider. Signed-off-by: Peter Rosin <peda@axentia.se> --- .../bindings/iio/afe/current-sense-shunt.txt | 41 ++++++++++++++++++++ .../bindings/iio/afe/voltage-divider.txt | 45 ++++++++++++++++++++++ MAINTAINERS | 7 ++++ 3 files changed, 93 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/afe/current-sense-shunt.txt create mode 100644 Documentation/devicetree/bindings/iio/afe/voltage-divider.txt