All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: David Lechner <dlechner@baylibre.com>
Cc: "Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] iio: adc: ad7173: fix num_slots on most chips
Date: Fri, 4 Jul 2025 10:11:59 +0100	[thread overview]
Message-ID: <20250704101159.000013fd@huawei.com> (raw)
In-Reply-To: <20250703-iio-adc-ad7173-fix-num_slots-on-most-chips-v1-1-326c5d113e15@baylibre.com>

On Thu, 03 Jul 2025 17:16:31 -0500
David Lechner <dlechner@baylibre.com> wrote:

> Fix the num_slots value for most chips in the ad7173 driver. The number
> of slots corresponds to the number of CHANNEL registers on each chip.
> 
> Fixes: 4310e15b3140 ("iio: adc: ad7173: don't make copy of ad_sigma_delta_info struct")
> Signed-off-by: David Lechner <dlechner@baylibre.com>

Perhaps worth calling out that for many chips it seems to be falsely limiting
the number of slots which is a functionality limitation I think rather
than a bug.  The ones going the other way are more of a problem though!

Jonathan

> ---
> FYI, the bug actually existed before the commit I used for Fixes:, but
> that commit did major refactoring involving multiple drivers that would
> be too complicated to try to backport to older kernels.
> 
> I will try to send a separate fix to stable@ to fix the bug in it's
> original form on older kernels as that is just a one-liner.
> ---
>  drivers/iio/adc/ad7173.c | 37 +++++++++++++++++++++++++++----------
>  1 file changed, 27 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7173.c b/drivers/iio/adc/ad7173.c
> index dd9fa35555c79ead5a1b88d1dc6cc3db122502be..9c197cea11eb955becf4b9b97246379fa9c5da13 100644
> --- a/drivers/iio/adc/ad7173.c
> +++ b/drivers/iio/adc/ad7173.c
> @@ -771,10 +771,27 @@ static const struct ad_sigma_delta_info ad7173_sigma_delta_info_8_slots = {
>  	.num_slots = 8,
>  };
>  
> +static const struct ad_sigma_delta_info ad7173_sigma_delta_info_16_slots = {
> +	.set_channel = ad7173_set_channel,
> +	.append_status = ad7173_append_status,
> +	.disable_all = ad7173_disable_all,
> +	.disable_one = ad7173_disable_one,
> +	.set_mode = ad7173_set_mode,
> +	.has_registers = true,
> +	.has_named_irqs = true,
> +	.supports_spi_offload = true,
> +	.addr_shift = 0,
> +	.read_mask = BIT(6),
> +	.status_ch_mask = GENMASK(3, 0),
> +	.data_reg = AD7173_REG_DATA,
> +	.num_resetclks = 64,
> +	.num_slots = 16,
> +};
> +
>  static const struct ad7173_device_info ad4111_device_info = {
>  	.name = "ad4111",
>  	.id = AD4111_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 8,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -796,7 +813,7 @@ static const struct ad7173_device_info ad4111_device_info = {
>  static const struct ad7173_device_info ad4112_device_info = {
>  	.name = "ad4112",
>  	.id = AD4112_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 8,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -817,7 +834,7 @@ static const struct ad7173_device_info ad4112_device_info = {
>  static const struct ad7173_device_info ad4113_device_info = {
>  	.name = "ad4113",
>  	.id = AD4113_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 8,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -836,7 +853,7 @@ static const struct ad7173_device_info ad4113_device_info = {
>  static const struct ad7173_device_info ad4114_device_info = {
>  	.name = "ad4114",
>  	.id = AD4114_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 16,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -855,7 +872,7 @@ static const struct ad7173_device_info ad4114_device_info = {
>  static const struct ad7173_device_info ad4115_device_info = {
>  	.name = "ad4115",
>  	.id = AD4115_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 16,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -874,7 +891,7 @@ static const struct ad7173_device_info ad4115_device_info = {
>  static const struct ad7173_device_info ad4116_device_info = {
>  	.name = "ad4116",
>  	.id = AD4116_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in_div = 11,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -893,7 +910,7 @@ static const struct ad7173_device_info ad4116_device_info = {
>  static const struct ad7173_device_info ad7172_2_device_info = {
>  	.name = "ad7172-2",
>  	.id = AD7172_2_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_4_slots,
>  	.num_voltage_in = 5,
>  	.num_channels = 4,
>  	.num_configs = 4,
> @@ -926,7 +943,7 @@ static const struct ad7173_device_info ad7172_4_device_info = {
>  static const struct ad7173_device_info ad7173_8_device_info = {
>  	.name = "ad7173-8",
>  	.id = AD7173_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in = 17,
>  	.num_channels = 16,
>  	.num_configs = 8,
> @@ -943,7 +960,7 @@ static const struct ad7173_device_info ad7173_8_device_info = {
>  static const struct ad7173_device_info ad7175_2_device_info = {
>  	.name = "ad7175-2",
>  	.id = AD7175_2_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_4_slots,
>  	.num_voltage_in = 5,
>  	.num_channels = 4,
>  	.num_configs = 4,
> @@ -960,7 +977,7 @@ static const struct ad7173_device_info ad7175_2_device_info = {
>  static const struct ad7173_device_info ad7175_8_device_info = {
>  	.name = "ad7175-8",
>  	.id = AD7175_8_ID,
> -	.sd_info = &ad7173_sigma_delta_info_8_slots,
> +	.sd_info = &ad7173_sigma_delta_info_16_slots,
>  	.num_voltage_in = 17,
>  	.num_channels = 16,
>  	.num_configs = 8,
> 
> ---
> base-commit: 6742eff60460e77158d4f1b233f17e0345c9e66a
> change-id: 20250703-iio-adc-ad7173-fix-num_slots-on-most-chips-b982206a20b1
> 
> Best regards,


  reply	other threads:[~2025-07-04  9:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-03 22:16 [PATCH] iio: adc: ad7173: fix num_slots on most chips David Lechner
2025-07-04  9:11 ` Jonathan Cameron [this message]
2025-07-04 16:48 ` kernel test robot

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=20250704101159.000013fd@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=andy@kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@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 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.