Linux Documentation
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Janani Sunil <janani.sunil@analog.com>
Cc: "Nuno Sá" <nuno.sa@analog.com>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"David Lechner" <dlechner@baylibre.com>,
	"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 v3 02/14] iio: backend: Add support for CRC
Date: Sun, 16 Aug 2026 19:33:16 +0100	[thread overview]
Message-ID: <20260816193316.3ba3697b@jic23-huawei> (raw)
In-Reply-To: <20260816192725.672c0a83@jic23-huawei>

On Sun, 16 Aug 2026 19:27:25 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> On Thu, 13 Aug 2026 15:56:55 +0200
> Janani Sunil <janani.sunil@analog.com> wrote:
> 
> > Add a backend operation to enable or disable Cyclic Redundancy Check
> > processing for data integrity verification. When enabled, the backend
> > will generate, verify, or process CRC information for data samples
> > transmitted over the interface, allowing the host to detect corrupted
> > samples.  
> 
> The backend is generating them?  That seems odd. In my head at least
> backend is representing the host end of the data pipe.  So what this is
> enabling is the front end (the ADC itself) generating the CRC and
> the backend either just passing it on, or potentially checking it
> for us (the verification part).  So I think I'm either misunderstanding
> what this is, or it needs a rewrite.
> 

Ah.  It occurred to me what is going on here. You've written it to
allow for DAC usage as well.  Rather than clumping in and out in one
statement can we have separate sentences to say what it enables
in each direction.

> Jonathan
> 
> 
> > 
> > Signed-off-by: Janani Sunil <janani.sunil@analog.com>
> > ---
> >  drivers/iio/industrialio-backend.c | 33 +++++++++++++++++++++++++++++++++
> >  include/linux/iio/backend.h        |  6 ++++++
> >  2 files changed, 39 insertions(+)
> > 
> > diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-backend.c
> > index f7a4be8ec320..792c2333b057 100644
> > --- a/drivers/iio/industrialio-backend.c
> > +++ b/drivers/iio/industrialio-backend.c
> > @@ -886,6 +886,39 @@ int iio_backend_num_lanes_set(struct iio_backend *back, unsigned int num_lanes)
> >  }
> >  EXPORT_SYMBOL_NS_GPL(iio_backend_num_lanes_set, "IIO_BACKEND");
> >  
> > +/**
> > + * iio_backend_crc_enable - Enable the CRC generation.
> > + * @back: Backend device
> > + *
> > + * Enable Cyclic Redundancy Check processing for data integrity verification.
> > + * When enabled, the backend will generate, verify, or process CRC information
> > + * for data samples transmitted over the interface.
> > + *
> > + * RETURNS:
> > + * 0 on success, negative error number on failure.
> > + */
> > +int iio_backend_crc_enable(struct iio_backend *back)
> > +{
> > +	return iio_backend_op_call(back, crc_enable);
> > +}
> > +EXPORT_SYMBOL_NS_GPL(iio_backend_crc_enable, "IIO_BACKEND");
> > +
> > +/**
> > + * iio_backend_crc_disable - Disable the CRC generation.
> > + * @back: Backend device
> > + *
> > + * Disable Cyclic Redundancy Check processing. When disabled, the backend will
> > + * stop generating, verifying, or processing CRC information for data samples.
> > + *
> > + * RETURNS:
> > + * 0 on success, negative error number on failure.
> > + */
> > +int iio_backend_crc_disable(struct iio_backend *back)
> > +{
> > +	return iio_backend_op_call(back, crc_disable);
> > +}
> > +EXPORT_SYMBOL_NS_GPL(iio_backend_crc_disable, "IIO_BACKEND");
> > +
> >  /**
> >   * iio_backend_ddr_enable - Enable interface DDR (Double Data Rate) mode
> >   * @back: Backend device
> > diff --git a/include/linux/iio/backend.h b/include/linux/iio/backend.h
> > index 3f95ed1fdf9e..eddaddb47bea 100644
> > --- a/include/linux/iio/backend.h
> > +++ b/include/linux/iio/backend.h
> > @@ -133,6 +133,8 @@ enum iio_backend_capabilities {
> >   * @filter_type_set: Set filter type.
> >   * @interface_data_align: Perform the data alignment process.
> >   * @num_lanes_set: Set the number of lanes enabled.
> > + * @crc_enable: Enable CRC generation and verification.
> > + * @crc_disable: Disable CRC generation and verification.
> >   * @ddr_enable: Enable interface DDR (Double Data Rate) mode.
> >   * @ddr_disable: Disable interface DDR (Double Data Rate) mode.
> >   * @data_stream_enable: Enable data stream.
> > @@ -189,6 +191,8 @@ struct iio_backend_ops {
> >  			       enum iio_backend_filter_type type);
> >  	int (*interface_data_align)(struct iio_backend *back, u32 timeout_us);
> >  	int (*num_lanes_set)(struct iio_backend *back, unsigned int num_lanes);
> > +	int (*crc_enable)(struct iio_backend *back);
> > +	int (*crc_disable)(struct iio_backend *back);
> >  	int (*ddr_enable)(struct iio_backend *back);
> >  	int (*ddr_disable)(struct iio_backend *back);
> >  	int (*data_stream_enable)(struct iio_backend *back);
> > @@ -237,6 +241,8 @@ int iio_backend_filter_type_set(struct iio_backend *back,
> >  				enum iio_backend_filter_type type);
> >  int iio_backend_interface_data_align(struct iio_backend *back, u32 timeout_us);
> >  int iio_backend_num_lanes_set(struct iio_backend *back, unsigned int num_lanes);
> > +int iio_backend_crc_enable(struct iio_backend *back);
> > +int iio_backend_crc_disable(struct iio_backend *back);
> >  int iio_backend_ddr_enable(struct iio_backend *back);
> >  int iio_backend_ddr_disable(struct iio_backend *back);
> >  int iio_backend_data_stream_enable(struct iio_backend *back);
> >   
> 
> 


  parent reply	other threads:[~2026-08-16 18:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-13 13:56 [PATCH v3 00/14] iio: adc: Add AD7768/AD7768-4 ADC driver support Janani Sunil
2026-08-13 13:56 ` [PATCH v3 01/14] dt-bindings: iio: adc: Add AD7768 Janani Sunil
2026-08-16 18:24   ` Jonathan Cameron
2026-08-13 13:56 ` [PATCH v3 02/14] iio: backend: Add support for CRC Janani Sunil
     [not found]   ` <20260816192725.672c0a83@jic23-huawei>
2026-08-16 18:33     ` Jonathan Cameron [this message]
2026-08-13 13:56 ` [PATCH v3 03/14] iio: adc: adi-axi-adc: Initialize state mutex Janani Sunil
2026-08-16 18:29   ` Jonathan Cameron
2026-08-13 13:56 ` [PATCH v3 04/14] iio: adc: adi-axi-adc: Add support for CRC Janani Sunil
2026-08-13 13:56 ` [PATCH v3 05/14] iio: adc: Add AD7768 and AD7768-4 core support Janani Sunil
2026-08-13 13:56 ` [PATCH v3 06/14] iio: adc: ad7768: Add configurable sampling modes Janani Sunil
2026-08-16 19:35   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 07/14] iio: adc: ad7768: Add calibration controls Janani Sunil
2026-08-16 19:37   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 08/14] iio: adc: ad7768: Add per-channel conversion delay Janani Sunil
2026-08-13 13:57 ` [PATCH v3 09/14] iio: adc: ad7768: Add VCM regulator support Janani Sunil
2026-08-16 19:46   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 10/14] iio: adc: ad7768: Register GPIO auxiliary device Janani Sunil
2026-08-13 13:57 ` [PATCH v3 11/14] gpio: regmap: Use regmap_test_bits() for single bit reads Janani Sunil
2026-08-14  7:04   ` Linus Walleij
2026-08-14  7:28   ` Michael Walle
2026-08-14  8:28   ` Andy Shevchenko
2026-08-13 13:57 ` [PATCH v3 12/14] gpio: regmap: Add optional runtime PM support Janani Sunil
2026-08-14  7:07   ` Linus Walleij
2026-08-14  7:30   ` Michael Walle
2026-08-14  8:34   ` Andy Shevchenko
2026-08-16 17:59     ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 13/14] gpio: ad7768: Add AD7768 GPIO auxiliary driver Janani Sunil
2026-08-14  7:05   ` Linus Walleij
2026-08-14  8:43   ` Andy Shevchenko
2026-08-13 13:57 ` [PATCH v3 14/14] Documentation: iio: Add AD7768 Documentation Janani Sunil
2026-08-14  8:45 ` [PATCH v3 00/14] iio: adc: Add AD7768/AD7768-4 ADC driver support Andy Shevchenko

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=20260816193316.3ba3697b@jic23-huawei \
    --to=jic23@kernel.org \
    --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=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