From nobody Mon Sep 28 10:46:46 2026 Received: from out-2uec-a96.jellyfish.systems (out-2uec-a96.jellyfish.systems [63.250.43.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81BB7265CA8 for ; Sun, 23 Aug 2026 00:54:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=63.250.43.96 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787446503; cv=none; b=GUb0M3Haet7hLEQSVZck04F87HxUXJXPPbT01MpdjtZQBMCxGCfH8iWw9mTMmuYl3F5Xb0S0kuUTNMtZCxVDRe2MEdpoz8Gx6ZOvG1JOpSwNxIdNskgrLyDz8M7kHMDcMCRI+zwmH+RbkOa7GyQ7qwTy8aGBB7vbuh/JpFoFxSE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787446503; c=relaxed/simple; bh=SxZs0TJQm02I5QajaGKaSLCF9zExMU4iJ4Nbjpo/Lls=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z1ZMmOBBhfDRvs8COxUAQVpKpCB17FHcZ0ZaPAmomv5SQXY7RMOst4YzhzX2mfDjgiaF+9lArO/ihZoKMsvzlTmZS6LE8L0YiQ5DYk3RE/4NNVPduWQ0NJji1gYawz5t4iTjggZlDZkfEcm/DhEdEP95eO4dQ+k9SwcL0Ko56wQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net; spf=pass smtp.mailfrom=catcrafts.net; arc=none smtp.client-ip=63.250.43.96 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=catcrafts.net Received: from mail.privateemail.com (unknown [87.215.145.39]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.privateemail.com (Postfix) with ESMTPSA id 4hSFQN6pt3z8sWP; Sun, 23 Aug 2026 00:33:32 +0000 (UTC) From: Jorijn van der Graaf To: Jonathan Cameron , Jean-Baptiste Maneyrol Cc: Jorijn van der Graaf , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Morgan , Luca Weiss , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/3] iio: imu: inv_icm42600: sort device id tables numerically Date: Sun, 23 Aug 2026 02:33:18 +0200 Message-ID: <20260823003320.62192-2-jorijnvdgraaf@catcrafts.net> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> References: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Envelope-From: jorijnvdgraaf@catcrafts.net Content-Type: text/plain; charset="utf-8" The I2C, SPI and OF device id tables list the parts in the chip enum's declaration order, which is neither numeric nor alphabetical. Sort the entries numerically by part number so new entries have an unambiguous position. Suggested-by: Jonathan Cameron Link: https://lore.kernel.org/all/20260724012505.02029e51@jic23-huawei/ Assisted-by: Claude:claude-fable-5 Signed-off-by: Jorijn van der Graaf --- No changes in v5. drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c | 16 ++++++++-------- drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c b/drivers/iio/= imu/inv_icm42600/inv_icm42600_i2c.c index 28552d2db91d..e44ed6dcde02 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c @@ -77,10 +77,10 @@ static const struct i2c_device_id inv_icm42600_id[] =3D= { { .name =3D "icm42600", .driver_data =3D INV_CHIP_ICM42600 }, { .name =3D "icm42602", .driver_data =3D INV_CHIP_ICM42602 }, { .name =3D "icm42605", .driver_data =3D INV_CHIP_ICM42605 }, - { .name =3D "icm42686", .driver_data =3D INV_CHIP_ICM42686 }, { .name =3D "icm42622", .driver_data =3D INV_CHIP_ICM42622 }, - { .name =3D "icm42688", .driver_data =3D INV_CHIP_ICM42688 }, { .name =3D "icm42631", .driver_data =3D INV_CHIP_ICM42631 }, + { .name =3D "icm42686", .driver_data =3D INV_CHIP_ICM42686 }, + { .name =3D "icm42688", .driver_data =3D INV_CHIP_ICM42688 }, { } }; MODULE_DEVICE_TABLE(i2c, inv_icm42600_id); @@ -95,18 +95,18 @@ static const struct of_device_id inv_icm42600_of_matche= s[] =3D { }, { .compatible =3D "invensense,icm42605", .data =3D (void *)INV_CHIP_ICM42605, - }, { - .compatible =3D "invensense,icm42686", - .data =3D (void *)INV_CHIP_ICM42686, }, { .compatible =3D "invensense,icm42622", .data =3D (void *)INV_CHIP_ICM42622, - }, { - .compatible =3D "invensense,icm42688", - .data =3D (void *)INV_CHIP_ICM42688, }, { .compatible =3D "invensense,icm42631", .data =3D (void *)INV_CHIP_ICM42631, + }, { + .compatible =3D "invensense,icm42686", + .data =3D (void *)INV_CHIP_ICM42686, + }, { + .compatible =3D "invensense,icm42688", + .data =3D (void *)INV_CHIP_ICM42688, }, { } }; diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c b/drivers/iio/= imu/inv_icm42600/inv_icm42600_spi.c index faf743bc6444..3e2f4eb42e97 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c @@ -74,10 +74,10 @@ static const struct spi_device_id inv_icm42600_id[] =3D= { { .name =3D "icm42600", .driver_data =3D INV_CHIP_ICM42600 }, { .name =3D "icm42602", .driver_data =3D INV_CHIP_ICM42602 }, { .name =3D "icm42605", .driver_data =3D INV_CHIP_ICM42605 }, - { .name =3D "icm42686", .driver_data =3D INV_CHIP_ICM42686 }, { .name =3D "icm42622", .driver_data =3D INV_CHIP_ICM42622 }, - { .name =3D "icm42688", .driver_data =3D INV_CHIP_ICM42688 }, { .name =3D "icm42631", .driver_data =3D INV_CHIP_ICM42631 }, + { .name =3D "icm42686", .driver_data =3D INV_CHIP_ICM42686 }, + { .name =3D "icm42688", .driver_data =3D INV_CHIP_ICM42688 }, { } }; MODULE_DEVICE_TABLE(spi, inv_icm42600_id); @@ -92,18 +92,18 @@ static const struct of_device_id inv_icm42600_of_matche= s[] =3D { }, { .compatible =3D "invensense,icm42605", .data =3D (void *)INV_CHIP_ICM42605, - }, { - .compatible =3D "invensense,icm42686", - .data =3D (void *)INV_CHIP_ICM42686, }, { .compatible =3D "invensense,icm42622", .data =3D (void *)INV_CHIP_ICM42622, - }, { - .compatible =3D "invensense,icm42688", - .data =3D (void *)INV_CHIP_ICM42688, }, { .compatible =3D "invensense,icm42631", .data =3D (void *)INV_CHIP_ICM42631, + }, { + .compatible =3D "invensense,icm42686", + .data =3D (void *)INV_CHIP_ICM42686, + }, { + .compatible =3D "invensense,icm42688", + .data =3D (void *)INV_CHIP_ICM42688, }, { } }; --=20 2.55.0 From nobody Mon Sep 28 10:46:46 2026 Received: from out-2uec-a106.jellyfish.systems (out-2uec-a106.jellyfish.systems [63.250.43.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 099F01DF75A for ; Sun, 23 Aug 2026 00:39:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=63.250.43.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787445561; cv=none; b=MQ/pvqwIXya+1P1g3Ks4pjpKlTXCtkypO1T7qVMP6p7HB4qxysff91JR3PMUgcWls/iOFXVJYBnaI8wxjtk3sETV6ONJUBgFiIklrYBeRXtKNMY12epi6p8JqWo4Fi4tqy9aSGrtyXsPNNF+w7CejQVAGJEXZXpP3rdxzeCbexk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787445561; c=relaxed/simple; bh=g0F3xnJRJxxCMYaaA6dOWoIlAD58qtUBsqbxx0qTfeI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sHRlsrKBlgtzWZF9gW0xcwRUkF1hcmbiIGW3ET4ULzTKPsC+EW/WK3CZb5q9UGGR3HM59I8VSLKEyPDCjkLosJcESShGtb0c0ePSeH0txQuDvwAi/WQHH+9xecQrQ2BksOux+66T4oNaPujn4eoKBkH18Eiy20PI68u0OnOnEHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net; spf=pass smtp.mailfrom=catcrafts.net; arc=none smtp.client-ip=63.250.43.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=catcrafts.net Received: from mail.privateemail.com (unknown [87.215.145.39]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.privateemail.com (Postfix) with ESMTPSA id 4hSFQS61K0z8sWN; Sun, 23 Aug 2026 00:33:36 +0000 (UTC) From: Jorijn van der Graaf To: Jonathan Cameron , Jean-Baptiste Maneyrol Cc: Jorijn van der Graaf , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Morgan , Luca Weiss , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v5 2/3] iio: imu: inv_icm42600: log whoami mismatch instead of failing probe Date: Sun, 23 Aug 2026 02:33:19 +0200 Message-ID: <20260823003320.62192-3-jorijnvdgraaf@catcrafts.net> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> References: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Envelope-From: jorijnvdgraaf@catcrafts.net Content-Type: text/plain; charset="utf-8" A WHOAMI value differing from the one the compatible implies aborts probe with -ENODEV, which prevents a register-compatible part described with a fallback compatible from probing at all. The devicetree compatible is authoritative for which part is fitted: log the mismatch at info level and continue. The message keeps a breadcrumb for anyone seeing an unexpected part change on their device versus the devicetree; tmp117 takes the same trade at the same level for its fallback matches. A whoami of 0x00 or 0xff still fails probe: SPI has no transfer-level ack, so those values mean nothing answered. Otherwise the probe outcome on mismatch changes for all parts the driver supports. The check sits before the mismatch comparison; it does not depend on hw->whoami, since no supported part uses either value (the WHOAMI values the driver defines span 0x40-0x5C). inv_icm45600 carries the same guard nested in its mismatch branch. Tested via a backport to a Fairphone 6 running a 7.1-based kernel: its ICM-42630 (WHOAMI 0x0C), described with an icm42631 fallback compatible and matched as icm42631, probes with the one informational line, and accelerometer, gyroscope and temperature reads work. Suggested-by: Conor Dooley Suggested-by: Jonathan Cameron Assisted-by: Claude:claude-fable-5 Signed-off-by: Jorijn van der Graaf Reviewed-by: Andy Shevchenko --- v5: the no-response guard moves before the whoami-mismatch comparison as its own check (Andy); the four Link trailers are dropped (Andy, Jonathan); retested on the device. v4 kept the whoami read, logging the mismatch at info level (Jonathan, Conor), and added inv_icm45600's no-response guard; both prints use %#04x so the two ids render at equal width. v3 dropped the check and the whoami definitions entirely. New in v2, as a demotion of the error to a warning. .../iio/imu/inv_icm42600/inv_icm42600_core.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c b/drivers/iio= /imu/inv_icm42600/inv_icm42600_core.c index dc97d8a274e3..be8cbecdd92e 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -509,10 +510,20 @@ static int inv_icm42600_setup(struct inv_icm42600_sta= te *st, ret =3D regmap_read(st->map, INV_ICM42600_REG_WHOAMI, &val); if (ret) return ret; + + /* + * SPI interface has no ack mechanism. + * 0xFF or 0x00 whoami means no response from the device. + */ + if (val =3D=3D U8_MAX || val =3D=3D 0) + return dev_err_probe(dev, -ENODEV, + "invalid whoami %#04x expected %#04x (%s)\n", + val, hw->whoami, hw->name); + if (val !=3D hw->whoami) { - dev_err(dev, "invalid whoami %#02x expected %#02x (%s)\n", - val, hw->whoami, hw->name); - return -ENODEV; + dev_info(dev, + "device id %#04x is not the %#04x associated with the FW-specified dev= ice (%s), probably using a valid fallback compatible\n", + val, hw->whoami, hw->name); } st->name =3D hw->name; =20 --=20 2.55.0 From nobody Mon Sep 28 10:46:46 2026 Received: from out-2uec-a113.jellyfish.systems (out-2uec-a113.jellyfish.systems [63.250.43.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D89423EAB3 for ; Sun, 23 Aug 2026 00:39:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=63.250.43.113 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787445561; cv=none; b=koYuKJQDLH56446nUwmTyUe3bizvikx73kR++NBE1NWAlG9mHWs6g/nPSuuciCPyRgTWvwJ9JkT8Xzcdedl00IvU/sJI+YoR3rkGHBUaMjVLTRYVuTr7PdN5ROV/9EQdKYX4plUVErKnDBMa7YofzmFbrdbd/x5aZh24hQOiZ2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787445561; c=relaxed/simple; bh=/fwlB3mZ7oOlrc6UmNl0+D4YT+UrZyvZqvTW0ELXY7o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GvNfBQ7cNQi2x2dovhdMGa8CVt1Z4zgtEbozrFVDu0nPwabAQfE7p9OLjvTO9XmM575O1BGyw81Wsd3hHuVnQGWlVnC43TPXjZWCr/ZL2gvPqFbBN102ixAH169z7B0/ravvh/9jx+7Y/rIBHsz+zat/IVJ+hRmLxh1BK5gN9JA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net; spf=pass smtp.mailfrom=catcrafts.net; arc=none smtp.client-ip=63.250.43.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=catcrafts.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=catcrafts.net Received: from mail.privateemail.com (unknown [87.215.145.39]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.privateemail.com (Postfix) with ESMTPSA id 4hSFQX6MsRz8sWP; Sun, 23 Aug 2026 00:33:40 +0000 (UTC) From: Jorijn van der Graaf To: Jonathan Cameron , Jean-Baptiste Maneyrol Cc: Jorijn van der Graaf , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Morgan , Luca Weiss , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v5 3/3] dt-bindings: iio: imu: icm42600: add icm42630 Date: Sun, 23 Aug 2026 02:33:20 +0200 Message-ID: <20260823003320.62192-4-jorijnvdgraaf@catcrafts.net> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> References: <20260823003320.62192-1-jorijnvdgraaf@catcrafts.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Envelope-From: jorijnvdgraaf@catcrafts.net Content-Type: text/plain; charset="utf-8" The TDK InvenSense ICM-42630 is a 6-axis IMU of the ICM-42600 family, found e.g. in the Fairphone 6. Document its compatible with the ICM-42631 as fallback: TDK confirmed the part is similar to the ICM-42631 and driven by the same driver without modification. The dedicated compatible records the exact part so a difference can still be handled if one surfaces (the part has no public datasheet). Link: https://lore.kernel.org/all/BE1P281MB1426D6579C0E2709574549B6CEC22@BE= 1P281MB1426.DEUP281.PROD.OUTLOOK.COM/ Acked-by: Conor Dooley Assisted-by: Claude:claude-fable-5 Signed-off-by: Jorijn van der Graaf Acked-by lapsed with the rework. --- No changes in v5. v4: rebased over the icm42607 and mount-matrix changes to this file (no content change); added Conor's Acked-by. No changes in v3. v2: restructured to the icm42631 fallback form; Jean-Baptiste's v1 Acked-by lapsed with the rework. .../bindings/iio/imu/invensense,icm42600.yaml | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Documentation/devicetree/bindings/iio/imu/invensense,icm42600.= yaml b/Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml index 81b6e85decd5..9e22b603d47f 100644 --- a/Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml +++ b/Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml @@ -26,16 +26,20 @@ description: | =20 properties: compatible: - enum: - - invensense,icm42600 - - invensense,icm42602 - - invensense,icm42605 - - invensense,icm42607 - - invensense,icm42607p - - invensense,icm42622 - - invensense,icm42631 - - invensense,icm42686 - - invensense,icm42688 + oneOf: + - enum: + - invensense,icm42600 + - invensense,icm42602 + - invensense,icm42605 + - invensense,icm42607 + - invensense,icm42607p + - invensense,icm42622 + - invensense,icm42631 + - invensense,icm42686 + - invensense,icm42688 + - items: + - const: invensense,icm42630 + - const: invensense,icm42631 =20 reg: maxItems: 1 --=20 2.55.0