From: Jonathan Cameron <jic23@kernel.org>
To: "Nuno Sá" <noname.nuno@gmail.com>
Cc: David Lechner <dlechner@baylibre.com>,
Rodrigo Alencar <455.rodrigo.alencar@gmail.com>,
rodrigo.alencar@analog.com, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Lars-Peter Clausen <lars@metafoo.de>,
Michael Hennerich <Michael.Hennerich@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>
Subject: Re: [PATCH RFC 0/8] AD9910 Direct Digital Synthesizer
Date: Sun, 1 Mar 2026 13:38:06 +0000 [thread overview]
Message-ID: <20260301133806.5e706756@jic23-huawei> (raw)
In-Reply-To: <9392fea00a9c3b23d1bc9468faa1b3cc20904398.camel@gmail.com>
On Mon, 23 Feb 2026 10:02:00 +0000
Nuno Sá <noname.nuno@gmail.com> wrote:
> On Sun, 2026-02-22 at 14:32 -0600, David Lechner wrote:
> > On 2/22/26 4:01 AM, Rodrigo Alencar wrote:
> > > On 26/02/21 02:16PM, David Lechner wrote:
> > > > On 2/20/26 10:46 AM, Rodrigo Alencar via B4 Relay wrote:
> > > > > This patch series adds support for the Analog Devices AD9910 DDS.
> > > > > This is an RFC so that we can agree/discuss on the design that follows:
> > > > >
> >
> > ...
> >
> > > > > represents a distinct signal path into the DDS accumulator, so the driver
> > > > > models them as separate IIO output channels (all IIO_ALTVOLTAGE type).
> > > >
> > > > Generally IIO channels represent the physical input/output, not the
> > > > internal channels.
> > >
> > > That is part of the reason for this RFC. Dividing those top-level modes
> > > into channels allows for better organization, as they can operate together,
> > > i.e., phase or scale can be provided by single-tone profile, while
> > > frequency is controlled by the digital ramp generator (see Mode Priority
> > > section in the datasheet). Also, it allows to explore the most of standard
> > > ABIs like, scale, frequency, phase, sampling_frequency and enable.
> > > Putting everything into a single channel would make things a lot messy
> > > to interface with.
> > >
> > > > Ideally we would just have the one channel here with a mode selection
> > > > attribute. Documentation can tell us which modes use which attributes.
> > > >
> > > > > This per-channel separation allows userspace to configure each mode
> > > > > independently through its own set of sysfs attributes, and to
> > > > > enable/disable modes individually via IIO_CHAN_INFO_ENABLE, relying on
> > > > > the hardware's own mode selection architecture.
> > > > >
> >
> > Looking at Table 5 in the datasheet really helped me understand this better.
> > I think this series could benefit from a documentation patch that explains
> > more about how the driver works with some diagrams.
> >
> > So really what we have here are a bunch of digital data generators rather
> > than a bunch of altvotlage output channels. And the same data channels can be
> > mixed and match as the source for up to 3 different components of the output
> > (frequency, phase, amplitude) depending on the priority rules defined in
> > Table 5.
>
> More bellow... But note that all of the (or most of it) generators are going to
> be feed into a DAC. Your output is altvoltage but maybe we can treat the
> internals as voltage. Not sure.
>
> >
> > Digital data sources are really more like a buffer in IIO terms than a
> > channel. And before we added the IIO backend stuff, there wasn't really
> > any other digital data source/sink that I am aware of other than buffers
> > (but there are certainly a lot of odd corners of IIO that I haven't explored
> > yet, so maybe I missed some).
> >
> > In a recent discussion, the idea of possibly needing a way to provide
> > some userspace interface to be able to tweak knobs of an IIO backend
> > was also brought up.
> >
> > Putting those ideas together, I'm wondering if we need some new channel
> > type or even a whole new interface (e.g. a new sysfs directory like buffers
> > and events) for managing these digital data sources/sinks that are not an
> > IIO buffer.
> >
>
> But what would be that channel? In the end of the day, we typically have voltage or
> current DACs and a DDS primary function is indeed to generate alternating waveforms
> that you then typically feed into a DAC (and in some cases from the DAC into a
> power amplifier). So the DDS is just part of the data/signal path. Anyways, not sure
> on the new type and I think we already have the "blocks" in IIO for dealing with this:
>
> . frequency
> . phase
> . amplitude (raw + scale + offset)
>
> But you're right that maybe it's time to think in a better way to fit them together.
> Maybe a new type (as buffers or events) can make sense where the above are treated as, example, scan
> elements. Maybe it's overcomplicating, not sure. It surely needs discussion and thinking :).
>
> And spoiler alert, as you might have guessed already, the parallel port stuff is to be
> used with DMA buffers (and IIO backends). At least, that was the plan IIRC. But Rodrigo
> can confirm it.
>
> > I think we've seen enough of these already to know that things like a
> > "tone generator" and a "ramp generator" are going to be common and could
> > share some standard attributes.
> >
>
> I tend to agree. For example, there already some DACs (with dithering) that make use of a similar
> interface (but with a custom prefix). Though the end goal is different, the interface is not that
> far off:
>
>
> https://elixir.bootlin.com/linux/v6.19.3/source/Documentation/ABI/testing/sysfs-bus-iio-dac-ltc2688
>
> Anyways, I knew this one would be an interesting one for upstream :)
For history buffs, we had a bunch of DDS chips in staging at one point and never
manage to figure out the questions being raised here :( They are complex
beasts. Clarity of ABI proposal and documentation is going to be key to driving
this series forwards. In a sense the code is the easy part.
Jonathan
>
> - Nuno Sá
>
next prev parent reply other threads:[~2026-03-01 13:38 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-20 16:46 [PATCH RFC 0/8] AD9910 Direct Digital Synthesizer Rodrigo Alencar via B4 Relay
2026-02-20 16:46 ` [PATCH RFC 1/8] dt-bindings: iio: frequency: add ad9910 Rodrigo Alencar via B4 Relay
2026-02-21 20:43 ` David Lechner
2026-02-21 22:43 ` Conor Dooley
2026-02-22 10:49 ` Rodrigo Alencar
2026-02-22 13:24 ` Conor Dooley
2026-02-22 10:47 ` Rodrigo Alencar
2026-02-22 20:28 ` David Lechner
2026-02-22 20:31 ` Conor Dooley
2026-03-01 12:50 ` Jonathan Cameron
2026-02-20 16:46 ` [PATCH RFC 2/8] iio: frequency: ad9910: initial driver implementation Rodrigo Alencar via B4 Relay
2026-03-01 13:20 ` Jonathan Cameron
2026-02-20 16:46 ` [PATCH RFC 3/8] iio: frequency: ad9910: add simple parallel port mode support Rodrigo Alencar via B4 Relay
2026-02-23 8:27 ` Andy Shevchenko
2026-03-01 13:22 ` Jonathan Cameron
2026-02-20 16:46 ` [PATCH RFC 4/8] iio: frequency: ad9910: expose sysclk_frequency device attribute Rodrigo Alencar via B4 Relay
2026-03-01 13:23 ` Jonathan Cameron
2026-02-20 16:46 ` [PATCH RFC 5/8] iio: frequency: ad9910: add digital ramp generator support Rodrigo Alencar via B4 Relay
2026-03-01 13:26 ` Jonathan Cameron
2026-02-20 16:46 ` [PATCH RFC 6/8] iio: frequency: ad9910: add RAM mode support Rodrigo Alencar via B4 Relay
2026-03-01 13:31 ` Jonathan Cameron
2026-03-03 15:32 ` Rodrigo Alencar
2026-03-03 17:16 ` Nuno Sá
2026-03-03 17:32 ` Rodrigo Alencar
2026-03-07 14:07 ` Jonathan Cameron
2026-03-10 17:40 ` Rodrigo Alencar
2026-03-11 0:11 ` David Lechner
2026-03-11 13:11 ` Rodrigo Alencar
2026-03-11 16:54 ` Nuno Sá
2026-03-11 17:08 ` Rodrigo Alencar
2026-02-20 16:46 ` [PATCH RFC 7/8] iio: frequency: ad9910: add output shift keying support Rodrigo Alencar via B4 Relay
2026-02-20 16:46 ` [PATCH RFC 8/8] iio: frequency: ad9910: add channel labels Rodrigo Alencar via B4 Relay
2026-02-21 20:16 ` [PATCH RFC 0/8] AD9910 Direct Digital Synthesizer David Lechner
2026-02-22 10:01 ` Rodrigo Alencar
2026-02-22 20:32 ` David Lechner
2026-02-23 10:02 ` Nuno Sá
2026-03-01 13:38 ` Jonathan Cameron [this message]
2026-03-02 10:22 ` Rodrigo Alencar
2026-03-07 14:09 ` Jonathan Cameron
2026-03-07 16:50 ` David Lechner
2026-03-07 16:58 ` Jonathan Cameron
2026-03-07 18:54 ` Rodrigo Alencar
2026-03-07 20:01 ` David Lechner
2026-03-08 18:12 ` Jonathan Cameron
2026-03-09 9:52 ` Rodrigo Alencar
2026-03-09 13:14 ` Nuno Sá
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=20260301133806.5e706756@jic23-huawei \
--to=jic23@kernel.org \
--cc=455.rodrigo.alencar@gmail.com \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=noname.nuno@gmail.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=rodrigo.alencar@analog.com \
/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