Re: [PATCH 2/2] iio: imu: inv_icm42600: add support for icm42630
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260724012505.02029e51@jic23-huawei> |
On Tue, 21 Jul 2026 07:18:02 +0000 Jean-Baptiste Maneyrol <[email protected]> wrote: > > > >________________________________________ > >From: Jorijn van der Graaf <[email protected]> > >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; [email protected]; [email protected]; [email protected] > >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 <[email protected]> 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 <[email protected]> > > Thanks, > JB