From: "Nuno Sá" <noname.nuno@gmail.com>
To: "David Lechner" <dlechner@baylibre.com>,
"Angelo Dureghello" <adureghello@baylibre.com>,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Michael Hennerich" <Michael.Hennerich@analog.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Jonathan Cameron" <jic23@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Olivier Moysan" <olivier.moysan@foss.st.com>
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 8/9] iio: dac: ad3552r: add axi platform driver
Date: Mon, 09 Sep 2024 11:00:55 +0200 [thread overview]
Message-ID: <d48fa85725b27be77a5542e798c0dcbd4e08765b.camel@gmail.com> (raw)
In-Reply-To: <b289a789-0440-4c1f-9f75-6d7e8e04189d@baylibre.com>
Hi all,
Some comments on top of what David already said...
On Thu, 2024-09-05 at 15:40 -0500, David Lechner wrote:
> On 9/5/24 10:17 AM, Angelo Dureghello wrote:
>
> ...
>
> > +
> > +static int ad3552r_axi_read_raw(struct iio_dev *indio_dev,
> > + struct iio_chan_spec const *chan,
> > + int *val, int *val2, long mask)
> > +{
> > + struct ad3552r_axi_state *st = iio_priv(indio_dev);
> > + int err, ch = chan->channel;
> > +
> > + switch (mask) {
> > + case IIO_CHAN_INFO_SAMP_FREQ: {
> > + int clk_rate;
> > +
> > + err = iio_backend_read_raw(st->back, chan, &clk_rate, 0,
> > + IIO_CHAN_INFO_FREQUENCY);
>
> This seems odd to me. How does the backend know what frequency we want?
> It would make more sense to me if this somehow indicated that we were
> getting the SPI SCLK rate.
>
Yes, this sampling frequency bit seems very wrong atm. And the thing is, we're
not even getting SCLK. According to [1], the /4 and /8 is for clk_in which is
not the same as SCLK (unless I'm missing something).
OTOH, if in the backend patch, that clk_get() is somehow getting sclk, that's
wrong because sclk is an output clk of the IP. So we need to get clk_in which
should be (typically) 133MHz.
> > + if (err != IIO_VAL_INT)
>
> Would be better to call the variable ret instead of err if it can hold
> something besides an error code.
>
> > + return err;
> > +
> > + /*
> > + * Data stream SDR/DDR (clk_in/8 or clk_in/4 update rate).
> > + * Samplerate has sense in DDR only.
>
> We should also mention that this assumes QSPI in addtion to DDR enabled.
>
I understand the QSPI bit but why the DDR part? I just don't understand the
comment "Samplerate has sense in DDR only.". It needs way more explanation if
that is true...
> > + */
> > + if (st->single_channel)
> > + clk_rate = DIV_ROUND_CLOSEST(clk_rate, 4);
> > + else
> > + clk_rate = DIV_ROUND_CLOSEST(clk_rate, 8);
> > +
>
This division also looks to be very backend dependent. So it's far from ideal
being in here...
To me, the way we need to get this done is for the backend to effectively report
back SCLK (in a correct way). Then, depending on the number of bits per clk (4
for QSPI), the word size and DDR vs SDR we get the device sample rate. With it,
we then choose one of Jonathan's suggestion (a per channel attr might be less
confusing).
All the above said, I probably need to catch up on the above. It might happen
that David and Angelo already got some more info from the hdl guys while I was
on vacation.
[1]: https://analogdevicesinc.github.io/hdl/library/axi_ad3552r/index.html
- Nuno Sá
next prev parent reply other threads:[~2024-09-09 8:56 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-05 15:17 [PATCH v2 0/9] iio: add support for the ad3552r AXI DAC IP Angelo Dureghello
2024-09-05 15:17 ` [PATCH v2 1/9] dt-bindings: iio: dac: ad3552r: add io-backend property Angelo Dureghello
2024-09-05 16:28 ` Rob Herring (Arm)
2024-09-05 19:51 ` David Lechner
2024-09-08 12:29 ` Jonathan Cameron
2024-09-09 11:39 ` Angelo Dureghello
2024-09-09 19:16 ` Jonathan Cameron
2024-09-09 12:46 ` Conor Dooley
2024-09-09 14:03 ` Nuno Sá
2024-09-09 16:06 ` Conor Dooley
2024-09-10 8:12 ` Nuno Sá
2024-09-09 17:19 ` David Lechner
2024-09-09 17:38 ` David Lechner
2024-09-10 8:16 ` Nuno Sá
2024-09-11 8:45 ` Angelo Dureghello
2024-09-11 19:28 ` Conor Dooley
2024-09-05 15:17 ` [PATCH v2 2/9] iio: backend: extend features Angelo Dureghello
2024-09-08 12:38 ` Jonathan Cameron
2024-09-09 11:58 ` Angelo Dureghello
2024-09-05 15:17 ` [PATCH v2 3/9] iio: backend adi-axi-dac: " Angelo Dureghello
2024-09-08 15:11 ` Jonathan Cameron
2024-09-08 15:40 ` Christophe JAILLET
2024-09-05 15:17 ` [PATCH v2 4/9] iio: backend adi-axi-dac: add registering of child fdt node Angelo Dureghello
2024-09-05 19:19 ` David Lechner
2024-09-06 5:42 ` Nuno Sá
2024-09-06 13:52 ` David Lechner
2024-09-06 7:08 ` Nuno Sá
2024-09-08 12:36 ` Jonathan Cameron
2024-09-09 7:53 ` Nuno Sá
2024-09-05 15:17 ` [PATCH v2 5/9] dt-bindings: iio: dac: add ad3552r axi-dac compatible Angelo Dureghello
2024-09-05 16:28 ` Rob Herring (Arm)
2024-09-05 21:08 ` David Lechner
2024-09-06 7:22 ` Krzysztof Kozlowski
2024-09-06 9:11 ` Angelo Dureghello
2024-09-06 9:37 ` Krzysztof Kozlowski
2024-09-06 11:53 ` Nuno Sá
2024-09-06 12:13 ` Krzysztof Kozlowski
2024-09-06 13:52 ` Nuno Sá
2024-09-06 14:04 ` David Lechner
2024-09-06 16:36 ` Krzysztof Kozlowski
2024-09-06 16:42 ` David Lechner
2024-09-06 16:44 ` Krzysztof Kozlowski
2024-09-06 16:43 ` Krzysztof Kozlowski
2024-09-05 15:17 ` [PATCH v2 6/9] iio: dac: ad3552r: changes to use FIELD_PREP Angelo Dureghello
2024-09-05 20:59 ` David Lechner
2024-09-08 15:14 ` Jonathan Cameron
2024-09-08 15:15 ` Jonathan Cameron
2024-09-05 15:17 ` [PATCH v2 7/9] iio: dac: ad3552r: extract common code (no changes in behavior intended) Angelo Dureghello
2024-09-08 15:42 ` Jonathan Cameron
2024-09-08 15:53 ` Christophe JAILLET
2024-09-05 15:17 ` [PATCH v2 8/9] iio: dac: ad3552r: add axi platform driver Angelo Dureghello
2024-09-05 20:40 ` David Lechner
2024-09-08 15:49 ` Jonathan Cameron
2024-09-09 9:00 ` Nuno Sá [this message]
2024-09-08 16:07 ` Jonathan Cameron
2024-09-08 16:28 ` Christophe JAILLET
2024-09-09 13:35 ` Nuno Sá
2024-09-05 15:17 ` [PATCH v2 9/9] iio: ABI: add DAC sysfs synchronous_mode parameter Angelo Dureghello
2024-09-05 19:14 ` David Lechner
2024-09-08 12:26 ` Jonathan Cameron
2024-09-05 19:46 ` [PATCH v2 0/9] iio: add support for the ad3552r AXI DAC IP David Lechner
2024-09-06 9:07 ` Conor Dooley
2024-09-06 9:44 ` Angelo Dureghello
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=d48fa85725b27be77a5542e798c0dcbd4e08765b.camel@gmail.com \
--to=noname.nuno@gmail.com \
--cc=Michael.Hennerich@analog.com \
--cc=adureghello@baylibre.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=nuno.sa@analog.com \
--cc=olivier.moysan@foss.st.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).