Devicetree
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
Cc: "Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
	"David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Chris Morgan" <macromorgan@hotmail.com>,
	"Luca Weiss" <luca.weiss@fairphone.com>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Conor Dooley" <conor@kernel.org>
Subject: Re: [PATCH v3 2/3] iio: imu: inv_icm42600: drop the whoami check
Date: Sat, 1 Aug 2026 03:23:10 +0100	[thread overview]
Message-ID: <20260801032310.18f5f16d@jic23-huawei> (raw)
In-Reply-To: <20260728184351.75015-3-jorijnvdgraaf@catcrafts.net>

On Tue, 28 Jul 2026 20:43:50 +0200
Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net> wrote:

> A WHOAMI value differing from the one the compatible implies aborts
> probe with -ENODEV, preventing a register-compatible part described
> with a fallback compatible from probing at all.
> 
> The devicetree compatible is authoritative for which part is fitted:
> drop the check, and with it the now-unused whoami definitions. No
> warning replaces it, since probing via a fallback compatible is
> legitimate use, not a condition to report. This changes the probe
> outcome on mismatch for all parts the driver supports.
> 
> Tested via a backport to a Fairphone 6 running a 7.1-based kernel: its
> ICM-42630 (WHOAMI 0x0C), described with an icm42631 fallback compatible
> and matched as icm42631, probes silently, and accelerometer, gyroscope
> and temperature reads work.
> 
> Suggested-by: Conor Dooley <conor@kernel.org>
> Link: https://lore.kernel.org/all/20260722-creature-volley-0f083b904c1d@spud/
> Link: https://lore.kernel.org/all/20260728-extradite-yanking-42d918637f61@spud/
> Assisted-by: Claude:claude-fable-5
> Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>

Hi Jorijn,

I'm open to other opinions, particularly from those who are using
this driver but I think dropping any form of hint that the device isn't
the one we expect is too far when previous we just failed to probe.

We have a lot of drivers that issue such a print and my understanding
is that has been useful.  If we want to make it non threatening we could
phrase it as something like "Device ID XX is not the YY associate with the
FW specified device, probably using a valid fallback compatible".  That
would still provide the breadcrumb for anyone seeing an unexpected
part change on their device vs the DT.

Jonathan

 
> ---
> v3: drop the check and the now-unused whoami definitions instead of
> demoting the mismatch error to a warning (Conor); retested on the
> device.
> New in v2, as a demotion of the error to a warning.
>  drivers/iio/imu/inv_icm42600/inv_icm42600.h     |  9 ---------
>  .../iio/imu/inv_icm42600/inv_icm42600_core.c    | 17 -----------------
>  2 files changed, 26 deletions(-)
> 
> diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600.h b/drivers/iio/imu/inv_icm42600/inv_icm42600.h
> index b55d993f0264..88acdbab14c3 100644
> --- a/drivers/iio/imu/inv_icm42600/inv_icm42600.h
> +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600.h
> @@ -378,15 +378,6 @@ struct inv_icm42600_sensor_state {
>  #define INV_ICM42600_INT_SOURCE1_SMD_INT1_EN		BIT(3)
>  #define INV_ICM42600_INT_SOURCE1_WOM_INT1_EN		GENMASK(2, 0)
>  
> -#define INV_ICM42600_REG_WHOAMI				0x0075
> -#define INV_ICM42600_WHOAMI_ICM42600			0x40
> -#define INV_ICM42600_WHOAMI_ICM42602			0x41
> -#define INV_ICM42600_WHOAMI_ICM42605			0x42
> -#define INV_ICM42600_WHOAMI_ICM42686			0x44
> -#define INV_ICM42600_WHOAMI_ICM42622			0x46
> -#define INV_ICM42600_WHOAMI_ICM42688			0x47
> -#define INV_ICM42600_WHOAMI_ICM42631			0x5C
> -
>  /* User bank 1 (MSB 0x10) */
>  #define INV_ICM42600_REG_SENSOR_CONFIG0			0x1003
>  #define INV_ICM42600_SENSOR_CONFIG0_ZG_DISABLE		BIT(5)
> diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
> index dc97d8a274e3..963c9425e31a 100644
> --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
> +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
> @@ -103,7 +103,6 @@ const struct regmap_config inv_icm42600_spi_regmap_config = {
>  EXPORT_SYMBOL_NS_GPL(inv_icm42600_spi_regmap_config, "IIO_ICM42600");
>  
>  struct inv_icm42600_hw {
> -	u8 whoami;
>  	const char *name;
>  	const struct inv_icm42600_conf *conf;
>  };
> @@ -143,37 +142,30 @@ static const struct inv_icm42600_conf inv_icm42686_default_conf = {
>  
>  static const struct inv_icm42600_hw inv_icm42600_hw[INV_CHIP_NB] = {
>  	[INV_CHIP_ICM42600] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42600,
>  		.name = "icm42600",
>  		.conf = &inv_icm42600_default_conf,
>  	},
>  	[INV_CHIP_ICM42602] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42602,
>  		.name = "icm42602",
>  		.conf = &inv_icm42600_default_conf,
>  	},
>  	[INV_CHIP_ICM42605] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42605,
>  		.name = "icm42605",
>  		.conf = &inv_icm42600_default_conf,
>  	},
>  	[INV_CHIP_ICM42686] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42686,
>  		.name = "icm42686",
>  		.conf = &inv_icm42686_default_conf,
>  	},
>  	[INV_CHIP_ICM42622] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42622,
>  		.name = "icm42622",
>  		.conf = &inv_icm42600_default_conf,
>  	},
>  	[INV_CHIP_ICM42688] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42688,
>  		.name = "icm42688",
>  		.conf = &inv_icm42600_default_conf,
>  	},
>  	[INV_CHIP_ICM42631] = {
> -		.whoami = INV_ICM42600_WHOAMI_ICM42631,
>  		.name = "icm42631",
>  		.conf = &inv_icm42600_default_conf,
>  	},
> @@ -505,15 +497,6 @@ static int inv_icm42600_setup(struct inv_icm42600_state *st,
>  	unsigned int val;
>  	int ret;
>  
> -	/* check chip self-identification value */
> -	ret = regmap_read(st->map, INV_ICM42600_REG_WHOAMI, &val);
> -	if (ret)
> -		return ret;
> -	if (val != hw->whoami) {
> -		dev_err(dev, "invalid whoami %#02x expected %#02x (%s)\n",
> -			val, hw->whoami, hw->name);
> -		return -ENODEV;
> -	}
>  	st->name = hw->name;
>  
>  	/* reset to make sure previous state are not there */


  parent reply	other threads:[~2026-08-01  2:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-28 18:43 [PATCH v3 0/3] iio: imu: inv_icm42600: add support for icm42630 Jorijn van der Graaf
2026-07-28 18:43 ` [PATCH v3 1/3] iio: imu: inv_icm42600: sort device id tables numerically Jorijn van der Graaf
2026-07-28 18:43 ` [PATCH v3 2/3] iio: imu: inv_icm42600: drop the whoami check Jorijn van der Graaf
2026-07-28 18:52   ` sashiko-bot
2026-08-01  2:23   ` Jonathan Cameron [this message]
2026-07-28 18:43 ` [PATCH v3 3/3] dt-bindings: iio: imu: icm42600: add icm42630 Jorijn van der Graaf
2026-07-29 17:14   ` Conor Dooley

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=20260801032310.18f5f16d@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=conor@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jean-baptiste.maneyrol@tdk.com \
    --cc=jorijnvdgraaf@catcrafts.net \
    --cc=krzk+dt@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luca.weiss@fairphone.com \
    --cc=macromorgan@hotmail.com \
    --cc=nuno.sa@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox