All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Robert Budai <robert.budai@analog.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
	Michael Hennerich <Michael.Hennerich@analog.com>,
	Nuno Sa <nuno.sa@analog.com>,
	Ramona Gradinariu <ramona.gradinariu@analog.com>,
	Antoniu Miclaus <antoniu.miclaus@analog.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Jonathan Corbet <corbet@lwn.net>, <linux-iio@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-doc@vger.kernel.org>
Subject: Re: [PATCH v7 3/6] iio: imu: adis: Add DIAG_STAT register
Date: Sun, 16 Feb 2025 16:43:13 +0000	[thread overview]
Message-ID: <20250216164313.495aabdc@jic23-huawei> (raw)
In-Reply-To: <20250211175706.276987-4-robert.budai@analog.com>

On Tue, 11 Feb 2025 19:57:00 +0200
Robert Budai <robert.budai@analog.com> wrote:

> Some devices may have more than 16 bits of status. This patch allows the user
> to specify the size of the DIAG_STAT register. It defaults to 2 if not
> specified. This is mainly for backward compatibility.
> 
> Co-developed-by: Ramona Gradinariu <ramona.gradinariu@analog.com>
> Signed-off-by: Ramona Gradinariu <ramona.gradinariu@analog.com>
> Co-developed-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
> Signed-off-by: Nuno Sá <nuno.sa@analog.com>
> Signed-off-by: Robert Budai <robert.budai@analog.com>
> ---
>  drivers/iio/imu/adis.c       | 19 ++++++++++++++++---
>  include/linux/iio/imu/adis.h |  3 +++
>  2 files changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c
> index 84344f052..b3f074116 100644
> --- a/drivers/iio/imu/adis.c
> +++ b/drivers/iio/imu/adis.c
> @@ -304,11 +304,21 @@ EXPORT_SYMBOL_NS(__adis_enable_irq, "IIO_ADISLIB");
>   */
>  int __adis_check_status(struct adis *adis)
>  {
> -	u16 status;
> +	unsigned int status;
> +	int diag_stat_bits;
> +	u16 status_16;
>  	int ret;
>  	int i;
>  
> -	ret = __adis_read_reg_16(adis, adis->data->diag_stat_reg, &status);
> +	if (adis->data->diag_stat_size)
> +		ret = adis->ops->read(adis, adis->data->diag_stat_reg, &status,
> +				      adis->data->diag_stat_size);
> +	else
> +	{

This doesn't match kernel style. 
	if (adis->data->diag_stat_size) {
		ret = adis->ops->read(adis, adis->data->diag_stat_reg, &status,
				      adis->data->diag_stat_size);
	} else {
		ret = __adis_read_reg_16(adis, adis->data->diag_stat_reg,
					 &status_16);
		status = status_16;
	}

Also the integer instead of pointer issue 0-day found. 

Jonathan


> +		ret = __adis_read_reg_16(adis, adis->data->diag_stat_reg,
> +					 status_16);
> +		status = status_16;
> +	}
>  	if (ret)
>  		return ret;
>  
> @@ -317,7 +327,10 @@ int __adis_check_status(struct adis *adis)
>  	if (status == 0)
>  		return 0;
>  
> -	for (i = 0; i < 16; ++i) {
> +	diag_stat_bits = BITS_PER_BYTE * (adis->data->diag_stat_size ?
> +					  adis->data->diag_stat_size : 2);
> +
> +	for (i = 0; i < diag_stat_bits; ++i) {
>  		if (status & BIT(i)) {
>  			dev_err(&adis->spi->dev, "%s.\n",
>  				adis->data->status_error_msgs[i]);
> diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h
> index 52652f51d..35797fe93 100644
> --- a/include/linux/iio/imu/adis.h
> +++ b/include/linux/iio/imu/adis.h
> @@ -44,6 +44,8 @@ struct adis_timeout {
>   * @glob_cmd_reg: Register address of the GLOB_CMD register
>   * @msc_ctrl_reg: Register address of the MSC_CTRL register
>   * @diag_stat_reg: Register address of the DIAG_STAT register
> + * @diag_stat_size: 	Length (in bytes) of the DIAG_STAT register. If 0 the 
> + * 			default length is 2 bytes long.
>   * @prod_id_reg: Register address of the PROD_ID register
>   * @prod_id: Product ID code that should be expected when reading @prod_id_reg
>   * @self_test_mask: Bitmask of supported self-test operations
> @@ -70,6 +72,7 @@ struct adis_data {
>  	unsigned int glob_cmd_reg;
>  	unsigned int msc_ctrl_reg;
>  	unsigned int diag_stat_reg;
> +	unsigned int diag_stat_size;
>  	unsigned int prod_id_reg;
>  
>  	unsigned int prod_id;


  parent reply	other threads:[~2025-02-16 16:43 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-11 17:56 [PATCH v7 0/6] Add support for ADIS16550 Robert Budai
2025-02-11 17:56 ` [PATCH v7 1/6] iio: imu: adis: Add custom ops struct Robert Budai
2025-02-11 17:56 ` [PATCH v7 2/6] iio: imu: adis: Add reset to custom ops Robert Budai
2025-02-11 17:57 ` [PATCH v7 3/6] iio: imu: adis: Add DIAG_STAT register Robert Budai
2025-02-13  3:55   ` kernel test robot
2025-02-13  4:27   ` kernel test robot
2025-02-13  5:40   ` kernel test robot
2025-02-13 17:57   ` kernel test robot
2025-02-16 16:43   ` Jonathan Cameron [this message]
2025-02-11 17:57 ` [PATCH v7 4/6] dt-bindings: iio: Add adis16550 bindings Robert Budai
2025-02-12  7:00   ` Krzysztof Kozlowski
2025-02-11 17:57 ` [PATCH v7 5/6] iio: imu: adis16550: add adis16550 support Robert Budai
2025-02-16 16:54   ` Jonathan Cameron
2025-02-11 17:57 ` [PATCH v7 6/6] docs: iio: add documentation for adis16550 driver Robert Budai
2025-02-16 16:56   ` Jonathan Cameron
2025-02-16 16:40 ` [PATCH v7 0/6] Add support for ADIS16550 Jonathan Cameron

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=20250216164313.495aabdc@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=antoniu.miclaus@analog.com \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=ramona.gradinariu@analog.com \
    --cc=robert.budai@analog.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 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.