2018-10-19 07:48:56

by Stefan Popa

[permalink] [raw]
Subject: [PATCH v2 3/3] dt-bindings: iio: adc: Add docs for ad7124

Add support for Analog Devices AD7124 4-channels and 8-channels ADC.

Signed-off-by: Stefan Popa <[email protected]>
---
Changes in v2:
- Nothing changed.

.../devicetree/bindings/iio/adc/adi,ad7124.txt | 96 ++++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 97 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
new file mode 100644
index 0000000..77a7b92
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
@@ -0,0 +1,96 @@
+Analog Devices AD7124 ADC device driver
+
+Required properties for the AD7124:
+ - compatible: Must be one of "adi,ad7124-4" or "adi,ad7124-8"
+ - reg: SPI chip select number for the device
+ - spi-max-frequency: Max SPI frequency to use
+ see: Documentation/devicetree/bindings/spi/spi-bus.txt
+ - clocks: phandle to the master clock (mclk)
+ see: Documentation/devicetree/bindings/clock/clock-bindings.txt
+ - clock-names: Must be "mclk".
+ - interrupts: IRQ line for the ADC
+ see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+
+ - adi,channels: List of external channels connected to the ADC:
+ Required properties:
+ * #address-cells: Must be 2.
+ * #size-cells: Must be 0.
+
+ The child nodes of this node represent the external channels which are
+ connected to the ADC.
+
+ Each child node represents one channel and has the following
+ properties:
+ Required properties:
+ * reg: Pins the channel is connected to. The first value specifies
+ the positive input pin, the second value the negative input pin.
+ * adi,channel-number: It can have up to 4 channels on ad7124-4 and
+ 8 channels on ad7124-8, numbered from 0 to 15.
+
+ Optional properties:
+ * adi,bipolar: If set the channel is used in bipolar mode.
+ * adi,reference-select: Select the reference source to use when
+ converting on the the specific channel. Valid values are:
+ 0: REFIN1(+)/REFIN1(−).
+ 1: REFIN2(+)/REFIN2(−).
+ 3: AVDD
+ If this field is left empty, internal reference is selected.
+ * adi,gain: Select the gain when converting on the specific channel.
+ Valid values are: 1, 2, 4, 8, 16, 32, 64, 128.
+ If this field is left empty, gain of 1 is selected.
+ * adi,odr-hz: The output data rate can be programmed from:
+ 9 to 19200 for full power mode (when the master clock is 614.4 kHz)
+ 2 to 4800 for mid power mode (when the master clock is 153.6 kHz)
+ 1 to 2400 for low power mode (when the master clock is 76.8 kHz)
+ If this field is left empty, odr of 9 is selected.
+
+Optional properties:
+ - refin1-supply: refin1 supply can be used as reference for conversion.
+ - refin2-supply: refin2 supply can be used as reference for conversion.
+ - avdd-supply: avdd supply can be used as reference for conversion.
+
+Example:
+ adc@0 {
+ compatible = "adi,ad7124-4";
+ reg = <0>;
+ spi-max-frequency = <5000000>;
+ interrupts = <25 2>;
+ interrupt-parent = <&gpio>;
+ refin1-supply = <&adc_vref>;
+ clocks = <&ad7124_mclk>;
+ clock-names = "mclk";
+
+ adi,channels {
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ channel@0 {
+ reg = <0 1>;
+ adi,channel-number = <0>;
+ adi,reference-select = <0>;
+ adi,gain = <2>;
+ adi,odr-hz = <10>;
+ };
+
+ channel@1 {
+ reg = <2 3>;
+ adi,bipolar;
+ adi,channel-number = <1>;
+ adi,reference-select = <0>;
+ adi,gain = <4>;
+ adi,odr-hz = <50>;
+ };
+
+ channel@2 {
+ reg = <4 5>;
+ adi,channel-number = <2>;
+ adi,gain = <128>;
+ adi,odr-hz = <19200>;
+ };
+
+ channel@3 {
+ reg = <6 7>;
+ adi,channel-number = <3>;
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 3a1bfcb..f2fa508 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -845,6 +845,7 @@ L: [email protected]
W: http://ez.analog.com/community/linux-device-drivers
S: Supported
F: drivers/iio/adc/ad7124.c
+F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt

ANALOG DEVICES INC AD9389B DRIVER
M: Hans Verkuil <[email protected]>
--
2.7.4



2018-10-21 14:06:14

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] dt-bindings: iio: adc: Add docs for ad7124

On Fri, 19 Oct 2018 10:47:45 +0300
Stefan Popa <[email protected]> wrote:

> Add support for Analog Devices AD7124 4-channels and 8-channels ADC.
>
> Signed-off-by: Stefan Popa <[email protected]>

I'm not certain on how to do reg for the channels. Input from
Devicetree people please!

Given I would imagine this is very similar to some previous parts, it
might help to have a cross reference in the description.

Thanks,

Jonathan

> ---
> Changes in v2:
> - Nothing changed.
>
> .../devicetree/bindings/iio/adc/adi,ad7124.txt | 96 ++++++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 97 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> new file mode 100644
> index 0000000..77a7b92
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> @@ -0,0 +1,96 @@
> +Analog Devices AD7124 ADC device driver
> +
> +Required properties for the AD7124:
> + - compatible: Must be one of "adi,ad7124-4" or "adi,ad7124-8"
> + - reg: SPI chip select number for the device
> + - spi-max-frequency: Max SPI frequency to use
> + see: Documentation/devicetree/bindings/spi/spi-bus.txt
> + - clocks: phandle to the master clock (mclk)
> + see: Documentation/devicetree/bindings/clock/clock-bindings.txt
> + - clock-names: Must be "mclk".
> + - interrupts: IRQ line for the ADC
> + see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
> +
> + - adi,channels: List of external channels connected to the ADC:
> + Required properties:
> + * #address-cells: Must be 2.
> + * #size-cells: Must be 0.
> +
> + The child nodes of this node represent the external channels which are
> + connected to the ADC.
> +
> + Each child node represents one channel and has the following
> + properties:
> + Required properties:
> + * reg: Pins the channel is connected to. The first value specifies
> + the positive input pin, the second value the negative input pin.
> + * adi,channel-number: It can have up to 4 channels on ad7124-4 and
> + 8 channels on ad7124-8, numbered from 0 to 15.
> +
> + Optional properties:
> + * adi,bipolar: If set the channel is used in bipolar mode.
> + * adi,reference-select: Select the reference source to use when
> + converting on the the specific channel. Valid values are:
> + 0: REFIN1(+)/REFIN1(−).
> + 1: REFIN2(+)/REFIN2(−).
> + 3: AVDD
> + If this field is left empty, internal reference is selected.
> + * adi,gain: Select the gain when converting on the specific channel.
> + Valid values are: 1, 2, 4, 8, 16, 32, 64, 128.
> + If this field is left empty, gain of 1 is selected.
> + * adi,odr-hz: The output data rate can be programmed from:
> + 9 to 19200 for full power mode (when the master clock is 614.4 kHz)
> + 2 to 4800 for mid power mode (when the master clock is 153.6 kHz)
> + 1 to 2400 for low power mode (when the master clock is 76.8 kHz)
> + If this field is left empty, odr of 9 is selected.
> +
> +Optional properties:
> + - refin1-supply: refin1 supply can be used as reference for conversion.
> + - refin2-supply: refin2 supply can be used as reference for conversion.
> + - avdd-supply: avdd supply can be used as reference for conversion.
> +
> +Example:
> + adc@0 {
> + compatible = "adi,ad7124-4";
> + reg = <0>;
> + spi-max-frequency = <5000000>;
> + interrupts = <25 2>;
> + interrupt-parent = <&gpio>;
> + refin1-supply = <&adc_vref>;
> + clocks = <&ad7124_mclk>;
> + clock-names = "mclk";
> +
> + adi,channels {
> + #address-cells = <2>;
> + #size-cells = <0>;
> +
> + channel@0 {
> + reg = <0 1>;
Normally we'd use the value of reg in the @.

I'm not actually sure what we do when there are two reg values
and they have no particular precedence.. Rob?

> + adi,channel-number = <0>;
> + adi,reference-select = <0>;
> + adi,gain = <2>;
> + adi,odr-hz = <10>;
> + };
> +
> + channel@1 {
> + reg = <2 3>;
> + adi,bipolar;
> + adi,channel-number = <1>;
> + adi,reference-select = <0>;
> + adi,gain = <4>;
> + adi,odr-hz = <50>;
> + };
> +
> + channel@2 {
> + reg = <4 5>;
> + adi,channel-number = <2>;
> + adi,gain = <128>;
> + adi,odr-hz = <19200>;
> + };
> +
> + channel@3 {
> + reg = <6 7>;
> + adi,channel-number = <3>;
> + };
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 3a1bfcb..f2fa508 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -845,6 +845,7 @@ L: [email protected]
> W: http://ez.analog.com/community/linux-device-drivers
> S: Supported
> F: drivers/iio/adc/ad7124.c
> +F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
>
> ANALOG DEVICES INC AD9389B DRIVER
> M: Hans Verkuil <[email protected]>


2018-10-23 00:42:27

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] dt-bindings: iio: adc: Add docs for ad7124

On Fri, Oct 19, 2018 at 10:47:45AM +0300, Stefan Popa wrote:
> Add support for Analog Devices AD7124 4-channels and 8-channels ADC.
>
> Signed-off-by: Stefan Popa <[email protected]>
> ---
> Changes in v2:
> - Nothing changed.
>
> .../devicetree/bindings/iio/adc/adi,ad7124.txt | 96 ++++++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 97 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> new file mode 100644
> index 0000000..77a7b92
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> @@ -0,0 +1,96 @@
> +Analog Devices AD7124 ADC device driver
> +
> +Required properties for the AD7124:
> + - compatible: Must be one of "adi,ad7124-4" or "adi,ad7124-8"
> + - reg: SPI chip select number for the device
> + - spi-max-frequency: Max SPI frequency to use
> + see: Documentation/devicetree/bindings/spi/spi-bus.txt
> + - clocks: phandle to the master clock (mclk)
> + see: Documentation/devicetree/bindings/clock/clock-bindings.txt
> + - clock-names: Must be "mclk".
> + - interrupts: IRQ line for the ADC
> + see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
> +
> + - adi,channels: List of external channels connected to the ADC:

It's not clear here that this is a node, not a property. However, I
think you can just get rid of this extra level unless you anticipate
having other child nodes that aren't channels.

> + Required properties:
> + * #address-cells: Must be 2.
> + * #size-cells: Must be 0.
> +
> + The child nodes of this node represent the external channels which are
> + connected to the ADC.
> +
> + Each child node represents one channel and has the following
> + properties:
> + Required properties:
> + * reg: Pins the channel is connected to. The first value specifies
> + the positive input pin, the second value the negative input pin.

That sounds more like 2 entries than a 2 cell address.

> + * adi,channel-number: It can have up to 4 channels on ad7124-4 and
> + 8 channels on ad7124-8, numbered from 0 to 15.

Humm, I think the channel number would be more typically what 'reg'
defines and then have a custom property to list the pins. There's
probably some other multi-channel ADC examples in the tree.

> +
> + Optional properties:
> + * adi,bipolar: If set the channel is used in bipolar mode.

So boolean type?

> + * adi,reference-select: Select the reference source to use when
> + converting on the the specific channel. Valid values are:
> + 0: REFIN1(+)/REFIN1(−).
> + 1: REFIN2(+)/REFIN2(−).
> + 3: AVDD
> + If this field is left empty, internal reference is selected.
> + * adi,gain: Select the gain when converting on the specific channel.
> + Valid values are: 1, 2, 4, 8, 16, 32, 64, 128.
> + If this field is left empty, gain of 1 is selected.
> + * adi,odr-hz: The output data rate can be programmed from:
> + 9 to 19200 for full power mode (when the master clock is 614.4 kHz)
> + 2 to 4800 for mid power mode (when the master clock is 153.6 kHz)
> + 1 to 2400 for low power mode (when the master clock is 76.8 kHz)
> + If this field is left empty, odr of 9 is selected.
> +
> +Optional properties:
> + - refin1-supply: refin1 supply can be used as reference for conversion.
> + - refin2-supply: refin2 supply can be used as reference for conversion.
> + - avdd-supply: avdd supply can be used as reference for conversion.
> +
> +Example:
> + adc@0 {
> + compatible = "adi,ad7124-4";
> + reg = <0>;
> + spi-max-frequency = <5000000>;
> + interrupts = <25 2>;
> + interrupt-parent = <&gpio>;
> + refin1-supply = <&adc_vref>;
> + clocks = <&ad7124_mclk>;
> + clock-names = "mclk";
> +
> + adi,channels {
> + #address-cells = <2>;
> + #size-cells = <0>;
> +
> + channel@0 {
> + reg = <0 1>;
> + adi,channel-number = <0>;
> + adi,reference-select = <0>;
> + adi,gain = <2>;
> + adi,odr-hz = <10>;
> + };
> +
> + channel@1 {
> + reg = <2 3>;
> + adi,bipolar;
> + adi,channel-number = <1>;
> + adi,reference-select = <0>;
> + adi,gain = <4>;
> + adi,odr-hz = <50>;
> + };
> +
> + channel@2 {
> + reg = <4 5>;
> + adi,channel-number = <2>;
> + adi,gain = <128>;
> + adi,odr-hz = <19200>;
> + };
> +
> + channel@3 {
> + reg = <6 7>;
> + adi,channel-number = <3>;
> + };
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 3a1bfcb..f2fa508 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -845,6 +845,7 @@ L: [email protected]
> W: http://ez.analog.com/community/linux-device-drivers
> S: Supported
> F: drivers/iio/adc/ad7124.c
> +F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
>
> ANALOG DEVICES INC AD9389B DRIVER
> M: Hans Verkuil <[email protected]>
> --
> 2.7.4
>