Re: [PATCH 2/2] dt-bindings: iio: adc: Add docs for AD7606 ADC

From: Jonathan Cameron
Date: Sun Oct 28 2018 - 08:17:39 EST


On Thu, 25 Oct 2018 13:43:26 -0500
Rob Herring <robh@xxxxxxxxxx> wrote:

> On Thu, Oct 18, 2018 at 12:12:36PM +0300, Stefan Popa wrote:
> > Document support for AD7606 Analog to Digital Converter.
> >
> > Signed-off-by: Stefan Popa <stefan.popa@xxxxxxxxxx>
> > ---
> > .../devicetree/bindings/iio/adc/adi,ad7606.txt | 51 ++++++++++++++++++++++
> > MAINTAINERS | 1 +
> > 2 files changed, 52 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt
> >
> > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt
> > new file mode 100644
> > index 0000000..dede581
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt
> > @@ -0,0 +1,51 @@
> > +Analog Devices AD7606 Simultaneous Sampling ADC
> > +
> > +Required properties for the AD7606:
> > +
> > + - compatible: Must be one of "adi,ad7605-4", "adi,ad7606-8", "adi,ad7606-6" or
> > + "adi,ad7606-4".
>
> Format as one per line please.
>
> > + - reg: SPI chip select number for the device
> > + - spi-max-frequency: Max SPI frequency to use
> > + see: Documentation/devicetree/bindings/spi/spi-bus.txt
> > + - spi-cpha: See Documentation/devicetree/bindings/spi/spi-bus.txt
> > + - avcc-supply: phandle to the Avcc power supply
> > + - interrupts: IRQ line for the ADC
> > + see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
> > + - conversion-start-gpio: must be the device tree identifier of the CONVST pin.
> > + This logic input is used to initiate conversions on
> > + the analog input channels.
>
> Doesn't IIO have trigger GPIOs?

Wrong way around. Those are for when you want to use a GPIO to tell the OS
to grab data now. This one is a 'capture now' pin used to cause the hardware
to start capturing. We might be able to do something a little generic around
this type, but I don't think we would gain much doing it.

The more interesting point is that the real reason devices have these is either:
1) To capture synchronized data cross a bank of ADCs
2) To capture data under control of device not visible to the OS (some sort
of external controller).

Neither of these cases is terribly well handled at the moment. However, no
one has yet really expressed a desire to do so, hence maybe it's not actually
done...

The first option would need a 'hardware' trigger path which isn't something
we really do as yet in general. We have individual drivers doing it but normally
only when it's routing a pulse signal to cause the hardware to fill a fifo and
the OS only gets involved occasionally.

Ah well, if anyone cares we'll figure out how to do it ;)

>
> > +
> > +Optional properties:
> > +
> > + - reset-gpio: must be the device tree identifier of the RESET pin. If specified,
> > + it will be asserted during driver probe.
>
> -gpios is the preferred form: reset-gpios
>
> And state the active state
>
> > + - first-data-gpio: must be the device tree identifier of the FRSTDATA pin.
> > + The FRSTDATA output indicates when the first channel, V1, is
> > + being read back on either the parallel, byte or serial interface.
> > +- standby-gpio: must be the device tree identifier of the STBY pin. This pin is used
> > + to place the AD7606 into one of two power-down modes, Standby mode or
> > + Shutdown mode.
> > +- range-gpio: must be the device tree identifier of the RANGE pin. The polarity on
> > + this pin determines the input range of the analog input channels. If
> > + this pin is tied to a logic high, the analog input range is Â10V for
> > + allchannels. If this pin is tied to a logic low, the analog input range
>
> s/allchannels/all channels/
>
> > + is Â5V for all channels.
>
> conversion-start-gpio, first-data-gpio, and range-gpio should all have
> vendor prefix (in addition to -gpios).
Gah, I should have spotted all of that. Thanks Rob!

Jonathan
>
> > +
> > +Example:
> > +
> > + adc@0 {
> > + compatible = "adi,ad7606-8";
> > + reg = <0>;
> > + spi-max-frequency = <1000000>;
> > + spi-cpol;
> > +
> > + avcc-supply = <&adc_vref>;
> > +
> > + interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> > + interrupt-parent = <&gpio>;
> > +
> > + conversion-start-gpio = <&gpio 17 0>;
> > + reset-gpio = <&gpio 27 0>;
> > + first-data-gpio = <&gpio 22 0>;
> > + standby-gpio = <&gpio 24 0>;
> > + };
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 843545d..6d63db4 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -845,6 +845,7 @@ L: linux-iio@xxxxxxxxxxxxxxx
> > W: http://ez.analog.com/community/linux-device-drivers
> > S: Supported
> > F: drivers/iio/adc/ad7606.c
> > +F: Documentation/devicetree/bindings/iio/adc/ad7606.txt
> >
> > ANALOG DEVICES INC AD9389B DRIVER
> > M: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> > --
> > 2.7.4
> >