All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Chris Morgan" <macroalpha82@gmail.com>
Cc: krzk+dt@kernel.org, robh@kernel.org, conor+dt@kernel.org,
	devicetree@vger.kernel.org
Subject: Re: [PATCH V5 04/11] iio: imu: inv_icm42607: Add I2C and SPI For icm42607
Date: Sat, 09 May 2026 20:08:51 +0000	[thread overview]
Message-ID: <20260509200852.677A6C2BCB2@smtp.kernel.org> (raw)
In-Reply-To: <20260509191907.24734-5-macroalpha82@gmail.com>

Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
- [High] Missing NULL check for match data leads to kernel panic.
- [Medium] Incorrect regmap ranges configuration forces an unnecessary dummy read of register 0 before every access.
- [Medium] The driver ignores a mismatched WHOAMI value due to a missing return statement.
- [Medium] The SPI bus setup unconditionally forces 4-wire SPI mode, breaking 3-wire configurations.
- [Low] IRQ mapping failures are treated as valid interrupts.
--

commit 52263283b912417c0c4ca749220464cd92114b9c
Author: Chris Morgan <macromorgan@hotmail.com>

iio: imu: inv_icm42607: Add I2C and SPI For icm42607

Add I2C and SPI driver support for InvenSense ICM-42607 devices.
Add necessary Kconfig and Makefile to allow building of (incomplete)
driver.

> diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c
> index e84e84416dab5..8ff51711ab1fe 100644
> --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c
> +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c
> @@ -15,6 +15,57 @@
>  
>  #include "inv_icm42607.h"
>  
> +static const struct regmap_range_cfg inv_icm42607_regmap_ranges[] = {
> +	{
> +		.name = "user bank",
> +		.range_min = 0x0000,
> +		.range_max = 0x00FF,
> +		.window_start = 0,
> +		.window_len = 0x0100,
> +	},
> +};

Is this regmap range configuration missing a selector register?

Because selector_reg and selector_mask default to 0, and max_register is
0xFF, paging might be unnecessary here. During regmap access to registers
other than 0, the page check could evaluate to true and trigger a dummy read
on register 0 before every transaction.

[ ... ]

> diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c b/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c
> new file mode 100644
> index 0000000000000..3859517f88c94
> --- /dev/null
> +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c
> @@ -0,0 +1,84 @@
[ ... ]
> +static int inv_icm42607_probe(struct i2c_client *client)
> +{
> +	const struct inv_icm42607_hw *hw = i2c_get_match_data(client);
> +	struct regmap *regmap;

If the device is bound dynamically via sysfs without a matching device ID,
can i2c_get_match_data() return NULL? If so, could this lead to a kernel
panic when hw is unconditionally dereferenced later in
inv_icm42607_core_probe()?

[ ... ]

> diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_spi.c b/drivers/iio/imu/inv_icm42607/inv_icm42607_spi.c
> new file mode 100644
> index 0000000000000..4a38a11f2baef
> --- /dev/null
> +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_spi.c
> @@ -0,0 +1,91 @@
[ ... ]
> +static int inv_icm42607_spi_bus_setup(struct inv_icm42607_state *st)
> +{
> +	unsigned int val;
> +	int ret;
> +
> +	ret = regmap_set_bits(st->map, INV_ICM42607_REG_DEVICE_CONFIG,
> +			      INV_ICM42607_DEVICE_CONFIG_SPI_AP_4WIRE);

Does this unconditionally force 4-wire SPI mode, even if the SPI controller
is configured for 3-wire mode?

If the hardware is physically connected using 3-wire SPI and configured with
spi-3wire in the device tree, will forcing the 4-wire bit break
communication? Should this check for SPI_3WIRE first?

> +	if (ret)
> +		return ret;
[ ... ]
> +static int inv_icm42607_probe(struct spi_device *spi)
> +{
> +	const struct inv_icm42607_hw *hw = spi_get_device_match_data(spi);
> +	struct regmap *regmap;

Similarly, can spi_get_device_match_data() return NULL here and cause a
kernel panic during probe if the device is bound dynamically?

[ ... ]

Could the WHOAMI mismatch warning be silently ignored?

drivers/iio/imu/inv_icm42607/inv_icm42607_core.c:inv_icm42607_setup() {
    ...
	if (val != st->hw->whoami)
		dev_warn_probe(dev, -ENODEV,
			       "invalid whoami %#02x expected %#02x (%s)\n",
			       val, st->hw->whoami, st->hw->name);

	ret = regmap_write(st->map, INV_ICM42607_REG_SIGNAL_PATH_RESET,
			   INV_ICM42607_SIGNAL_PATH_RESET_SOFT_RESET);
    ...
}

It looks like the driver attempts to abort by calling dev_warn_probe(), but
fails to return the result. Does this cause the -ENODEV error to be
discarded, allowing the driver to proceed configuring an unrecognized device?

Are IRQ mapping failures handled correctly during probe?

drivers/iio/imu/inv_icm42607/inv_icm42607_core.c:inv_icm42607_core_probe() {
    ...
	irq = fwnode_irq_get_byname(fwnode, "INT1");
	if (irq < 0)
		return dev_err_probe(dev, irq, "error missing INT1 interrupt\n");
    ...
}

fwnode_irq_get_byname() can return 0 if the interrupt exists but fails to be
mapped by the irq domain. By only checking if irq < 0, does this allow 0 to
pass as a valid IRQ, potentially failing later when requesting the threaded
IRQ?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260509191907.24734-1-macroalpha82@gmail.com?part=4

  reply	other threads:[~2026-05-09 20:08 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-09 19:18 [PATCH V5 00/11] Add Invensense ICM42607 Chris Morgan
2026-05-09 19:18 ` Chris Morgan
2026-05-09 19:18 ` [PATCH V5 01/11] dt-bindings: iio: imu: icm42600: Add mount-matrix to icm42600 Chris Morgan
2026-05-09 19:18   ` Chris Morgan
2026-05-09 19:18 ` [PATCH V5 02/11] dt-bindings: iio: imu: icm42600: Add icm42607 binding Chris Morgan
2026-05-09 19:18   ` Chris Morgan
2026-05-09 19:18 ` [PATCH V5 03/11] iio: imu: inv_icm42607: Add inv_icm42607 Core Driver Chris Morgan
2026-05-09 19:18   ` Chris Morgan
2026-05-09 19:41   ` sashiko-bot
2026-05-11 17:28   ` Jonathan Cameron
2026-05-11 17:28     ` Jonathan Cameron
2026-05-11 19:25     ` Chris Morgan
2026-05-11 19:25       ` Chris Morgan
2026-05-09 19:18 ` [PATCH V5 04/11] iio: imu: inv_icm42607: Add I2C and SPI For icm42607 Chris Morgan
2026-05-09 19:18   ` Chris Morgan
2026-05-09 20:08   ` sashiko-bot [this message]
2026-05-11 17:47   ` Jonathan Cameron
2026-05-11 17:47     ` Jonathan Cameron
2026-05-12 20:06     ` Andy Shevchenko
2026-05-12 20:06       ` Andy Shevchenko
2026-05-09 19:18 ` [PATCH V5 05/11] iio: imu: inv_icm42607: Add PM support for icm42607 Chris Morgan
2026-05-09 19:18   ` Chris Morgan
2026-05-09 19:58   ` sashiko-bot
2026-05-11 18:11   ` Jonathan Cameron
2026-05-11 18:11     ` Jonathan Cameron
2026-05-09 19:19 ` [PATCH V5 06/11] iio: imu: inv_icm42607: Add Buffer " Chris Morgan
2026-05-09 19:19   ` Chris Morgan
2026-05-09 19:44   ` sashiko-bot
2026-05-11 18:17   ` Jonathan Cameron
2026-05-11 18:17     ` Jonathan Cameron
2026-05-09 19:19 ` [PATCH V5 07/11] iio: imu: inv_icm42607: Add Temp Support in icm42607 Chris Morgan
2026-05-09 19:19   ` Chris Morgan
2026-05-09 19:19 ` [PATCH V5 08/11] iio: imu: inv_icm42607: Add Accelerometer for icm42607 Chris Morgan
2026-05-09 19:19   ` Chris Morgan
2026-05-09 20:02   ` sashiko-bot
2026-05-09 19:19 ` [PATCH V5 09/11] iio: imu: inv_icm42607: Add Wake on Movement to icm42607 Chris Morgan
2026-05-09 19:19   ` Chris Morgan
2026-05-09 19:52   ` sashiko-bot
2026-05-09 19:19 ` [PATCH V5 10/11] iio: imu: inv_icm42607: Add Gyroscope " Chris Morgan
2026-05-09 19:19   ` Chris Morgan
2026-05-09 20:02   ` sashiko-bot
2026-05-09 19:19 ` [PATCH V5 11/11] arm64: dts: rockchip: Add icm42607p IMU for RG-DS Chris Morgan
2026-05-09 19:19   ` Chris Morgan

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=20260509200852.677A6C2BCB2@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=macroalpha82@gmail.com \
    --cc=robh@kernel.org \
    --cc=sashiko@lists.linux.dev \
    /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.