Re: [PATCH 2/2] iio: imu: inv_icm42600: add support for icm42630

From: Jonathan Cameron

Date: Thu Jul 23 2026 - 20:25:27 EST


On Tue, 21 Jul 2026 07:18:02 +0000
Jean-Baptiste Maneyrol <Jean-Baptiste.Maneyrol@xxxxxxx> wrote:

> >
> >________________________________________
> >From: Jorijn van der Graaf <jorijnvdgraaf@xxxxxxxxxxxxx>
> >Sent: Monday, July 20, 2026 19:34
> >To: Jonathan Cameron; Jean-Baptiste Maneyrol
> >Cc: Jorijn van der Graaf; David Lechner; Nuno Sá; Andy Shevchenko; Rob Herring; Krzysztof Kozlowski; Conor Dooley; Chris Morgan; Luca Weiss; linux-iio@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> >Subject: [PATCH 2/2] iio: imu: inv_icm42600: add support for icm42630
> >
> >The TDK InvenSense ICM-42630 is a 6-axis IMU of the ICM-42600 family, found e. g. in the Fairphone 6. It is register-compatible with its siblings (the existing driver works on it unmodified) and reports WHOAMI value 0x0C. The part appears to
> >ZjQcmQRYFpfptBannerStart
> >This Message Is From an External Sender
> >This message came from outside your organization.
> >
> >ZjQcmQRYFpfptBannerEnd
> >
> >The TDK InvenSense ICM-42630 is a 6-axis IMU of the ICM-42600 family,
> >found e.g. in the Fairphone 6. It is register-compatible with its
> >siblings (the existing driver works on it unmodified) and reports
> >WHOAMI value 0x0C.
> >
> >The part appears to be a mobile SKU and has no public datasheet: the
> >identity comes from the Fairphone 6 platform documentation and
> >schematics naming the part, and the WHOAMI value was read from the
> >hardware, whose bank 0 register defaults match the ICM-42600 family
> >layout.
> >
> >Add the chip id, WHOAMI value and I2C/SPI match entries, using the
> >family default configuration like the ICM-42631.
> >
> >Tested on the Fairphone 6 via a backport of this change to the
> >device's 7.1-based kernel (only the id-table style adjusted to that
> >base), on a bit-banged SPI bus with INT1 wired to the SoC: probe,
> >accelerometer, gyroscope and temperature raw reads, all full-scale
> >ranges, multiple sampling frequencies, and watermark-paced FIFO reads
> >through the INT1 interrupt.
> >
> >Assisted-by: Claude:claude-fable-5
> >Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@xxxxxxxxxxxxx>

Just one minor thing inline

> >diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
> >index 28552d2db91d..c413904c8680 100644
> >--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
> >+++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c
> >@@ -81,6 +81,7 @@ static const struct i2c_device_id inv_icm42600_id[] = {
> > { .name = "icm42622", .driver_data = INV_CHIP_ICM42622 },
> > { .name = "icm42688", .driver_data = INV_CHIP_ICM42688 },
> > { .name = "icm42631", .driver_data = INV_CHIP_ICM42631 },
> >+ { .name = "icm42630", .driver_data = INV_CHIP_ICM42630 },
> > { }
> > };
> > MODULE_DEVICE_TABLE(i2c, inv_icm42600_id);
> >@@ -107,6 +108,9 @@ static const struct of_device_id inv_icm42600_of_matches[] = {
> > }, {
> > .compatible = "invensense,icm42631",
> > .data = (void *)INV_CHIP_ICM42631,
> >+ }, {
> >+ .compatible = "invensense,icm42630",
> >+ .data = (void *)INV_CHIP_ICM42630,
> > },
> > { }
> > };
> >diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
> >index faf743bc6444..a1d12ce3bf87 100644
> >--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
> >+++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c
> >@@ -78,6 +78,7 @@ static const struct spi_device_id inv_icm42600_id[] = {
> > { .name = "icm42622", .driver_data = INV_CHIP_ICM42622 },
> > { .name = "icm42688", .driver_data = INV_CHIP_ICM42688 },
> > { .name = "icm42631", .driver_data = INV_CHIP_ICM42631 },
> >+ { .name = "icm42630", .driver_data = INV_CHIP_ICM42630 },
> > { }
> > };
> > MODULE_DEVICE_TABLE(spi, inv_icm42600_id);
> >@@ -104,6 +105,9 @@ static const struct of_device_id inv_icm42600_of_matches[] = {
> > }, {
> > .compatible = "invensense,icm42631",
> > .data = (void *)INV_CHIP_ICM42631,
> >+ }, {
> >+ .compatible = "invensense,icm42630",
> >+ .data = (void *)INV_CHIP_ICM42630,
> > },

Hmm. These tables should ideally be in numeric order. That can be
a separate follow up patch though. For this one can you just
put it before the 42631 here and wherever else that is relevant.

If you don't mind doing a precursor patch to reorder the entrees
then even better!

Thanks,

Jonathan

> > { }
> > };
> >--
> >2.55.0
> >
>
> Hello Jorijn,
>
> it is OK for me, thanks for the patch.
>
> Acked-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@xxxxxxx>
>
> Thanks,
> JB