[PATCH V11 4/9] iio: imu: inv_icm42607: Add I2C and SPI For icm42607

Andy Shevchenko andriy.shevchenko at intel.com
Thu Jun 11 00:49:41 PDT 2026


On Wed, Jun 10, 2026 at 12:54:48PM -0500, Chris Morgan wrote:

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

...

>  drivers/iio/imu/Kconfig                       |   1 +
>  drivers/iio/imu/Makefile                      |   1 +
>  drivers/iio/imu/inv_icm42607/Kconfig          |  30 +++++
>  drivers/iio/imu/inv_icm42607/Makefile         |  10 ++

These should be part of the previous patch.

...

> +config INV_ICM42607
> +	tristate

To make it compilable w.o. SPI/I2C make this as

	tristate "Inven... Core driver" if COMPILE_TEST


> +	select IIO_BUFFER
> +	select IIO_INV_SENSORS_TIMESTAMP

...

> +obj-$(CONFIG_INV_ICM42607_I2C) += inv-icm42607-i2c.o
> +inv-icm42607-i2c-y += inv_icm42607_i2c.o
> +
> +obj-$(CONFIG_INV_ICM42607_SPI) += inv-icm42607-spi.o
> +inv-icm42607-spi-y += inv_icm42607_spi.o

Add each of them in a separate patch.

...

> +#include <linux/device.h>

Why?
And a lot of missing headers (bitfield.h, dev_printk.h, mod_devicetable.h, err.h)

> +#include <linux/i2c.h>
> +#include <linux/module.h>
> +#include <linux/regmap.h>

...

> +static int inv_icm42607_probe(struct i2c_client *client)
> +{
> +	const struct inv_icm42607_hw *hw;
> +	struct regmap *regmap;
> +
> +	hw = i2c_get_match_data(client);
> +	if (!hw)
> +		return dev_err_probe(&client->dev, -ENODEV,
> +				     "Failed to get i2c data\n");

Add

	struct device *dev = &client->dev;

and modify this and other eligible pieces accordingly.

		return dev_err_probe(dev, -ENODEV, "Failed to get i2c data\n");

> +	regmap = devm_regmap_init_i2c(client, &inv_icm42607_regmap_config);
> +	if (IS_ERR(regmap))
> +		return dev_err_probe(&client->dev, PTR_ERR(regmap),
> +				     "Failed to register i2c regmap %ld\n",

Do not duplicate a printing of an error code.

> +				     PTR_ERR(regmap));

		return dev_err_probe(dev, PTR_ERR(regmap),
				     "Failed to register i2c regmap\n");

> +	return inv_icm42607_core_probe(regmap, hw, inv_icm42607_i2c_bus_setup);
> +}
> +

...

> +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_spi.c

As per above.

-- 
With Best Regards,
Andy Shevchenko





More information about the Linux-rockchip mailing list