Devicetree
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Janani Sunil <jan.sun97@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <noname.nuno@gmail.com>,
	"Rodrigo Alencar" <455.rodrigo.alencar@gmail.com>,
	"Conor Dooley" <conor@kernel.org>,
	"Janani Sunil" <janani.sunil@analog.com>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Shuah Khan" <skhan@linuxfoundation.org>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	"Mark Brown" <broonie@kernel.org>
Subject: Re: [PATCH v3 1/2] dt-bindings: iio: dac: Add AD5529R
Date: Tue, 23 Jun 2026 15:55:51 +0100	[thread overview]
Message-ID: <20260623155551.6094388b@jic23-huawei> (raw)
In-Reply-To: <0f778d06-726f-4aec-ab3b-f6e091cc9421@gmail.com>

On Tue, 23 Jun 2026 12:07:52 +0200
Janani Sunil <jan.sun97@gmail.com> wrote:

> On 6/22/26 17:36, David Lechner wrote:
> > On 6/22/26 7:20 AM, Nuno Sá wrote:  
> >> On Mon, Jun 22, 2026 at 12:51:20PM +0100, Rodrigo Alencar wrote:  
> >>> On 22/06/26 11:29, Nuno Sá wrote:  
> >>>> On Mon, Jun 22, 2026 at 10:24:05AM +0100, Rodrigo Alencar wrote:  
> >>>>> On 21/06/26 15:33, Jonathan Cameron wrote:  
> >>>>>> On Fri, 19 Jun 2026 16:54:11 +0100
> >>>>>> Nuno Sá <noname.nuno@gmail.com> wrote:
> >>>>>>  
> >>>>>>> On Fri, Jun 19, 2026 at 03:12:07PM +0100, Conor Dooley wrote:  
> >>>>>>>> On Fri, Jun 19, 2026 at 02:01:08PM +0100, Nuno Sá wrote:  
> >>>>>>>>> On Fri, Jun 19, 2026 at 12:40:54PM +0100, Conor Dooley wrote:  
> >>>>>>>>>> On Fri, Jun 19, 2026 at 12:36:55PM +0100, Conor Dooley wrote:  
> >>>>>>>>>>> On Fri, Jun 19, 2026 at 12:33:11PM +0200, Janani Sunil wrote:  
> >>>>>>>>>>>> On 6/14/26 21:44, Jonathan Cameron wrote:  
> >>>>>>>>>>>>> On Tue, 9 Jun 2026 16:47:23 +0200
> >>>>>>>>>>>>> Janani Sunil <jan.sun97@gmail.com> wrote:
> >>>>>>>>>>>>>      
> >>>>>>>>>>>>>> On 5/26/26 15:11, Rodrigo Alencar wrote:  
> >>>>>>>>>>>>>>> On 26/05/19 05:42PM, Janani Sunil wrote:  
> >>>>>>>>>>>>>>>> Devicetree bindings for AD5529R 16 channel 12/16 bit high voltage,
> >>>>>>>>>>>>>>>> buffered voltage output digital-to-analog converter (DAC) with an
> >>>>>>>>>>>>>>>> integrated precision reference.  
> >>>>>>>>>>>>>>> ...
> >>>>>>>>>>>>>>> Probably others may comment on that, but...
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> This parent node may support device addressing for multi-device support through
> >>>>>>>>>>>>>>> those ID pins. I suppose that each device may have its own power supplies or
> >>>>>>>>>>>>>>> other resources like the toggle pins or reset and enable.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> That way I suppose that an example would look like...  
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +patternProperties:
> >>>>>>>>>>>>>>>> +  "^channel@([0-9]|1[0-5])$":
> >>>>>>>>>>>>>>>> +    type: object
> >>>>>>>>>>>>>>>> +    description: Child nodes for individual channel configuration
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +    properties:
> >>>>>>>>>>>>>>>> +      reg:
> >>>>>>>>>>>>>>>> +        description: Channel number.
> >>>>>>>>>>>>>>>> +        minimum: 0
> >>>>>>>>>>>>>>>> +        maximum: 15
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +      adi,output-range-microvolt:
> >>>>>>>>>>>>>>>> +        description: |
> >>>>>>>>>>>>>>>> +          Output voltage range for this channel as [min, max] in microvolts.
> >>>>>>>>>>>>>>>> +          If not specified, defaults to 0V to 5V range.
> >>>>>>>>>>>>>>>> +        oneOf:
> >>>>>>>>>>>>>>>> +          - items:
> >>>>>>>>>>>>>>>> +              - const: 0
> >>>>>>>>>>>>>>>> +              - enum: [5000000, 10000000, 20000000, 40000000]
> >>>>>>>>>>>>>>>> +          - items:
> >>>>>>>>>>>>>>>> +              - const: -5000000
> >>>>>>>>>>>>>>>> +              - const: 5000000
> >>>>>>>>>>>>>>>> +          - items:
> >>>>>>>>>>>>>>>> +              - const: -10000000
> >>>>>>>>>>>>>>>> +              - const: 10000000
> >>>>>>>>>>>>>>>> +          - items:
> >>>>>>>>>>>>>>>> +              - const: -15000000
> >>>>>>>>>>>>>>>> +              - const: 15000000
> >>>>>>>>>>>>>>>> +          - items:
> >>>>>>>>>>>>>>>> +              - const: -20000000
> >>>>>>>>>>>>>>>> +              - const: 20000000
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +    required:
> >>>>>>>>>>>>>>>> +      - reg
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +    additionalProperties: false
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +required:
> >>>>>>>>>>>>>>>> +  - compatible
> >>>>>>>>>>>>>>>> +  - reg
> >>>>>>>>>>>>>>>> +  - vdd-supply
> >>>>>>>>>>>>>>>> +  - avdd-supply
> >>>>>>>>>>>>>>>> +  - hvdd-supply
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +dependencies:
> >>>>>>>>>>>>>>>> +  spi-cpha: [ spi-cpol ]
> >>>>>>>>>>>>>>>> +  spi-cpol: [ spi-cpha ]
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +allOf:
> >>>>>>>>>>>>>>>> +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +unevaluatedProperties: false
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +examples:
> >>>>>>>>>>>>>>>> +  - |
> >>>>>>>>>>>>>>>> +    #include <dt-bindings/gpio/gpio.h>
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +    spi {
> >>>>>>>>>>>>>>>> +        #address-cells = <1>;
> >>>>>>>>>>>>>>>> +        #size-cells = <0>;
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +        dac@0 {
> >>>>>>>>>>>>>>>> +            compatible = "adi,ad5529r-16";
> >>>>>>>>>>>>>>>> +            reg = <0>;
> >>>>>>>>>>>>>>>> +            spi-max-frequency = <25000000>;
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            vdd-supply = <&vdd_regulator>;
> >>>>>>>>>>>>>>>> +            avdd-supply = <&avdd_regulator>;
> >>>>>>>>>>>>>>>> +            hvdd-supply = <&hvdd_regulator>;
> >>>>>>>>>>>>>>>> +            hvss-supply = <&hvss_regulator>;
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            reset-gpios = <&gpio0 87 GPIO_ACTIVE_LOW>;
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            #address-cells = <1>;
> >>>>>>>>>>>>>>>> +            #size-cells = <0>;
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            channel@0 {
> >>>>>>>>>>>>>>>> +                reg = <0>;
> >>>>>>>>>>>>>>>> +                adi,output-range-microvolt = <0 5000000>;
> >>>>>>>>>>>>>>>> +            };
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            channel@1 {
> >>>>>>>>>>>>>>>> +                reg = <1>;
> >>>>>>>>>>>>>>>> +                adi,output-range-microvolt = <(-10000000) 10000000>;
> >>>>>>>>>>>>>>>> +            };
> >>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>> +            channel@2 {
> >>>>>>>>>>>>>>>> +                reg = <2>;
> >>>>>>>>>>>>>>>> +                adi,output-range-microvolt = <0 40000000>;
> >>>>>>>>>>>>>>>> +            };
> >>>>>>>>>>>>>>>> +        };
> >>>>>>>>>>>>>>>> +    };  
> >>>>>>>>>>>>>>> ...
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 	spi {
> >>>>>>>>>>>>>>> 		#address-cells = <1>;
> >>>>>>>>>>>>>>> 		#size-cells = <0>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 		multi-dac@0 {
> >>>>>>>>>>>>>>> 			compatible = "adi,ad5529r-16";
> >>>>>>>>>>>>>>> 			reg = <0>;
> >>>>>>>>>>>>>>> 			spi-max-frequency = <25000000>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 			#address-cells = <1>;
> >>>>>>>>>>>>>>> 			#size-cells = <0>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 			dac@0 {
> >>>>>>>>>>>>>>> 				reg = <0>;
> >>>>>>>>>>>>>>> 				vdd-supply = <&vdd_regulator>;
> >>>>>>>>>>>>>>> 				avdd-supply = <&avdd_regulator>;
> >>>>>>>>>>>>>>> 				hvdd-supply = <&hvdd_regulator>;
> >>>>>>>>>>>>>>> 				hvss-supply = <&hvss_regulator>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				reset-gpios = <&gpio0 87 GPIO_ACTIVE_LOW>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				#address-cells = <1>;
> >>>>>>>>>>>>>>> 				#size-cells = <0>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				channel@0 {
> >>>>>>>>>>>>>>> 					reg = <0>;
> >>>>>>>>>>>>>>> 					adi,output-range-microvolt = <0 5000000>;
> >>>>>>>>>>>>>>> 				};
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				channel@1 {
> >>>>>>>>>>>>>>> 					reg = <1>;
> >>>>>>>>>>>>>>> 					adi,output-range-microvolt = <(-10000000) 10000000>;
> >>>>>>>>>>>>>>> 				};
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				channel@2 {
> >>>>>>>>>>>>>>> 					reg = <2>;
> >>>>>>>>>>>>>>> 					adi,output-range-microvolt = <0 40000000>;
> >>>>>>>>>>>>>>> 				};
> >>>>>>>>>>>>>>> 			}
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 			dac@1 {
> >>>>>>>>>>>>>>> 				reg = <1>;
> >>>>>>>>>>>>>>> 				vdd-supply = <&vdd_regulator>;
> >>>>>>>>>>>>>>> 				avdd-supply = <&avdd_regulator>;
> >>>>>>>>>>>>>>> 				hvdd-supply = <&hvdd_regulator>;
> >>>>>>>>>>>>>>> 				hvss-supply = <&hvss_regulator>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				reset-gpios = <&gpio0 88 GPIO_ACTIVE_LOW>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				#address-cells = <1>;
> >>>>>>>>>>>>>>> 				#size-cells = <0>;
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				channel@0 {
> >>>>>>>>>>>>>>> 					reg = <0>;
> >>>>>>>>>>>>>>> 					adi,output-range-microvolt = <0 5000000>;
> >>>>>>>>>>>>>>> 				};
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 				channel@1 {
> >>>>>>>>>>>>>>> 					reg = <1>;
> >>>>>>>>>>>>>>> 					adi,output-range-microvolt = <(-10000000) 10000000>;
> >>>>>>>>>>>>>>> 				};
> >>>>>>>>>>>>>>> 			}
> >>>>>>>>>>>>>>> 		};
> >>>>>>>>>>>>>>> 	};
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> then you might need something like:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 	patternProperties:
> >>>>>>>>>>>>>>> 		"^dac@[0-3]$":
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> and put most of the things under this node pattern.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> So the main driver that you're putting together might need to handle up to four instances.
> >>>>>>>>>>>>>>> Even if your current driver cannot handle this, the dt-bindings might need cover that.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Need to double check if each dac node needs a separate compatible, so you would maybe populate
> >>>>>>>>>>>>>>> a platform data to be shared with the child nodes, which would be a separate driver.
> >>>>>>>>>>>>>>> (not sure if it would make sense to mix and match ad5529r-16 and ad5529r-12).  
> >>>>>>>>>>>>>> Hi Rodrigo,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Thank you for looking at this.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> For now, I would prefer to keep the binding scoped to a single AD5529R device instance. The current
> >>>>>>>>>>>>>> hardware/use case we have only needs one device node and the driver is written around that model as well.
> >>>>>>>>>>>>>> While the device addressing pins could allow multi-device topology, we do not have an actual platform using
> >>>>>>>>>>>>>> that configuration at the moment, so I would prefer not to introduce an extra parent/child binding structure
> >>>>>>>>>>>>>> speculatively without a validating use case.  
> >>>>>>>>>>>>> Interesting feature - kind of similar to address control on a typical i2c bus device, or
> >>>>>>>>>>>>> looking at it another way a kind of distributed SPI mux.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Challenge of a binding is we need to anticipate the future.  So I think we do need something
> >>>>>>>>>>>>> like Rodrigo is suggesting even if we only (for now) support a single instance in the driver.
> >>>>>>>>>>>>> That would leave the path open to supporting the addressing at a later date.
> >>>>>>>>>>>>> An alternative might be to look at it like a chained device setup. In those we pretend there
> >>>>>>>>>>>>> is just one device with a lot of channels etc.  The snag is that here things are more loosely
> >>>>>>>>>>>>> coupled whereas for those devices it tends to be you have to read / write the same register
> >>>>>>>>>>>>> in all devices in the chain as one big SPI message.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> +CC Mark Brown as he may know of some precedence for this feature. For his reference..
> >>>>>>>>>>>>> - Each of these device has 2 ID pins.  The SPI transfers have to contain the 2 bit
> >>>>>>>>>>>>> value that matches that or they are ignored.  Thus a single bus + 1 chip select can
> >>>>>>>>>>>>> be used to talk to 4 devices.  Question is what that looks like in device tree + I guess
> >>>>>>>>>>>>> longer term how to support it cleanly in SPI.  
> >>>>>>>>>>> I'd swear I have seen this before, from some Microchip devices. Let me
> >>>>>>>>>>> see if I can find what I am thinking of...  
> >>>>>>>>>>
> >>>>>>>>>> microchip,mcp3911 and microchip,mcp3564 both seem to do this with
> >>>>>>>>>> slightly different properties.
> >>>>>>>>>>
> >>>>>>>>>>    microchip,device-addr:
> >>>>>>>>>>      description: Device address when multiple MCP3911 chips are present on the same SPI bus.
> >>>>>>>>>>      $ref: /schemas/types.yaml#/definitions/uint32
> >>>>>>>>>>      enum: [0, 1, 2, 3]
> >>>>>>>>>>      default: 0
> >>>>>>>>>>
> >>>>>>>>>> and
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>    microchip,hw-device-address:
> >>>>>>>>>>      $ref: /schemas/types.yaml#/definitions/uint32
> >>>>>>>>>>      minimum: 0
> >>>>>>>>>>      maximum: 3
> >>>>>>>>>>      description:
> >>>>>>>>>>        The address is set on a per-device basis by fuses in the factory,
> >>>>>>>>>>        configured on request. If not requested, the fuses are set for 0x1.
> >>>>>>>>>>        The device address is part of the device markings to avoid
> >>>>>>>>>>        potential confusion. This address is coded on two bits, so four possible
> >>>>>>>>>>        addresses are available when multiple devices are present on the same
> >>>>>>>>>>        SPI bus with only one Chip Select line for all devices.
> >>>>>>>>>>        Each device communication starts by a CS falling edge, followed by the
> >>>>>>>>>>        clocking of the device address (BITS[7:6] - top two bits of COMMAND BYTE
> >>>>>>>>>>        which is first one on the wire).
> >>>>>>>>>>
> >>>>>>>>>> This sounds exactly like the sort of feature that you're dealing with
> >>>>>>>>>> here?
> >>>>>>>>>>      
> >>>>>>>>> The core idea yes but for this chip, things are a bit more annoying (but
> >>>>>>>>> Janani can correct me if I'm wrong). Here, each device can, in theory,
> >>>>>>>>> have it's own supplies, pins and at the very least, channels with maybe
> >>>>>>>>> different scales. That is why Janani is proposing dac nodes. Given I
> >>>>>>>>> honestly don't like much of that "adi,ad5529r-bus" compatible I wondered
> >>>>>>>>> about solving this at the spi level.
> >>>>>>>>>
> >>>>>>>>> Ah and to make it more annoying, we can also mix 12 and 16 bits variants
> >>>>>>>>> together in the same bus.  
> >>>>>>>> I'm definitely missing something, because that property for the
> >>>>>>>> microchip devices is not impacted what else is on the bus. AFAICT, you
> >>>>>>>> could have an mcp3911 and an mcp3564 on the same bus even though both
> >>>>>>>> are completely different devices with different drivers. They have
> >>>>>>>> individual device nodes and their own supplies etc etc. These aren't
> >>>>>>>> per-channel properties on an adc or dac, they're per child device on a
> >>>>>>>> spi bus.  
> >>>>>>> Maybe I'm the one missing something :). IIRC, spi would not allow two
> >>>>>>> devices on the same CS right? Because for this chip we would need
> >>>>>>> something like:
> >>>>>>>
> >>>>>>> spi {
> >>>>>>> 	dac@0 {
> >>>>>>> 		reg = <0>;
> >>>>>>> 		adi,pin-id = <0>;
> >>>>>>> 	};
> >>>>>>>
> >>>>>>> 	dac@1 {
> >>>>>>> 		reg = <0>; // which seems already problematic?
> >>>>>>> 		adi,pin-id <1>;
> >>>>>>> 	};
> >>>>>>>
> >>>>>>> 	...
> >>>>>>>
> >>>>>>> 	//up to 4
> >>>>>>> };  
> >>>>>> Yeah. It's not clear to me how that works for the microchip devices
> >>>>>> (I suspect it doesn't!)
> >>>>>>
> >>>>>> Just thinking as I type, but could we do something a bit nasty with
> >>>>>> a gpio mux that doesn't actually switch but represents the GPIO being
> >>>>>> shared?  Given this is all tied to the spi bus that should all happen
> >>>>>> under serializing locks.
> >>>>>>
> >>>>>> Agreed though that this would be nicer as an SPI thing that let
> >>>>>> us specify that a single CS is share by multiple devices and their
> >>>>>> is some other signal acting to select which one we are talking to.
> >>>>>>  
> >>>>> If the device-addressing on the same chip-select is to be handled
> >>>>> by the spi framework, wouldn't we lose device-specific features?
> >>>>>
> >>>>> I understand that this multi-device feature is there mostly to extend the
> >>>>> channel count from 16 to 32, 48 or 64. I suppose the command:
> >>>>>
> >>>>> 	"MULTI DEVICE SW LDAC MODE"
> >>>>>
> >>>>> exists so that software can update channel values accross multiple devices.  
> >>>> Right! You do have a point! I agree the main driver for a feature like
> >>>> this is likely to extend the channel count and effectively "aggregate"
> >>>> devices.
> >>>>
> >>>> But I would say that even with the spi solution the MULTI DEVICE stuff
> >>>> should be doable (as we still need a sort of adi,pin-id property).  
> >>> I don't think we can have something like an IIO buffer shared by multiple
> >>> devices. Synchronizing separate devices would be doable with proper hardware
> >>> support for this (probably involving an FGPA).  
> >> True!
> >>  
> >>>     
> >>>> But yes, I do feel that the whole feature is for aggregation so seeing
> >>>> one device with 32 channels is the expectation here? Rather than seeing
> >>>> two devices with 16 channels.  
> >>> Yes, I think aggregation is the whole point there... so that the IIO driver
> >>> is multi-device-aware.  
> >> Which makes me feel that different pins per device might be possible
> >> from an HW point of view but does not make much sense. For example, for
> >> the buffer example I would expect LDAC to be shared between all the
> >> devices.
> >>
> >> - Nuno Sá  
> > I think I mentioned this on a previous revision, but I still think the
> > simplest way to go about it would be to assume that all chips treated
> > as an aggregate device have everything wired in parallel and just add
> > support for per-chip wiring on an as-needed basis. This is how we have
> > handled daisy-chained devices so far.  
> 
> Hi David,
> 
> One thing about this approach is that is does not cover a combination  of 12 and 16 bit parts in the chain,
> since the compatible string would be at the top level and apply to all chips. To handle this without per chip child nodes or per-chip compatible,
> I propose an "adi, resolution" property as an integer array, indexed by the device position:
> 

To me mixed parts, smells like a case that we will probably never see.  If
a customer actually has a design doing that we can add optional dt
bindings at that time.

So I'd stick to separate compatibles. 

> 
> dac@0 {
>      compatible = "adi,ad5529r";
>      reg = <0>;
>      adi,device-addrs = <0 1>;
>      adi,resolution   = <16 12>;   /* per-chip, indexed by position */
>      reset-gpios = <&gpio0 87 GPIO_ACTIVE_LOW>;
>      vdd-supply  = <&vdd_reg>;
>      hvdd-supply = <&hvdd_reg>;
> 
>      channel@0  { reg = <0>;  adi,output-range-microvolt = <0 5000000>; };
>      channel@16 { reg = <16>; adi,output-range-microvolt = <0 40000000>; };




> };
> 
> 
> 1) This follows the daisy-chain/aggregated model as you suggested, exposing N*16 channels as a single IIO device.
> 2) Keeps the binding flat- no phantom compatible at a parent bus node, no per-chip child nodes.
> 3) Enables a 12 bit + 16 bit device combination in the chain, without needing a per-chip compatible.
> 4) adi, device-addrs specifies the HW address, allowing the driver to encode it into the SPI frame.
> 5) Supplies and GPIOs remain simple- assuming parallel wiring across all chips.
> 
> Jonathan, you had earlier suggested using separate compatibles
>   (adi,ad5529r-16 and adi,ad5529r-12) to handle the
>   resolution difference.
> However, with the aggregated flat binding model,
>   separate per-chip compatibles would require child nodes which brings
> back the phantom compatible problem at the parent level. The
>   adi,resolution array is intended as an alternative that achieves the
> same goal-expressing per-chip resolution, without needing a per-chip
>   compatible or child node structure.
> 
> Does this look reasonable?
> 
> Best Regards,
> Janani Sunil
> 
> 


  reply	other threads:[~2026-06-23 14:56 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-19 15:42 [PATCH v3 0/2] iio: dac: Add support for AD5529R DAC Janani Sunil
2026-05-19 15:42 ` [PATCH v3 1/2] dt-bindings: iio: dac: Add AD5529R Janani Sunil
2026-05-19 15:55   ` sashiko-bot
2026-05-22 17:02   ` Jonathan Cameron
2026-05-25 16:30     ` Conor Dooley
2026-05-26 12:35       ` Jonathan Cameron
2026-05-26 13:11   ` Rodrigo Alencar
2026-06-09 14:47     ` Janani Sunil
2026-06-14 19:44       ` Jonathan Cameron
2026-06-19 10:33         ` Janani Sunil
2026-06-19 11:31           ` Nuno Sá
2026-06-19 11:36           ` Conor Dooley
2026-06-19 11:40             ` Conor Dooley
2026-06-19 13:01               ` Nuno Sá
2026-06-19 14:12                 ` Conor Dooley
2026-06-19 15:54                   ` Nuno Sá
2026-06-21 14:33                     ` Jonathan Cameron
2026-06-21 18:35                       ` Conor Dooley
2026-06-22  9:07                         ` Nuno Sá
2026-06-22  9:27                           ` Jonathan Cameron
2026-06-22 10:17                             ` Nuno Sá
2026-06-22 11:54                               ` Janani Sunil
2026-06-22 12:14                                 ` Conor Dooley
2026-06-22 12:39                                   ` Janani Sunil
2026-06-22 12:50                                     ` Conor Dooley
2026-06-22 16:24                               ` Jonathan Cameron
2026-06-22  9:24                       ` Rodrigo Alencar
2026-06-22 10:29                         ` Nuno Sá
2026-06-22 11:51                           ` Rodrigo Alencar
2026-06-22 12:20                             ` Nuno Sá
2026-06-22 15:36                               ` David Lechner
2026-06-23 10:07                                 ` Janani Sunil
2026-06-23 14:55                                   ` Jonathan Cameron [this message]
2026-06-23  8:09                               ` Rodrigo Alencar
2026-06-23 14:57                                 ` Jonathan Cameron
2026-06-24 15:01                                   ` Janani Sunil
2026-06-24 15:13                                     ` David Lechner
2026-06-24 16:32                                     ` Conor Dooley
2026-06-24 16:35                                       ` Conor Dooley
2026-06-22 16:29                           ` Jonathan Cameron
2026-06-22 18:39                             ` Conor Dooley
2026-06-23 15:08                               ` Jonathan Cameron
2026-05-19 15:42 ` [PATCH v3 2/2] iio: dac: Add AD5529R DAC driver support Janani Sunil
2026-05-19 16:22   ` sashiko-bot
2026-05-22 17:24   ` Jonathan Cameron
2026-06-22  9:12   ` Philipp Zabel
2026-06-22  9:31     ` Jonathan Cameron

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=20260623155551.6094388b@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=455.rodrigo.alencar@gmail.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=andy@kernel.org \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=conor@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jan.sun97@gmail.com \
    --cc=janani.sunil@analog.com \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=noname.nuno@gmail.com \
    --cc=nuno.sa@analog.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robh@kernel.org \
    --cc=skhan@linuxfoundation.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