From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: David Lechner <dlechner@baylibre.com>
Cc: "Janani Sunil" <janani.sunil@analog.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Michael Hennerich" <Michael.Hennerich@analog.com>,
"Jonathan Cameron" <jic23@kernel.org>,
"Andy Shevchenko" <andy@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>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Linus Walleij" <linusw@kernel.org>,
"Bartosz Golaszewski" <brgl@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <skhan@linuxfoundation.org>,
"Michael Walle" <mwalle@kernel.org>,
linux@analog.com, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-doc@vger.kernel.org,
jananisunil.dev@gmail.com,
"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>
Subject: Re: [PATCH v4 05/14] iio: adc: Add AD7768 and AD7768-4 core support
Date: Sun, 23 Aug 2026 11:35:15 +0300 [thread overview]
Message-ID: <aoqww3LcT0yOLC-y@ashevche-desk.local> (raw)
In-Reply-To: <10d575af-2a2c-484b-82b0-0a00de1c50be@baylibre.com>
On Sat, Aug 22, 2026 at 12:30:05PM -0500, David Lechner wrote:
> On 8/21/26 9:06 AM, Janani Sunil wrote:
...
> > +static int ad7768_update_scan_mode(struct iio_dev *indio_dev,
> > + const unsigned long *scan_mask)
> > +{
> > + struct ad7768_state *st = iio_priv(indio_dev);
> > + unsigned int channel_mask;
> > + unsigned int standby_mask;
> > + int ret;
> > +
> > + channel_mask = ad7768_all_standby_mask(st);
> > + standby_mask = channel_mask;
>
> Would be helpful to have some comments to explain why XTAL gets special
> handling so that we don't have to look at the datasheet. (I see something
> similar later in the patch too.)
>
> > + if (st->clock_source == AD7768_CLOCK_SOURCE_XTAL)
> > + standby_mask &= ~BIT(st->chip_info->num_channels / 2);
> > +
> > + for (unsigned int c = 0; c < st->chip_info->num_channels; c++) {
> > + if (test_bit(c, scan_mask))
> > + standby_mask &= ~BIT(c);
> > + }
Make _mask:s to be unsigned long, and use direct operations on top, No need to
have for-loop I think.
> > + ret = regmap_update_bits(st->regmap, AD7768_REG_CH_STANDBY,
> > + channel_mask, standby_mask);
> > + if (ret)
> > + return ret;
> > +
> > + for (unsigned int c = 0; c < st->chip_info->num_channels; c++) {
> > + if (test_bit(c, scan_mask))
> > + ret = iio_backend_chan_enable(st->back, c);
> > + else
> > + ret = iio_backend_chan_disable(st->back, c);
> > + if (ret)
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
...
> > + /* ADC start-up time after reset: 1.66 ms max (datasheet Table 1) */
> > + fsleep(2000);
2 * USEC_PER_MSEC
...
> > + clock_name = ad7768_clock_names[st->clock_source];
> > + if (st->clock_source == AD7768_CLOCK_SOURCE_LVDS)
> > + st->mclk = devm_clk_get(dev, clock_name);
>
> This needs an explanation why we don't enable the LVDS clock right away.
>
> > + else if (device_property_present(dev, "clock-names"))
> > + st->mclk = devm_clk_get_enabled(dev, clock_name);
> > + else
> > + st->mclk = devm_clk_get_enabled(dev, NULL);
>
> The NULL option should work in all cases since there should only be one clock.
I disagree on such an approach in general. We should not encourage NULL cases
for the clocks. Some drivers (IRL we have such cases) might have need more
clocks in the future and this becomes a problem. I think the NULL must be
simply dropped. Always require the named clock.
> > + if (IS_ERR(st->mclk))
> > + return dev_err_probe(dev, PTR_ERR(st->mclk),
> > + "Failed to get master clock\n");
...
> > + /*
> > + * The datasheet does not specify a wake-up time. Allow 20 ms for the
> > + * ADC and digital clocks to restart.
> > + */
> > + fsleep(20000);
20 * USEC_PER_MSEC (don't forget to include time.h for these multipliers)
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2026-08-23 8:35 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 14:06 [PATCH v4 00/14] iio: adc: Add AD7768/AD7768-4 ADC driver support Janani Sunil
2026-08-21 14:06 ` [PATCH v4 01/14] iio: adc: adi-axi-adc: Initialize state mutex Janani Sunil
2026-08-23 18:52 ` Jonathan Cameron
2026-08-23 19:05 ` Jonathan Cameron
2026-08-21 14:06 ` [PATCH v4 02/14] dt-bindings: iio: adc: Add AD7768 Janani Sunil
2026-08-21 15:57 ` David Lechner
2026-08-23 1:45 ` Jonathan Cameron
2026-08-21 14:06 ` [PATCH v4 03/14] iio: backend: Add support for CRC Janani Sunil
2026-08-21 16:02 ` David Lechner
2026-08-21 14:06 ` [PATCH v4 04/14] iio: adc: adi-axi-adc: " Janani Sunil
2026-08-21 16:03 ` David Lechner
2026-08-21 14:06 ` [PATCH v4 05/14] iio: adc: Add AD7768 and AD7768-4 core support Janani Sunil
2026-08-22 17:30 ` David Lechner
2026-08-23 8:35 ` Andy Shevchenko [this message]
2026-08-25 10:43 ` Janani Sunil
2026-08-23 19:16 ` Jonathan Cameron
2026-08-21 14:06 ` [PATCH v4 06/14] iio: adc: ad7768: Add configurable sampling modes Janani Sunil
2026-08-23 19:25 ` Jonathan Cameron
2026-08-24 6:43 ` Andy Shevchenko
2026-08-21 14:07 ` [PATCH v4 07/14] iio: adc: ad7768: Add calibration controls Janani Sunil
2026-08-24 6:50 ` Andy Shevchenko
2026-08-21 14:07 ` [PATCH v4 08/14] iio: adc: ad7768: Add per-channel conversion delay Janani Sunil
2026-08-24 7:10 ` Andy Shevchenko
2026-08-25 13:17 ` Janani Sunil
2026-08-21 14:07 ` [PATCH v4 09/14] iio: adc: ad7768: Add VCM regulator support Janani Sunil
2026-08-24 7:13 ` Andy Shevchenko
2026-08-21 14:07 ` [PATCH v4 10/14] iio: adc: ad7768: Register GPIO auxiliary device Janani Sunil
2026-08-21 14:07 ` [PATCH v4 11/14] gpio: regmap: Use regmap_test_bits() for single bit reads Janani Sunil
2026-08-24 7:47 ` Andy Shevchenko
2026-08-21 14:07 ` [PATCH v4 12/14] gpio: regmap: Add optional runtime PM support Janani Sunil
2026-08-24 8:05 ` Andy Shevchenko
2026-08-25 13:50 ` Janani Sunil
2026-08-21 14:07 ` [PATCH v4 13/14] gpio: ad7768: Add AD7768 GPIO auxiliary driver Janani Sunil
2026-08-23 19:39 ` Jonathan Cameron
2026-08-24 8:13 ` Andy Shevchenko
2026-08-24 8:10 ` Andy Shevchenko
2026-08-21 14:07 ` [PATCH v4 14/14] Documentation: iio: Add AD7768 Documentation Janani Sunil
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=aoqww3LcT0yOLC-y@ashevche-desk.local \
--to=andriy.shevchenko@intel.com \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=brgl@kernel.org \
--cc=conor+dt@kernel.org \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=janani.sunil@analog.com \
--cc=jananisunil.dev@gmail.com \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@analog.com \
--cc=mwalle@kernel.org \
--cc=nuno.sa@analog.com \
--cc=olivier.moysan@foss.st.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=u.kleine-koenig@baylibre.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