From: "Arnd Bergmann" <arnd@arndb.de>
To: "Eliza Balas" <Eliza.Balas@analog.com>
Cc: "Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"derek.kiernan@amd.com" <derek.kiernan@amd.com>,
"dragan.cvetic@amd.com" <dragan.cvetic@amd.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v2 2/2] drivers: misc: adi-axi-tdd: Add TDD engine
Date: Thu, 28 Sep 2023 10:19:38 -0400 [thread overview]
Message-ID: <94110af1-2b32-4eb2-81be-2a79fc6973d8@app.fastmail.com> (raw)
In-Reply-To: <BN7PR03MB4545DC903A0D62639085591697C1A@BN7PR03MB4545.namprd03.prod.outlook.com>
On Thu, Sep 28, 2023, at 06:54, Balas, Eliza wrote:
>> <conor+dt@kernel.org>; derek.kiernan@amd.com; dragan.cvetic@amd.com; Greg Kroah-Hartman <gregkh@linuxfoundation.org>;
>> linux-kernel@vger.kernel.org; devicetree@vger.kernel.org
>> Subject: Re: [PATCH v2 2/2] drivers: misc: adi-axi-tdd: Add TDD engine
>>
>> [External]
>>
>> On Thu, Sep 28, 2023, at 11:28, Eliza Balas wrote:
>> > This patch introduces the driver for the new ADI TDD engine HDL.
>> > The generic TDD controller is in essence a waveform generator
>> > capable of addressing RF applications which require Time Division
>> > Duplexing, as well as controlling other modules of general
>> > applications through its dedicated 32 channel outputs.
>> >
>> > The reason of creating the generic TDD controller was to reduce
>> > the naming confusion around the existing repurposed TDD core
>> > built for AD9361, as well as expanding its number of output
>> > channels for systems which require more than six controlling signals.
>> >
>> > Signed-off-by: Eliza Balas <eliza.balas@analog.com>
>>
>> Thanks for your submission, I've had a first look at the driver
>> and the implementation of the interface you have chosen looks
>> all good to me, so I have no detailed comments on that.
>>
>> It would however help to explain the ideas you had for the
>> user-space interface design and summarize them in the changelog
>> text.
>>
>> You have chosen a low-level interface that wraps the individual
>> device registers and gives user space direct control over them.
>> The risk here is to lock yourself into the first design,
>> giving you less flexibility for future extensions, so it would
>> help to understand what the usage model is here.
>>
>> One risk is that there may be an in-kernel user in the future
>> when the TDD engine interacts with another device, so you
>> need a driver level interface, which would in turn break
>> if any user pokes the registers directly.
>>
>> Another possible problem I see is that an application written
>> for this driver would be incompatible with similar hardware
>> that has the same functionality but a different register-level
>> interface, or even a minor revision of the device that ends up
>> breaking one of the assumptions about the hardware design.
>>
>> In both cases, the likely answer is to have a higher-level
>> interface of some sort, but the downside of that would be
>> that it is much harder to come up with a good interface that
>> covers all possible use cases.
>>
>> Another question is whether you could fit into some
>> existing subsystem instead of creating a single-driver
>> interface. drivers/iio/ might be a good choice, as
>> it already handles both in-kernel and userspace users,
>> and provides a common abstraction for multiple classes
>> of devices that (without any domain knowledge in my case)
>> look similar enough that this could be added there.
>>
>
> We are using this driver with an iio-fake device
> https://github.com/analogdevicesinc/linux/blob/master/Documentation/devicetree/bindings/iio/jesd204/adi%2Ciio-fakedev.yaml
> so we can take advantage of the iio user-space interface.
I don't understand how that works yet: Do you mean that there
is user-space application that uses the tdd sysfs interface to
export an IIO device back into the kernel, or do you mean there
is a regular IIO device in with a kernel driver that is used
as the back-end for the tdd device, or something else?
> We talked in the previous v1 patch emails about adding this driver to
> an existing subsystem, and I raised the question if we should add it to
> the iio subsystem, but the driver is not registered into the IIO device
> tree, and does not rely on IIO kernel APIs, so I concluded that misc is
> a better choice.
> What do you think?
My feeling is that if you can make it fit into IIO, then this is
likely the better choice, unless you can guarantee that this is
a one-off driver with a single hardware implementation and
a single userspace. If you need the flexibility later to do
more things, the risk is that you end up duplicating a lot of
functionality that already exists in IIO.
This would of course mean using the interfaces provided by the
IIO core, with the addition of a tdd device type rather than
just having a standalone driver with just the sysfs interface
you have here.
Arnd
next prev parent reply other threads:[~2023-09-28 14:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-28 9:28 [PATCH v2 0/2] Add support for ADI TDD Engine Eliza Balas
2023-09-28 9:28 ` Eliza Balas
2023-09-28 9:28 ` [PATCH v2 1/2] dt-bindings: misc: adi,axi-tdd: Add device-tree binding for TDD engine Eliza Balas
2023-09-28 9:28 ` Eliza Balas
2023-10-02 16:32 ` Rob Herring
2023-10-02 16:46 ` Balas, Eliza
2023-10-02 19:21 ` Conor Dooley
2023-10-02 19:48 ` Balas, Eliza
2023-10-02 20:07 ` Conor Dooley
2023-10-02 20:23 ` Balas, Eliza
2023-10-03 8:54 ` Krzysztof Kozlowski
2023-09-28 9:28 ` [PATCH v2 2/2] drivers: misc: adi-axi-tdd: Add " Eliza Balas
2023-09-28 9:28 ` Eliza Balas
2023-09-28 10:07 ` Arnd Bergmann
2023-09-28 10:54 ` Balas, Eliza
2023-09-28 12:30 ` Nuno Sá
2023-09-28 14:19 ` Arnd Bergmann [this message]
2023-09-28 16:35 ` Nuno Sá
2023-10-02 16:02 ` Balas, Eliza
2023-09-28 11:52 ` Nuno Sá
2023-09-28 12:23 ` Greg Kroah-Hartman
2023-09-28 14:05 ` Balas, Eliza
2023-09-28 9:38 ` [PATCH v2 0/2] Add support for ADI TDD Engine Andreas Herrmann
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=94110af1-2b32-4eb2-81be-2a79fc6973d8@app.fastmail.com \
--to=arnd@arndb.de \
--cc=Eliza.Balas@analog.com \
--cc=conor+dt@kernel.org \
--cc=derek.kiernan@amd.com \
--cc=devicetree@vger.kernel.org \
--cc=dragan.cvetic@amd.com \
--cc=gregkh@linuxfoundation.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.