On Fri, Sep 20, 2024 at 05:33:23PM +0000, Guillaume Stols wrote: > Add the required properties for iio-backend support, as well as an > example and the conditions to mutually exclude interruption and > conversion trigger with iio-backend. > The iio-backend's function is to controls the communication, and thus the > interruption pin won't be available anymore. > As a consequence, the conversion pin must be controlled externally since > we will miss information about when every single conversion cycle (i.e > conversion + data transfer) ends, hence a PWM is introduced to trigger > the conversions. > > Signed-off-by: Guillaume Stols <gstols@xxxxxxxxxxxx> > --- > .../devicetree/bindings/iio/adc/adi,ad7606.yaml | 76 +++++++++++++++++++++- > 1 file changed, 74 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml > index 12995ebcddc2..74a8680904b1 100644 > --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml > +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml > @@ -118,13 +118,32 @@ properties: > this property must be defined. > type: boolean > > + pwms: > + description: > + In case the conversion is triggered by a PWM instead of a GPIO plugged to > + the CONVST pin, the PWM must be referenced. > + minItems: 1 > + maxItems: 2 Please use an items list to describe what each item is, rather than doing so in the pwm-names description below. > + > + pwm-names: > + description: > + The name of each PWM, the first is connected to CONVST, and the second is > + connected to CONVST2 if CONVST2 is available and not connected to CONVST1. > + minItems: 1 > + maxItems: 2 You need to define what the names actually are, otherwise you have no ABI. Cheers, Conor. > + > + io-backends: > + description: > + A reference to the iio-backend, which is responsible handling the BUSY > + pin's falling edge and communication. > + An example of backend can be found at > + http://analogdevicesinc.github.io/hdl/library/axi_ad7606x/index.html > + > required: > - compatible > - reg > - avcc-supply > - vdrive-supply > - - interrupts > - - adi,conversion-start-gpios > > oneOf: > - required: > @@ -138,6 +157,34 @@ oneOf: > - spi-cpol > > allOf: > + - if: > + properties: > + pwms: false > + then: > + required: > + - adi,conversion-start-gpios > + > + - if: > + properties: > + adi,conversion-start-gpios: false > + then: > + required: > + - pwms > + > + - if: > + properties: > + interrupts: false > + then: > + required: > + - io-backends > + > + - if: > + properties: > + io-backends: false > + then: > + required: > + - interrupts > + > - if: > properties: > compatible: > @@ -179,12 +226,37 @@ allOf: > adi,sw-mode: false > else: > properties: > + pwms: > + maxItems: 1 > + pwm-names: > + maxItems: 1 > adi,conversion-start-gpios: > maxItems: 1 > > unevaluatedProperties: false > > examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + / { > + adi_adc { > + compatible = "adi,ad7606b"; > + parallel-interface; > + pwms = <&axi_pwm_gen 0 0>; > + > + avcc-supply = <&adc_vref>; > + vdrive-supply = <&vdd_supply>; > + > + reset-gpios = <&gpio0 91 GPIO_ACTIVE_HIGH>; > + standby-gpios = <&gpio0 90 GPIO_ACTIVE_LOW>; > + adi,range-gpios = <&gpio0 89 GPIO_ACTIVE_HIGH>; > + adi,oversampling-ratio-gpios = <&gpio0 88 GPIO_ACTIVE_HIGH > + &gpio0 87 GPIO_ACTIVE_HIGH > + &gpio0 86 GPIO_ACTIVE_HIGH>; > + io-backends = <&iio_backend>; > + }; > + }; > + > - | > #include <dt-bindings/gpio/gpio.h> > #include <dt-bindings/interrupt-controller/irq.h> > > -- > 2.34.1 >
Attachment:
signature.asc
Description: PGP signature