devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: David Lechner <dlechner@baylibre.com>
Cc: <0044dd4b-01ce-4ca0-9855-8c239b9bfb6f@baylibre.com>,
	Jonathan Santos <Jonathan.Santos@analog.com>,
	<linux-iio@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <lars@metafoo.de>,
	<Michael.Hennerich@analog.com>, <marcelo.schmitt@analog.com>,
	<jic23@kernel.org>, <robh@kernel.org>, <krzk+dt@kernel.org>,
	<conor+dt@kernel.org>, <marcelo.schmitt1@gmail.com>
Subject: Re: [PATCH v2 02/16] dt-bindings: iio: adc: ad7768-1: add trigger-sources property
Date: Thu, 30 Jan 2025 16:16:06 +0000	[thread overview]
Message-ID: <20250130161606.0000514c@huawei.com> (raw)
In-Reply-To: <a6e57474-6eff-4f7b-8204-8137f95a33e7@baylibre.com>

On Tue, 28 Jan 2025 09:56:37 -0600
David Lechner <dlechner@baylibre.com> wrote:

> On 1/28/25 9:04 AM, Jonathan Santos wrote:
> > On 01/27, David Lechner wrote:  
> >> On 1/27/25 9:11 AM, Jonathan Santos wrote:  
> >>> Add a new trigger-sources property to enable synchronization across
> >>> multiple devices. This property references the main device (or
> >>> trigger provider) responsible for generating the pulse to drive the
> >>> SYNC_IN of all devices in the setup.
> >>>
> >>> In addition to GPIO synchronization, The AD7768-1 also supports
> >>> synchronization over SPI, which use is recommended when the GPIO
> >>> cannot provide a pulse synchronous with the base MCLK signal. It
> >>> consists of looping back the SYNC_OUT to the SYNC_IN pin and send
> >>> a command via SPI to trigger the synchronization.
> >>>
> >>> SPI-based synchronization is enabled in the absence of adi,sync-in-gpios
> >>> property. Since adi,sync-in-gpios is not long the only method, remove it
> >>> from required properties.
> >>>
> >>> While at it, add description to the interrupt property.
> >>>
> >>> Signed-off-by: Jonathan Santos <Jonathan.Santos@analog.com>
> >>> ---
> >>> v2 Changes:
> >>> * Patch added as replacement for adi,sync-in-spi patch.
> >>> * addressed the request for a description to interrupts property.
> >>> ---
> >>>  .../bindings/iio/adc/adi,ad7768-1.yaml        | 22 +++++++++++++++++--
> >>>  1 file changed, 20 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml
> >>> index 3ce59d4d065f..3e119cf1754b 100644
> >>> --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml
> >>> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml
> >>> @@ -26,7 +26,17 @@ properties:
> >>>    clock-names:
> >>>      const: mclk
> >>>  
> >>> +  trigger-sources:
> >>> +    description:
> >>> +      References the main device responsible for synchronization. In a single
> >>> +      device setup, reference the own node.
> >>> +    maxItems: 1  
> >>
> >> We probably actually need 2 here. One for /SYNC_IN and one for a GPIO3 pin
> >> acting as the /START signal.
> >>  
> >>> +
> >>>    interrupts:
> >>> +    description:
> >>> +      Specifies the interrupt line associated with the ADC. This refers
> >>> +      to the DRDY (Data Ready) pin, which signals when conversion results are
> >>> +      available.
> >>>      maxItems: 1
> >>>  
> >>>    '#address-cells':
> >>> @@ -46,6 +56,8 @@ properties:
> >>>        sampling. A pulse is always required if the configuration is changed
> >>>        in any way, for example if the filter decimation rate changes.
> >>>        As the line is active low, it should be marked GPIO_ACTIVE_LOW.
> >>> +      In the absence of this property, Synchronization over SPI will be
> >>> +      enabled.  
> >>
> >> Isn't /SYNC_OUT connected to /SYNC_IN required for synchronization over SPI?
> >>
> >> If yes, instead of adding this text, I would make the binding have:
> >>  
> > 
> > Yes, but the synchronization over SPI is enabled in the absence of the GPIO.
> > The trigger-sources property would indicate if the sync provider is the
> > own device or not. As i said below, maybe i misunderstood.
> >   
> >> oneOf:
> >>   - required:
> >>       - trigger-sources
> >>   - required:
> >>        - adi,sync-in-gpios
> >>  
> > 
> > Wouldn't be simpler to consider the absence of sync-in-gpio? this way we
> > have less changes in the ABI.  
> 
> Maybe it is me that missed something, but if I'm reading the datasheet
> correctly, then sync over SPI only works if /SYNC_IN is wired to /SYNC_OUT.
> And the chip isn't going to work correctly without some sort of sync. So we
> need something wired to /SYNC_IN no matter what.
> 
> In any case, the DT bindings should just say how the chip is wired up and not
> dictate how the driver should behave. So what I was going for with this is to
> have the bindings say that something has to be wired to /SYNC_IN and we can
> leave it up to the driver to decide what to do with this information.

I was seeing this more like an optional clock / supply etc.
If we don't provide it we assume the driver knows what to do.

So in this case lack of sync in routing off to another device means
to me it is connected to sync out.

I don't mind the self trigger thing if it fits nicely in the binding
though as we are using a trigger that is provided for other chips anyway.

So wired to sync in of this chip and potentially sync in of another
N chips.


> 
> >   
> >>>  
> >>>    reset-gpios:
> >>>      maxItems: 1
> >>> @@ -57,6 +69,9 @@ properties:
> >>>    "#io-channel-cells":
> >>>      const: 1
> >>>  
> >>> +  "#trigger-source-cells":
> >>> +    const: 0
> >>> +
> >>>  required:
> >>>    - compatible
> >>>    - reg
> >>> @@ -65,7 +80,8 @@ required:
> >>>    - vref-supply
> >>>    - spi-cpol
> >>>    - spi-cpha
> >>> -  - adi,sync-in-gpios
> >>> +  - trigger-sources
> >>> +  - #trigger-source-cells
> >>>  
> >>>  patternProperties:
> >>>    "^channel@([0-9]|1[0-5])$":
> >>> @@ -99,7 +115,7 @@ examples:
> >>>          #address-cells = <1>;
> >>>          #size-cells = <0>;
> >>>  
> >>> -        adc@0 {
> >>> +        adc0: adc@0 {
> >>>              compatible = "adi,ad7768-1";
> >>>              reg = <0>;
> >>>              spi-max-frequency = <2000000>;
> >>> @@ -109,6 +125,8 @@ examples:
> >>>              interrupts = <25 IRQ_TYPE_EDGE_RISING>;
> >>>              interrupt-parent = <&gpio>;
> >>>              adi,sync-in-gpios = <&gpio 22 GPIO_ACTIVE_LOW>;  
> >>
> >> Don't we need to drop adi,sync-in-gpios here? I don't think we would have two
> >> things connected to /SYNC_IN at the same time.
> >>  
> > 
> > I guess i misunderstood the use of trigger-sources. I thought it would
> > indicate the trigger provider or main device. Like if it points to other
> > device we should use it to drive the SYNC_IN of all devices.
> > 
> > Then what happens if the trigger-sources points to other node? we would't be
> > able to driver the SYNC_IN in case of any configuration change?  
> 
> I think you understand the trigger-source bindings correctly. 
> 
> The driver doesn't have to support everything that the DT bindings allow. This
> series is big enough already, so we can defer figuring out how to implement
> triggers other than the loopback case later. :-) We just want to make the DT
> bindings as complete as we can now.
> 
> >   
> >>> +            trigger-sources = <&adc0>;
> >>> +            #trigger-source-cells = <0>;
> >>>              reset-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
> >>>              clocks = <&ad7768_mclk>;
> >>>              clock-names = "mclk";  
> >>  
> 
> 
> 


  reply	other threads:[~2025-01-30 16:16 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-27 15:10 [PATCH v2 00/16] Add features, improvements, and fixes Jonathan Santos
2025-01-27 15:11 ` [PATCH v2 01/16] iio: adc: ad7768-1: Fix conversion result sign Jonathan Santos
2025-02-01 15:27   ` Jonathan Cameron
2025-02-01 15:36   ` Jonathan Cameron
2025-01-27 15:11 ` [PATCH v2 02/16] dt-bindings: iio: adc: ad7768-1: add trigger-sources property Jonathan Santos
2025-01-27 16:30   ` Rob Herring (Arm)
2025-01-27 16:55   ` Rob Herring
2025-01-28  1:28   ` David Lechner
2025-01-28 15:04     ` Jonathan Santos
2025-01-28 15:56       ` David Lechner
2025-01-30 16:16         ` Jonathan Cameron [this message]
2025-01-27 15:11 ` [PATCH v2 03/16] dt-bindings: iio: adc: ad7768-1: Document GPIO controller Jonathan Santos
2025-01-27 16:30   ` Rob Herring (Arm)
2025-01-27 16:56   ` Rob Herring (Arm)
2025-01-27 15:12 ` [PATCH v2 04/16] dt-bindings: iio: adc: ad7768-1: add VMC output property Jonathan Santos
2025-01-27 16:30   ` Rob Herring (Arm)
2025-01-28  1:28   ` David Lechner
2025-01-30 16:21     ` Jonathan Cameron
2025-01-27 15:12 ` [PATCH v2 05/16] Documentation: ABI: add wideband filter type to sysfs-bus-iio Jonathan Santos
2025-01-28  1:32   ` David Lechner
2025-01-30 16:29     ` Jonathan Cameron
2025-01-27 15:12 ` [PATCH v2 06/16] iio: adc: ad7768-1: set MOSI idle state to prevent accidental reset Jonathan Santos
2025-02-01 15:31   ` Jonathan Cameron
2025-02-03 11:34     ` Jonathan Santos
2025-01-27 15:12 ` [PATCH v2 07/16] iio: adc: ad7768-1: convert driver to use regmap Jonathan Santos
2025-01-28  1:29   ` David Lechner
2025-01-28 13:25     ` Nuno Sá
2025-01-28 14:46       ` Jonathan Santos
2025-01-28 15:09         ` Nuno Sá
2025-01-30 16:32           ` Jonathan Cameron
2025-02-03 11:44             ` Jonathan Santos
2025-01-27 15:12 ` [PATCH v2 08/16] iio: adc: ad7768-1: Add reset gpio Jonathan Santos
2025-01-27 22:43   ` David Lechner
2025-02-03 13:46   ` Marcelo Schmitt
2025-01-27 15:13 ` [PATCH v2 09/16] iio: adc: ad7768-1: remove unnecessary locking Jonathan Santos
2025-01-27 22:46   ` David Lechner
2025-01-27 15:13 ` [PATCH v2 10/16] iio: adc: ad7768-1: Move buffer allocation to a separate function Jonathan Santos
2025-02-01 15:35   ` Jonathan Cameron
2025-02-03 12:03     ` Jonathan Santos
2025-01-27 15:13 ` [PATCH v2 11/16] iio: adc: ad7768-1: Add VCM output support Jonathan Santos
2025-01-27 23:07   ` David Lechner
2025-01-27 15:13 ` [PATCH v2 12/16] iio: adc: ad7768-1: Add GPIO controller support Jonathan Santos
2025-01-27 23:34   ` David Lechner
2025-02-03 13:08     ` Jonathan Santos
2025-02-01 15:50   ` Jonathan Cameron
2025-01-27 15:13 ` [PATCH v2 13/16] iio: adc: ad7768-1: add multiple scan types to support 16-bits mode Jonathan Santos
2025-01-27 23:47   ` David Lechner
2025-01-27 15:14 ` [PATCH v2 14/16] iio: adc: ad7768-1: add support for Synchronization over SPI Jonathan Santos
2025-01-28  0:08   ` David Lechner
2025-02-03 15:28   ` Marcelo Schmitt
2025-01-27 15:14 ` [PATCH v2 15/16] iio: adc: ad7768-1: add filter type and oversampling ratio attributes Jonathan Santos
2025-01-28  1:24   ` David Lechner
2025-02-03 14:58     ` Jonathan Santos
2025-01-30 16:39   ` Jonathan Cameron
2025-01-27 15:14 ` [PATCH v2 16/16] iio: adc: ad7768-1: add low pass -3dB cutoff attribute Jonathan Santos
2025-01-28  1:27   ` David Lechner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250130161606.0000514c@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=0044dd4b-01ce-4ca0-9855-8c239b9bfb6f@baylibre.com \
    --cc=Jonathan.Santos@analog.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jic23@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo.schmitt1@gmail.com \
    --cc=marcelo.schmitt@analog.com \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).