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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.