Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-21 Thread Jonathan Cameron
On Mon, 16 Apr 2018 16:00:44 +0200
Peter Rosin  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.
> > +
> > +SYSVADC   GND
> > +  +  + +
> > +  |  .-. | ..  |
> > +  '--| 200 |-+-| 22 |--'
> > + '-'   ''
> > +
> > +sysv {
> > +   compatible = "voltage-divider";
> > +   io-channels = < 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 majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-21 Thread Jonathan Cameron
On Mon, 16 Apr 2018 16:00:44 +0200
Peter Rosin  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.
> > +
> > +SYSVADC   GND
> > +  +  + +
> > +  |  .-. | ..  |
> > +  '--| 200 |-+-| 22 |--'
> > + '-'   ''
> > +
> > +sysv {
> > +   compatible = "voltage-divider";
> > +   io-channels = < 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 majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-16 Thread Peter Rosin
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.
> +
> +SYSVADC   GND
> +  +  + +
> +  |  .-. | ..  |
> +  '--| 200 |-+-| 22 |--'
> + '-'   ''
> +
> +sysv {
> + compatible = "voltage-divider";
> + io-channels = < 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


Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-16 Thread Peter Rosin
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.
> +
> +SYSVADC   GND
> +  +  + +
> +  |  .-. | ..  |
> +  '--| 200 |-+-| 22 |--'
> + '-'   ''
> +
> +sysv {
> + compatible = "voltage-divider";
> + io-channels = < 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


Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-13 Thread Rob Herring
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 
> ---
>  .../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 


Re: [PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-13 Thread Rob Herring
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 
> ---
>  .../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 


[PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-10 Thread Peter Rosin
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 
---
 .../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

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 ..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 = < 0>;
+
+   /* Divide the voltage by 330/100 (or 3.3) for the current. */
+   shunt-resistor-micro-ohms = <330>;
+};
+
+ {
+   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 ..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.
+
+SYSVADC   GND
+  +  + +
+  |  .-. | ..  |
+  '--| 200 |-+-| 22 |--'
+ '-'   ''
+
+sysv {
+   compatible = "voltage-divider";
+   io-channels = < 1>;
+
+   /* Multiply the ADC voltage by 222/22 to get the system voltage. */
+   numerator = <222>; /* 200 + 22 */
+   denominator = <22>;
+};
+
+ {
+   maxadc: adc@0 {
+   compatible = "maxim,max1027";
+   reg = <0>;
+   #io-channel-cells = <1>;
+   interrupt-parent = <>;
+   interrupts = <15 IRQ_TYPE_EDGE_RISING>;
+   spi-max-frequency = <100>;
+   };
+};
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 
+L: linux-...@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 
 M: Stanislaw Gruszka 
-- 
2.11.0



[PATCH v3 1/2] dt-bindings: iio: afe: add current-sense-shunt and voltage-divider

2018-04-10 Thread Peter Rosin
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 
---
 .../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

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 ..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 = < 0>;
+
+   /* Divide the voltage by 330/100 (or 3.3) for the current. */
+   shunt-resistor-micro-ohms = <330>;
+};
+
+ {
+   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 ..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.
+
+SYSVADC   GND
+  +  + +
+  |  .-. | ..  |
+  '--| 200 |-+-| 22 |--'
+ '-'   ''
+
+sysv {
+   compatible = "voltage-divider";
+   io-channels = < 1>;
+
+   /* Multiply the ADC voltage by 222/22 to get the system voltage. */
+   numerator = <222>; /* 200 + 22 */
+   denominator = <22>;
+};
+
+ {
+   maxadc: adc@0 {
+   compatible = "maxim,max1027";
+   reg = <0>;
+   #io-channel-cells = <1>;
+   interrupt-parent = <>;
+   interrupts = <15 IRQ_TYPE_EDGE_RISING>;
+   spi-max-frequency = <100>;
+   };
+};
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 
+L: linux-...@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 
 M: Stanislaw Gruszka 
-- 
2.11.0