From nobody Sat Sep 26 12:29:01 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013004.outbound.protection.outlook.com [52.101.83.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A40543D47BF; Tue, 1 Sep 2026 14:36:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273380; cv=fail; b=pjoF6lHoWa+CuFClq0ab/wuhYaxoysCVBm7Vy8x3sAXsIHXWhFQGHBekGU0EOkS44/R/NuaabarbV+o/AMTV1829SyR2PFwJSv5fB2vtDC4kidFBeYYiIsXdDjZuwwx8V6PcZNz8PfKRO/l9oz5XL0B0jLNn/Y+AJaPuC1VC3tg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273380; c=relaxed/simple; bh=dpxFdZ+y3B4h660eFs0fV7oB49YXbbYwsdvq2Q1IRQk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=dAYsBRLFNgQWYsIDoOmYmEmJNMqEjV5pT6t3fDz5HBJfp+1WcDR8AuYgk3WCOBEInEO32PUx299N5FbjALAkjrWQOd4Etpg/S+OJYbeTpJi4SPCDHgGnaJ9+ip78oKpmIbEBOujayAHr0D7WhKUJFUl1GV4f+8BVtfC7XZ0m9c4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=deKbfdxk; arc=fail smtp.client-ip=52.101.83.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="deKbfdxk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NfGqEq6wTFTnnRqRPVDWzp8jRLj5c4iWnXNmAmu4KSouNY/++kN69QfU/uWVxZVVJ+bh/H6+8+uCqLk3s3wyA6S0ZVn0UiYYW0gGjSaOw6t6bL8YuZ1dAGzTSgKn6X4YI+GpdXUDSXv6ChHWrdzBxTH/ISuCMn/+mZrnSvsvfkfDkGUlIQQvMOMTfEZwp+QIZfzhlfrSowgTqUpeOksFWaKEA/e6ni0A9qHFZ+30rO2HhJ3J3ZrAeqjiyX/CbgM6f5kF8mgd4OQ0v3VFVhqkteSwJPIJP+y4Dc2PL6ir0DhlVeBMn7q1w5kiFG23Q9XtPy9/QpA/i8aptvxJa8eLYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S0dL1jfWdBqWSQIftLeCEpHddgvEWrTHx+Ny/qN3zpc=; b=r6RfaR61x6+CCfjUBdmsRBBsL8ZAcrCEXOVUN2ab462amZH3x8A9PsmgxETRrsEmUADpD7l+xjN5hQil0cgISsv5rLmbPPl2PxY2iwmVfwrInscrINoKFVwEI61z+S1eNmivikooyhesz/nxr4A+vvsh6PT/t7pviQ3KhvoI2Al/zkbz23/E+06OSPBXKHONEQNyjem5h7XwowkSOqqX5Jf75D/yDymIl9K1amZc544z4FAUBl58zOXjn+ITQXRwfs41b/+S8EP1XW4eyChetVN29CXSQo7nhqnF9Nhe5dkKFnwCKVw3YrosZWhcrgUOPoHoE8t+PE9Cyp9qS661IQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S0dL1jfWdBqWSQIftLeCEpHddgvEWrTHx+Ny/qN3zpc=; b=deKbfdxkBvbae6v9LZKa6ZVbt9RxNgcQiaw0GCLeZko4/bdomljrO5kALx6PzJzDydvMZCIW/mD1obL4RtYaOsNe6zJMCp+FmV94l1rn6vexStI3YuT6BvT3llzn8t7nitFW8dN7xcf6IrzdsCCyXYtCHB4ZxlsswdxgRicRrfg= Received: from AS9PR06CA0317.eurprd06.prod.outlook.com (2603:10a6:20b:45b::27) by DU0PR02MB8524.eurprd02.prod.outlook.com (2603:10a6:10:3e7::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:14 +0000 Received: from AMS1EPF0000009C.eurprd02.prod.outlook.com (2603:10a6:20b:45b:cafe::16) by AS9PR06CA0317.outlook.office365.com (2603:10a6:20b:45b::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.13 via Frontend Transport; Tue, 1 Sep 2026 14:36:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000009C.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:13 +0000 Received: from SE-MAILARCH01W.axis.com (10.20.40.15) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:05 +0200 Received: from se-mail10w.axis.com (10.20.40.10) by SE-MAILARCH01W.axis.com (10.20.40.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id 82BB31427; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 73E98305CBC1; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:54 +0200 Subject: [PATCH v3 1/8] dt-bindings: Add InvenSense ICM-42370-p accelerometer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-1-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3622; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=dpxFdZ+y3B4h660eFs0fV7oB49YXbbYwsdvq2Q1IRQk=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9ujybL+uWL+7S3kFdP7rfrA66/3JxO60D9Mui22F6 tcmz9M42lHKwiDGxSArpshyzmh79P7kf7pzpJ0uwcxhZQIZwsDFKQATWXaEkaFjzXr+gMb+7EUJ m874Bx0Jj3BZ/eLl1+b454lf6l+5zl3M8E+rzm22JPsZ8T0yveXW+9kv2qksvM50/zDbj22a/XW VD7kA X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000009C:EE_|DU0PR02MB8524:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d4e56b7-20ea-4984-d7cb-08df08365fd2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|32650700020|36860700016|376014|7416014|1800799024|23010399003|82310400026|13003099007|921020|3023799007|10067099003|11063799006|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: oozMzWO7ZOTH1L98oRRfO4d6dR4IDHZImtXK/f929RhnbA4j2s/w0p9eoGIOulCVTcWjUsUkj6xR8ACdgfREsZUrcu/D/EVN1tdVrrgxpLRxfxZyEgBqEPcUhu5HGp81FMeu0IEuYckLajWZldUHKOembiiS9EIVJmU6aGba9gtmayJKEIjoHfGuDNqGb9gFfr7l6i5EDoWK9N9CbraxFKwcxb282DJvBTG7mDOMG3f25EI5s//VHlbIn/xDRelGSPL1ASWgltsTG5Xjdr7Iy0gndShvwuAZhLMJccnBZnsfPYjp7iqYy7U/ID3vglzq5v+LgSlTPAOw4qktIcVDMkosVwnfLCP0EiK9gmf+kHTPk8NKzVs8XHuPFXKamC/5CHduUxo0CUd2WkXNPrcrwjuO4BPbJt0O4c7PR05hss9sXB30pa4CL/z9say6PiYM/WGNwNMVlywYdpFA3SWcFUqDhpd6cVhaPMtGNJ8TfAJ6PikJY7kt38CPfaNQu5uG1sTmKTSORnkrCvSYaAJLGfK6Y72I4CoJTHMnEQYtBoaXNNOcMUsOV58LDBtiRA7/Cci0jbJMlc1QsFE+E1n7tYeW2LMw5DK0b5EpdrEU7bqAkQ+bs8+PVFdQscn6Os/c8yLEYpryUs0tn9bwyZfaAPwaf44h8o45X//WEidb/5nSSVhHyfy92MnS8xyhf4p4crqCyNJTXXyEi7+IrQuzSQ== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(32650700020)(36860700016)(376014)(7416014)(1800799024)(23010399003)(82310400026)(13003099007)(921020)(3023799007)(10067099003)(11063799006)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: koZBQpcEtYf1h4A8Oi1nOvirlHgy9yO6UMxEkFY9bshulXdBlvfbdleA3Kii3k2OrnOld5NKNFShV2VS+vASUK+zJtaKEjhvWAHN1YrkbX+52H0CTcDXSoicASpNSsaxZZ53Z4Fa+HM4s/azvRWNF2psAD2jDZA965Yg9+kNwkqAnZD8Lt5jGjJoUSO3Ep7fH+6q0+YqU96WlzujnLRKd/emVPDo6KshKNhjtaXAUaonyfCfFZLdpWTUZFP4F2awopdcxXfAXtvdAzMN4XGOraG69bQOP/DWS6fiVSt8ykoeDyZlUxGl4ytm7KF7jwPeGWX3qLaw4+XPu0/FLPs6JKyCDkT9GzCXYMT/zqFbv2Lz5qogMKkDZcS9Y1k4++AMqx+XbCdHhJjoUVqft3iCoPD5r622jHK72/eHGFdUj2SGRl9PHyVv4jVisk7gePVS X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:13.8454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d4e56b7-20ea-4984-d7cb-08df08365fd2 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB8524 ICM42370P is a 3-axis accelerometer. The device can support I2C, SPI and I3C. Add the supporting devicetree documentation for I2C as we have only tested using I2C protocol and leave the rest for future work. The device supports VDD and VDDIO operating range of 1.71V to 3.6V. Signed-off-by: Kanak Shilledar --- .../bindings/iio/accel/invensense,icm42370p.yaml | 87 ++++++++++++++++++= ++++ MAINTAINERS | 7 ++ 2 files changed, 94 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/accel/invensense,icm4237= 0p.yaml b/Documentation/devicetree/bindings/iio/accel/invensense,icm42370p.= yaml new file mode 100644 index 000000000000..d519dc7e63dd --- /dev/null +++ b/Documentation/devicetree/bindings/iio/accel/invensense,icm42370p.yaml @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/accel/invensense,icm42370p.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: InvenSense ICM-42370-P Accelerometer + +maintainers: + - Kanak Shilledar + - Henrik Grimler + +description: | + 3-axis accelerometer MotionTracking device. + + It supports I3C, I2C and SPI serial communication, has a 2.25kB FIFO + and 2 programmable interrupts with low-power wake-on-motion support. + + It also has programmable filters and an embedded temperature sensor. + + https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p + +properties: + compatible: + const: invensense,icm42370p + + reg: + maxItems: 1 + + interrupts: + minItems: 1 + maxItems: 2 + + interrupt-names: + minItems: 1 + maxItems: 2 + items: + enum: + - INT1 + - INT2 + + drive-open-drain: + type: boolean + description: + Whether irq is in open-drain mode. False means push-pull mode. + + mount-matrix: true + + vdd-supply: + description: Regulator operating range between 1.71V to 3.6V. + + vddio-supply: + description: Regulator operating range between 1.71V to 3.6V. + + spi-cpha: true + spi-cpol: true + +required: + - compatible + - reg + - interrupts + - vdd-supply + - vddio-supply + +allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + accelerometer@69 { + compatible =3D "invensense,icm42370p"; + reg =3D <0x69>; + interrupt-parent =3D <&gpio1>; + interrupts =3D <7 IRQ_TYPE_EDGE_FALLING>; + interrupt-names =3D "INT1"; + vdd-supply =3D <&vdd>; + vddio-supply =3D <&vddio>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 48dcb8b10743..177bcad75884 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13662,6 +13662,13 @@ S: Maintained F: Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml F: drivers/media/i2c/isl7998x.c =20 +INVENSENSE ICM-42370-P ACCELEROMETER +M: Kanak Shilledar +M: Henrik Grimler +L: kernel@axis.com +S: Maintained +F: Documentation/devicetree/bindings/iio/accel/invensense,icm42370p.yaml + INVENSENSE ICM-426xx IMU DRIVER M: Jean-Baptiste Maneyrol L: linux-iio@vger.kernel.org --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011014.outbound.protection.outlook.com [52.101.70.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 992FC39CCE9; Tue, 1 Sep 2026 14:36:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.14 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273374; cv=fail; b=Wtfm/q4de0vK4xHUs718cyGW05bjodLOMSvk8N5r6O++2ShMlZ5pmo1RQ3DdfE17wXtzcRQnlTeK/7cnDiA5Sv5v8Z1UMrOwmQfKqIj5uLD75gg4+oKfv8ehsVznyLf9usM6wr4gt8I0Xhz2HijHxgQ2uYvvMjR90Xxuy64GWkU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273374; c=relaxed/simple; bh=fjLo5147e2rmVJdCFIh14XSvqBl/OCz+/6xT7YiikiE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=dLC5CggaHiag0mBp8vZKVx93DdWN3VMkxcTd8FIO3yvnqTk0RbNHi+h7WP/BH9RTRN8yOV+08XuE/VUboXQCzmlxNvb72XDNVy86W1IcRjlOZPIiRHFFXnzPOSVQHsIjUp07oz63qXFCnvbN8EkKnDTfauEXPRj7zrKsfX5fpQ4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=gtXXoKE0; arc=fail smtp.client-ip=52.101.70.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="gtXXoKE0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OgBMV1yvTDV/hz3nFTxrItr0GS9L0ijHDpq5te/fqx82cXKBYbfKIt+RQp1FJzYNGxqlRsjfVyyh+295R3s/JLIxmTdJP1imj1QEoQxrCrcYZXTV2COfGBPWK17uif7INNnPcv+0jtJxkHPbp7XQ/2IbAhQc/2q+Ii2AC7DsROjBmqDQE0bfGTx2IqlbU+xfLrQ8NvfkPAH+P0VXuAP/5jepDUTxPmk1TsoDLPGdXrQb3o6qFtO6wmc2f5JP9RNzf62Hcm5n0nvmKQendMnuV441WN5dKBm/YWk9hA8+6/jqCLOPTXbKeYvyYoar3zADl5iE7J+noL8xsrs3xymmrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mdmeLz11TIF6xNirt1K+Ypjn2gLlps/NGkvBL95DXgw=; b=fvfO6PYMPAP3mbHPJvqifB1IIGNR1bEmbwfCYXUmVXY7w2WlpNvv2sq7wkiI1czRozTiFOy4qiIiKYAC78sJ+2nVnhBR3ufHjqcR2Gb0ozLcNsgk7AEzIJpkZKr+wdFSmQrva+fNw0ULJ7dCRuiTfBvpKK20Q60Kqrj7WSqYJmLf5mg+nMZN6WD1VSv3ZTxyLp/m/8c08kLUebdkdsNn1TYHvgvpMEARi0dTflTBJALtKeg/v3JZYGfxVXJ1s96IpalSeolfadSz1G+gAtYrN812W9GXOql5ecdp6aVnowidmBQy49hYwS9JG+B7xxfF9O0i5RkNzNJLqGkFaXJi+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mdmeLz11TIF6xNirt1K+Ypjn2gLlps/NGkvBL95DXgw=; b=gtXXoKE0klcWL9M9vi8dRxQcz4hqeGGQjzgQZe/gxiFtA/GVrYcKWSt9UUCvK90oCc6iBzCCxmHvD++zq31ucfN7DKZkaQLhlQSIqqrrQz+1jLOW5GjddFzwenyDJHgAJkfHGN8gNdvSRZHoc3/EXIc22OLPHcXPrLfs1apK/sQ= Received: from AS4P190CA0065.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::10) by PR3PR02MB6492.eurprd02.prod.outlook.com (2603:10a6:102:73::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:05 +0000 Received: from AMS1EPF0000004B.eurprd04.prod.outlook.com (2603:10a6:20b:656:cafe::a8) by AS4P190CA0065.outlook.office365.com (2603:10a6:20b:656::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 14:36:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000004B.mail.protection.outlook.com (10.167.16.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:05 +0000 Received: from se-mail10w.axis.com (10.20.40.10) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail01x.se.axis.com (10.4.0.28) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail01x.se.axis.com (Postfix) with ESMTP id 80E6B1382; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 742C0305CBC3; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:55 +0200 Subject: [PATCH v3 2/8] iio: imu: inv_icm42607: Update IIO channel macros Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-2-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4379; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=fjLo5147e2rmVJdCFIh14XSvqBl/OCz+/6xT7YiikiE=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9ujynznReRkSF6SrPT4wRH3kmcm1KOJGrr9YaRrTx oMTuwwOdpSyMIhxMciKKbKcM9oevT/5n+4caadLMHNYmUCGMHBxCsBEGH4w/OELybotdNjj3/KI p7mJkjvMVjWfNgo/WnHhfajqIz1BVWeG/7nbI3dnvtsiHLUmwYVl7zlby/KPlxvmqJ17MPFnFVP 6f24A X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000004B:EE_|PR3PR02MB6492:EE_ X-MS-Office365-Filtering-Correlation-Id: fcbdb86e-c7ab-479b-166d-08df08365ab4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|32650700020|23010399003|36860700016|82310400026|1800799024|376014|7416014|921020|3613699012|56012099006|10067099003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: GVDF/oi3y2dnNQXGlLY6vvR06zq8cpwxGV5/tPWoMsIWapj3Tilmeho+SyQy1leQvLe4K59Rg62QYHqFqmb5yB1O97mOOvPM9tICuAymdYjHdnKQ2dCnsCwSHMSjSpbPj5colQtRnlLlsZtkYOoLBJPF1eFvJrrUGW0Sv15dY6rPE1pB287YJKZykdN+vdrFDBTjHzZ81OnQ20h1zE8wJZVoXjVR8syRta+GP+ZFJjKumbbXZKV78C68hTdt/xPcf/N5yZHS1gitTrwsaIJm2PTEcD7N1tFmMrSB1ciQKNXeY4lNIdifalgyj7fH2znoz/VY12aeyTE4eBwxtHwRLT2HXwtnUpObcGErz6IrIH8nMsPP+BQwvj38/xzAW0G/qBo3+cHppddMv3UtAWxGC3l/tjzZPJe8TFOIztR90ftSgxkZZ2tx+OFf5cSeBoSIURTCirYx2xC1xlm7ZX8IPzNQj20RJklT99u1N6YEjEpAIwhw/YSxnaJuxqCIYFU2n3QpXKILLYLekEzsoiv8J0xOaZW7a7SfkCBZHgByguE3hqW9ilAMSF4znAR64k1SrLDeqCpxoILvE9mfVCAGqQrTBu/bwHtZ2FaeJhUjPuzDUH4fworBewZtfspa7DGWkDV+R4d+QAP4Wsfp3DcRT5fPcRbuEVPhEf06iYYSaXQCizyRERRCvq2bYhaSclQax0yHzURguj9uHafjfx27ZQVPx7LWF29wza4I3Q5jki3GF5sfKyNk8Ayl0vcsK/rHZDzuTUOUkuozIdbo4+GXhQ== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(32650700020)(23010399003)(36860700016)(82310400026)(1800799024)(376014)(7416014)(921020)(3613699012)(56012099006)(10067099003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3sJH6KehxL3orwNL49xKbKKD2afAg1qigPw1+kBwOC3Hf8ZGA2edQzAs/Y1iZntwgCPECghKMGfZ7CJi95FWh0lyClRJufo/g9Emp+1N5ro7HGq4EnRblySflaDdOualN10OlsQixtD1WdXjt0I89ZlORc9dpcRcLN37S0N5rFak535lT24mp4LAKsPkDLkwWgiypgUDvAPE0Z+cL1V+5yjdSfq06HJcYfUhHKf6BNpj38WJCZjzlCiRvJGat7yRSInMiX4Ofh4QP15x5Ypfmf/c4o/BXZ+dQPBmvv7swdujGZECMpJZWgA2521ePuac0iLIWDZf/gGJKQP8gfNlVKICfuvgr1d4uflva3I0TVP+jqHpjH9O3uU/MLU60l/cg3fGphO/2lwH4ybJ8zEVZ0bLW1mEn73kXxp5X728XWJlJ/IjRlJmQudEqidfzqiV X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:05.2518 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fcbdb86e-c7ab-479b-166d-08df08365ab4 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000004B.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR02MB6492 The INV_ICM42607_ACCEL_CHAN and INV_ICM42607_GYRO_CHAN macro had a third parameter of _ext_info, drop it and just point the .ext_info field to the respective inv_icm42607_*_ext_infos. This reduces the repeatitive calling of inv_icm42607_*_ext_infos struct in the IIO channel spec struct. Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c | 23 ++++++++++---------= ---- drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c | 23 ++++++++++---------= ---- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c b/drivers/ii= o/imu/inv_icm42607/inv_icm42607_accel.c index 0b3f035c2da0..8f61bc901452 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c @@ -17,7 +17,7 @@ #include "inv_icm42607.h" #include "inv_icm42607_temp.h" =20 -#define INV_ICM42607_ACCEL_CHAN(_modifier, _index, _ext_info) \ +#define INV_ICM42607_ACCEL_CHAN(_modifier, _index) \ { \ .type =3D IIO_ACCEL, \ .modified =3D 1, \ @@ -34,9 +34,14 @@ .storagebits =3D 16, \ .endianness =3D IIO_BE, \ }, \ - .ext_info =3D _ext_info, \ + .ext_info =3D inv_icm42607_accel_ext_infos, \ } =20 +static const struct iio_chan_spec_ext_info inv_icm42607_accel_ext_infos[] = =3D { + IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, inv_icm42607_get_mount_matrix), + { } +}; + enum inv_icm42607_accel_scan { INV_ICM42607_ACCEL_SCAN_X, INV_ICM42607_ACCEL_SCAN_Y, @@ -44,18 +49,10 @@ enum inv_icm42607_accel_scan { INV_ICM42607_ACCEL_SCAN_TEMP, }; =20 -static const struct iio_chan_spec_ext_info inv_icm42607_accel_ext_infos[] = =3D { - IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, inv_icm42607_get_mount_matrix), - { } -}; - static const struct iio_chan_spec inv_icm42607_accel_channels[] =3D { - INV_ICM42607_ACCEL_CHAN(IIO_MOD_X, INV_ICM42607_ACCEL_SCAN_X, - inv_icm42607_accel_ext_infos), - INV_ICM42607_ACCEL_CHAN(IIO_MOD_Y, INV_ICM42607_ACCEL_SCAN_Y, - inv_icm42607_accel_ext_infos), - INV_ICM42607_ACCEL_CHAN(IIO_MOD_Z, INV_ICM42607_ACCEL_SCAN_Z, - inv_icm42607_accel_ext_infos), + INV_ICM42607_ACCEL_CHAN(IIO_MOD_X, INV_ICM42607_ACCEL_SCAN_X), + INV_ICM42607_ACCEL_CHAN(IIO_MOD_Y, INV_ICM42607_ACCEL_SCAN_Y), + INV_ICM42607_ACCEL_CHAN(IIO_MOD_Z, INV_ICM42607_ACCEL_SCAN_Z), INV_ICM42607_TEMP_CHAN(INV_ICM42607_ACCEL_SCAN_TEMP), }; =20 diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_gyro.c index 5b4683c2dd1e..8e8d36461e51 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c @@ -17,7 +17,7 @@ #include "inv_icm42607.h" #include "inv_icm42607_temp.h" =20 -#define INV_ICM42607_GYRO_CHAN(_modifier, _index, _ext_info) \ +#define INV_ICM42607_GYRO_CHAN(_modifier, _index) \ { \ .type =3D IIO_ANGL_VEL, \ .modified =3D 1, \ @@ -34,9 +34,14 @@ .storagebits =3D 16, \ .endianness =3D IIO_BE, \ }, \ - .ext_info =3D _ext_info, \ + .ext_info =3D inv_icm42607_gyro_ext_infos, \ } =20 +static const struct iio_chan_spec_ext_info inv_icm42607_gyro_ext_infos[] = =3D { + IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, inv_icm42607_get_mount_matrix), + { } +}; + enum inv_icm42607_gyro_scan { INV_ICM42607_GYRO_SCAN_X, INV_ICM42607_GYRO_SCAN_Y, @@ -44,18 +49,10 @@ enum inv_icm42607_gyro_scan { INV_ICM42607_GYRO_SCAN_TEMP, }; =20 -static const struct iio_chan_spec_ext_info inv_icm42607_gyro_ext_infos[] = =3D { - IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, inv_icm42607_get_mount_matrix), - { } -}; - static const struct iio_chan_spec inv_icm42607_gyro_channels[] =3D { - INV_ICM42607_GYRO_CHAN(IIO_MOD_X, INV_ICM42607_GYRO_SCAN_X, - inv_icm42607_gyro_ext_infos), - INV_ICM42607_GYRO_CHAN(IIO_MOD_Y, INV_ICM42607_GYRO_SCAN_Y, - inv_icm42607_gyro_ext_infos), - INV_ICM42607_GYRO_CHAN(IIO_MOD_Z, INV_ICM42607_GYRO_SCAN_Z, - inv_icm42607_gyro_ext_infos), + INV_ICM42607_GYRO_CHAN(IIO_MOD_X, INV_ICM42607_GYRO_SCAN_X), + INV_ICM42607_GYRO_CHAN(IIO_MOD_Y, INV_ICM42607_GYRO_SCAN_Y), + INV_ICM42607_GYRO_CHAN(IIO_MOD_Z, INV_ICM42607_GYRO_SCAN_Z), INV_ICM42607_TEMP_CHAN(INV_ICM42607_GYRO_SCAN_TEMP), }; =20 --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011071.outbound.protection.outlook.com [52.101.70.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A053D3CA49C; Tue, 1 Sep 2026 14:36:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273378; cv=fail; b=cAuLTgcYe0gFw7VT1LvRpTX4OZ/3s84kmiiZjItfqxII1/4w2/0ksvgKGwiW7dipIZ2ABTEDgKLtOI8WzcZPX8wqequ+o7HTLthRdvnfIDxejATF3hPiliMy4bH/IiI6z5b/c1gsNjDRsHG9O8m9atLDmKjwZ1AjpSzu/idUoFw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273378; c=relaxed/simple; bh=Q2UjPbNs3Y55RwIsRz/A16YkOazQ9dy47f/QW1pO8uQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=fiDmCKuyy4lESY3myPwskAvLucFgVldp8sSrDVYpi6VxJkxYx9vHwuNkeNSdwelUleoKnYQb3pQ8+OOZzRsFD7OniEM4oKgbwf9TGYdrwgKebbe5L7TPQpzZ7u53sWsJq9GJ7e6jwIiZ1rIkfbIiT4cHg8Buo3DsnTlzxxsIYyI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=eIV3xuP6; arc=fail smtp.client-ip=52.101.70.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="eIV3xuP6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JQPioOKdjyUZxijqh0P837ErK3znuRzjHdRvNRomL1NUSb4yOz+dI+/V7lWUF1Eu8q4MRCjfhUUG7tIlebY78N3yMgf3tdJ5prZ5t6I0EsQ1Z1PFwQ34XqG0olIbaS7doVXqYzf3LwHTPnUquF+TW2Q6ycDOBhp6CpbgQ8HNITdOukh3YahKsslJ9aY1dMjVryWSPkyeSywanKKfd8UAQ2YqyDuibL7Zw5VRO3ZH/yLFdYck3FTIJlR2kEzIpnva5lxkyx+hBsNCQQSpsRJMKiweSNery7RAIXR3f/TWahhMQ8OON9XEcKh3b9onZNuMAo665GDWRDEZoNcj5D3OUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PQ+vMZqIlMuAJhcSGPDTCwYZNv5Bcg9FFHOV6iz0PXA=; b=Uu/jE6HSyl/FPACEChIW3UmzFaEHXGcKGqS5ex0kItHOwC15hkVUPSBIBBl9RK5m/VOALSspGyeBRmcIAxxYVmncxlJMp7BIizLzXY6zWY+bl6WEKzOU1twcErqIEkJwy4F+w9iOFe0J481jw1sX6QDW+6lmmx9TEMEIjgP5TbGJ9QKp7loOcy0SI8QAC0ykg4QninRzDcQkjtTfyISJonOH//kII4gg2q8jpIZ104vzHCgIAzRCT49oRzDSJpmkHzB9r27nMtqECWpo/kU5E2prWYghHqw9ptS0KDbwcvgxFrsl8l4NzBXaO4cnvi45r3DkW7xM+LlKGhHfg1SDqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PQ+vMZqIlMuAJhcSGPDTCwYZNv5Bcg9FFHOV6iz0PXA=; b=eIV3xuP6b2UmcGXatxmEyS6D036OMoZgPNffeKouFJMvY232w7lDkXu9bdJOEQmDVQC6upRCZJ3+eZRMP36Udo6kYGNzlxn2r4jDC+0jahHuqBZyK3TuuGdZ1iDr24Zl+RVxfkG01zCtkURfFlgqTpTSOMNT9fpzo9uJYX2VB74= Received: from AS9PR06CA0317.eurprd06.prod.outlook.com (2603:10a6:20b:45b::27) by DU0PR02MB9295.eurprd02.prod.outlook.com (2603:10a6:10:470::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:11 +0000 Received: from AMS1EPF0000009C.eurprd02.prod.outlook.com (2603:10a6:20b:45b:cafe::30) by AS9PR06CA0317.outlook.office365.com (2603:10a6:20b:45b::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.13 via Frontend Transport; Tue, 1 Sep 2026 14:36:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000009C.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:11 +0000 Received: from SE-MAILARCH01W.axis.com (10.20.40.15) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-mail11w.axis.com (10.20.40.11) by SE-MAILARCH01W.axis.com (10.20.40.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id 831401F10; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 75481305CBC5; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:56 +0200 Subject: [PATCH v3 3/8] iio: imu: inv_icm42607: Update _odr_to_period_us formatting Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-3-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2886; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=Q2UjPbNs3Y55RwIsRz/A16YkOazQ9dy47f/QW1pO8uQ=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9uiyI9+bGeXRKy9MsTzS7BvxesntI+dmz29sOLXKl Hftt/rEJx2lLAxiXAyyYoos54y2R+9P/qc7R9rpEswcViaQIQxcnAIwkfPnGP7XWs6RLH1/Jr6i pdNmaVj/i1P1l9s+/JN50Lsxd1OAig8zI8PpjHnzUxMYXGPXmS3V/Vz9cOG/bV3M7nqX4k3uCU0 Ny+EAAA== X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000009C:EE_|DU0PR02MB9295:EE_ X-MS-Office365-Filtering-Correlation-Id: 3db888f4-9109-4eaa-447f-08df08365e8a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|32650700020|82310400026|376014|7416014|23010399003|18002099003|22082099003|11063799006|3613699012|10067099003|56012099006|921020; X-Microsoft-Antispam-Message-Info: mJvqkVJlF5AU9mogxQbuMbHA72KCR8dCWbNiXWivk3U6PWhkywuuZJku7u4+qagfPrxn1gtUB304VlqMjDgp258dTll2qXRu4tESQd++CICs1N33CpSbMnNV4C6NAve9xJi068m1+bUFSOtzDT15JMNXbhf3Lcys+2+91b32sBFrgAmzxAqPdrvBcsREsMiEJsupEmc/YPMT53M2HOVeykhoPnqwcYpUNvCcMnwwRTx7VCeAmAPKYh89UgtOlQF8muI9xJx+mThAxjAAqykXa5PTDVeGrS7uKOaigpDzLMx7o9QUp9NGqrUQsPXCwUB2NQaG6uO2N5IpA7wclZn74KcDaXg5Sc+B3CekA9c/yooh8SIlQ0/c3haUAJRIuv1MrIJ31bJhj5rNyx2HDlkA5cLWDq49GYfr6FxwJyXWmFxiMtdlbDSBhsTsZ0GefuB6cICDFRv+RwZxEUEujcilCYHTzYsQ7Stt8WYrRmdz6zdSrk/MV5mj1klmOc7AGfyThORuaWSY1XXRHjOCixQT8FOP38QVugNOOmqtae4GXz87Yj5/9K4kFTtw1/0kr6dkBIV45Qk6q08hJsGuCR2AcD5CWO3UXoX1oKB3WlApJZQNRqtLA+DUwpSEa1rPGhcAb1+pjdMpRXxMs3lFxmUMKXis7O8C60FjFx8DEESTsN+exKTVDu+7FO99SV/5zhtYiD3aKKlCs8vvttBwcARcuWPwWlkfMU1kD+dUqGT7DKs/8aH2bignBw574NdpzXXCGtQj59wtRilg3Y9qU6pplg== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(32650700020)(82310400026)(376014)(7416014)(23010399003)(18002099003)(22082099003)(11063799006)(3613699012)(10067099003)(56012099006)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aKSLuK6FvwJFppvtEFeZ+BHzeQpwdBuaYI04Xy1gou0LuqMCsXzhgmUoFSKZe/EQzKKR92bDsPyxb+rAI1dIRStekSwNNA4FtvMjhMQ72ldgzLgBs4+mMpaTI7rOfTQrmn7q0d1jn4HX4WArtkj2uEqGT1O7FRssGtBVz8KiPJTWv9uC9Q3kmNVPB/UGNG9Ta1HmuNbUiIq275asacaD2ijfeo8ZWVjfvBhmcKQ5iAvqdmhX77ZdlTU7YprEIDapE0ncdTnnFGhKojHVfINu4O/3NdhYhOAV/ikVB8bmaZBXSoL6jGMaDGOdeE++EDYOlQk5PtyzU+JR5zGRzitV7U4nIIDD609WrChVbS5oW/Mt/EV9rYEVDPyfZe1vojRCIJQ0RVQbShHiO4/gfoy0UVTeERZ4Fv2KaMAa42TgaFhU1puSgydTYZmb4bBgsmUR X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:11.6929 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3db888f4-9109-4eaa-447f-08df08365e8a X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB9295 Update the function formatting for the inv_icm42607_odr_to_period_us function. This enhances the readability of the function and drop the unnecessary comments in the array elements. Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607.h | 20 +++++++------- drivers/iio/imu/inv_icm42607/inv_icm42607_core.c | 35 ++++++++------------= ---- 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607.h b/drivers/iio/imu/= inv_icm42607/inv_icm42607.h index 4d51b0da1aa1..fa85cf738cc0 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607.h +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607.h @@ -62,16 +62,16 @@ enum inv_icm42607_accel_fs { /* ODR values - Note Gyro does not support ODR less than 12.5Hz */ enum inv_icm42607_odr { INV_ICM42607_ODR_1600HZ =3D 5, - INV_ICM42607_ODR_800HZ =3D 6, - INV_ICM42607_ODR_400HZ =3D 7, - INV_ICM42607_ODR_200HZ =3D 8, - INV_ICM42607_ODR_100HZ =3D 9, - INV_ICM42607_ODR_50HZ =3D 10, - INV_ICM42607_ODR_25HZ =3D 11, - INV_ICM42607_ODR_12_5HZ =3D 12, - INV_ICM42607_ODR_6_25HZ_LP =3D 13, - INV_ICM42607_ODR_3_125HZ_LP =3D 14, - INV_ICM42607_ODR_1_5625HZ_LP =3D 15, + INV_ICM42607_ODR_800HZ, + INV_ICM42607_ODR_400HZ, + INV_ICM42607_ODR_200HZ, + INV_ICM42607_ODR_100HZ, + INV_ICM42607_ODR_50HZ, + INV_ICM42607_ODR_25HZ, + INV_ICM42607_ODR_12_5HZ, + INV_ICM42607_ODR_6_25HZ_LP, + INV_ICM42607_ODR_3_125HZ_LP, + INV_ICM42607_ODR_1_5625HZ_LP, INV_ICM42607_ODR_NB }; =20 diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_core.c index 190e998f7b8e..de3b158f446c 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c @@ -118,30 +118,17 @@ inv_icm42607_get_mount_matrix(struct iio_dev *indio_d= ev, static u32 inv_icm42607_odr_to_period_us(enum inv_icm42607_odr odr) { static const u32 odr_periods[INV_ICM42607_ODR_NB] =3D { - /* Reserved values */ - 0, 0, 0, 0, 0, - /* 1600Hz */ - 625, - /* 800Hz */ - 1250, - /* 400Hz */ - 2500, - /* 200Hz */ - 5000, - /* 100 Hz */ - 10000, - /* 50Hz */ - 20000, - /* 25Hz */ - 40000, - /* 12.5Hz */ - 80000, - /* 6.25Hz */ - 160000, - /* 3.125Hz */ - 320000, - /* 1.5625Hz */ - 640000, + [INV_ICM42607_ODR_1600HZ] =3D 625, + [INV_ICM42607_ODR_800HZ] =3D 1250, + [INV_ICM42607_ODR_400HZ] =3D 2500, + [INV_ICM42607_ODR_200HZ] =3D 5000, + [INV_ICM42607_ODR_100HZ] =3D 10000, + [INV_ICM42607_ODR_50HZ] =3D 20000, + [INV_ICM42607_ODR_25HZ] =3D 40000, + [INV_ICM42607_ODR_12_5HZ] =3D 80000, + [INV_ICM42607_ODR_6_25HZ_LP] =3D 160000, + [INV_ICM42607_ODR_3_125HZ_LP] =3D 320000, + [INV_ICM42607_ODR_1_5625HZ_LP] =3D 640000, }; =20 odr =3D clamp(odr, INV_ICM42607_ODR_1600HZ, INV_ICM42607_ODR_1_5625HZ_LP); --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010001.outbound.protection.outlook.com [52.101.69.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B24C1CD1E4; Tue, 1 Sep 2026 14:36:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273375; cv=fail; b=I7PND45z/ZUzvbMOsWz0h+Q21jhnYrim8Xtv7pQ8FS6M/nu/u8pRxwFgRSOqc4lp9A5jgcsc/l49MLRl6KIuMCsCFbDINogpO/nTJ4AdxSJn6Siy/rRHmozYL/LYVj6Lavpp2ymhCiGe5BSdxcIcKnqNe5pPDoQJ0ThONZQKovE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273375; c=relaxed/simple; bh=+4T+VaRXV0wF8O7dZaNBfbU9eX2aJT0FfOKi8AXnX1A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=GkP+WPPsAq8jYyv+dIEGPuODDJ2hJ9DmR6mOFbehE56KqsRDgHZf0RUnAm9gL6XOeTQHLQ6fMr+pmiYLC7wd63UvIBWzR93MAoC2Nx9CpVIpU+NW83+yHsC46jjk4XWEw5pVsAs43jRobqX43KuIVNdIIwauEbMlUzhjVtAS+lk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=hPZlrS+X; arc=fail smtp.client-ip=52.101.69.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="hPZlrS+X" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iYe46Z6z9/a9r15Dal6Sw+y2EFDyzROM0ZmMrDJnTXy5pyFMdh7lgjelIwTsEBrbufGCsO7ess6TTs3VEPJa+M6HmNpp1TWD0tOSxhOqiXDtOMPsEORmWZq2dZQ2xHmQ+b0CBDVy7sSgCP0ELUzkmuv2NTgZlAS4gFucF8i4bJ40Qzo9e9JyFcUtRW+KojBN9jdq6TqnZTR0GpAmPdeMAFO/9bNdVlgXpFFq47SG8x8VyLWQUPnKWTjP0Jz2dr3dKNU6ep9a6b7ZcZXyN6zpwD2tCsgNSFj0tqOZBx+z5Zdzy5jdRcbgO6Mev6LAGKK1/OENRhI6FzUcTUBY9piFAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=L+CUiTIuPn58YWSMkioNTXBZ9QcPtJO8gxzk0Pmk7H0=; b=LEdiusjIBdJFCrJygLm6P9Xc0kAoB1+h2eYhbS/T0PqBmXNXlbFnEp4ZeOGTW5Xp4Oq2uHB/o7Gp7MXa4FwswMQ/hbb5HkYfFL+Xels3m/gGm2cOjccglbPoDyA8fnDMO9aUGdWTNKRws17btPv5HItMm1BWR8flrG2AoFvUtIps8eQC3STZ90Osw4U/RmmRMdrAtKVAQmyudwoWmrfy2PmWFW2iacIDf5KgiWeejyImro36NxeIKP7tTcPXCqta+CY/M9Y69/s5aMhqHrWjC7RSXkn4nvvR0/m5yJsMXJcsFH3ki/ylhJTvDIs6FOrKvL7tErzOsyeSGSRgq4tlxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L+CUiTIuPn58YWSMkioNTXBZ9QcPtJO8gxzk0Pmk7H0=; b=hPZlrS+XawL8NAm9qhVIOo7VWLdqkix6hzLIlSDs7HydRIgh6CF7XeOJDrRbJ8zwO2Gs2ITOWmo6mGv6fWeK9LzsDIg1790OSkubBCuKh/wlE6eddI4i34aZ/31ClMXCsKy0V9GYr1gcskEHEMXh8e1Lk5ZFJ2dxo5w7NeBfuq4= Received: from AS9PR06CA0312.eurprd06.prod.outlook.com (2603:10a6:20b:45b::21) by AS8PR02MB6950.eurprd02.prod.outlook.com (2603:10a6:20b:2e2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Tue, 1 Sep 2026 14:36:10 +0000 Received: from AMS1EPF0000009C.eurprd02.prod.outlook.com (2603:10a6:20b:45b:cafe::38) by AS9PR06CA0312.outlook.office365.com (2603:10a6:20b:45b::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.13 via Frontend Transport; Tue, 1 Sep 2026 14:36:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000009C.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:10 +0000 Received: from se-mail11w.axis.com (10.20.40.11) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id A7C1B2E3A; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 766DC305CBC7; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:57 +0200 Subject: [PATCH v3 4/8] iio: imu: inv_icm42607: Switch to little endian Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-4-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4057; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=+4T+VaRXV0wF8O7dZaNBfbU9eX2aJT0FfOKi8AXnX1A=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9ujyOsMGbdHIh2ZF/wt/JzvKMcw408Jyydv38Vxnl wa/VsZVHaUsDGJcDLJiiiznjLZH70/+pztH2ukSzBxWJpAhDFycAjARF2ZGhrMqU+Y8nDRpXk76 DT++yKSLNSGxcv7ayw4c26ItMPfAiSqG/zEWvF1BgkLGgjGz/sw+dsLgY7vUvL+uwcKNiWeEtvn 84wUA X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000009C:EE_|AS8PR02MB6950:EE_ X-MS-Office365-Filtering-Correlation-Id: d17658cb-9c9e-44b9-9de4-08df08365df0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|7416014|32650700020|36860700016|1800799024|82310400026|3613699012|921020|11063799006|10067099003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: VjHxa+KZ3m8N8JFvmvZnKsdfJqu1r/oDKRmd7kQL5MJdLN7Ix+gR6Mm71WT90aHu++xTbrtbjA79Gmho4qEgIXkbVK/hte+DBR8911x41M2BXJONL3XKaF8NzfacaMzxvAlDWvMYThF3C6fnMti7lKmvgplxUwbScs1EvrASbyzAfWjiUv4TMd8gpkDXC+g+TGALH6Ia4squuFdsVELQUPB5KjxRWMiyWVoYEF+MRRcHWV/Pn0lkEf21N8kXsXGWCnu+y9/Y34xOBvi4JE8zO7wSNZofSNyNibf5ud7CoNDe+r5E3VmMsKjPznqOR+169yF9NgtsyXvmR8V2LDziTOg8Bg8hPfFMFP2eD436vw0eeWXfSIi83Z4y0MCPQowyoXecMkP0c5rvT5cqapKpYS3YwxYsP9UiJMlaAAyxdI6PFxD2rQ3hIsd3mYmxTtgaEQ4Rgp2xCv3Q/0INhbskttYdUYia1/DJPV+kmOLinPeAGbsezWUtRd78S3JrJTxo74dl/QiUF6uEK9KlLLkK6yG/c7i6ZrGdA88DOiMNTEbrhejNr1i4GNf4p3Rl08aQ29+lyocw5OmWdi6yAqzjIavtxCEYzQ/ARrb2TJgwaoDWbOtOURT9e77f3H/E+PW1tOwG6tbrior0j/W7a7cgfn/6cOz12kJUZhS8wI8X+e7aZ2LqbAvALCNPHzcBcu6Fcfa9N9hVT6SKJpHeG5DjCJovAK64DW26vzKWMemr158= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(376014)(7416014)(32650700020)(36860700016)(1800799024)(82310400026)(3613699012)(921020)(11063799006)(10067099003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GJmLzuwzMXZsXAoXe9T+Vb3MDkZHKkAn7mR2CTvi9hLkd9Pcx20Vc7YaT9ZNo9+PxArJXeMNCJey6R1ZscoZ10klEO1g+wDo5khXk4Z6m17VD0sI10BAQRNJev0crkKjNdKVqwbzai+txGJIdOnELfNJBdq7SpsslwlYIxkULk1wmx6Xsr9N9eW+xwlaHSvHesfcObCd16XQj+BljvBCh6CnbGqDyziKtrXZePy/RKKOUd1iYWW1kDA1WmG7sf4kX9Rop+Ci6VmDB9Jr2i+RGiZUW8Z4GLaXLkmQdHWKZAqy0FzXKhwHH1k+4S0ZB0ceEk/YM7wCcV8pZJAHZyz5N+3pZK6N63igqp1eMIzGEEVhWBEsCArUzAhls+hORi3Uo80ldQ2MihiQShj+SPekon4XjVTdwo3jSjo8SpBxYQFkkJossr28nSt8kL2r5IOW X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:10.6842 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d17658cb-9c9e-44b9-9de4-08df08365df0 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB6950 The device supports both big and little endian formats for sensor data, this is handled via the SENSOR_DATA_BIT in INTF_CONFIG0 register. The default value is big-endian format. Switch to little-endian as it matches the native byte order on vast majority of systems and avoids unnecessary byte-swapping. Datasheet: https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p Datasheet: https://www.lcsc.com/product-detail/C5129967.html Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c | 2 +- drivers/iio/imu/inv_icm42607/inv_icm42607_core.c | 6 +++--- drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c | 2 +- drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c | 2 +- drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c b/drivers/ii= o/imu/inv_icm42607/inv_icm42607_accel.c index 8f61bc901452..318373efeb9e 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c @@ -32,7 +32,7 @@ .sign =3D 's', \ .realbits =3D 16, \ .storagebits =3D 16, \ - .endianness =3D IIO_BE, \ + .endianness =3D IIO_LE, \ }, \ .ext_info =3D inv_icm42607_accel_ext_infos, \ } diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_core.c index de3b158f446c..7eb486ff673b 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c @@ -343,7 +343,7 @@ int inv_icm42607_read_sensor(struct iio_dev *indio_dev, struct inv_icm42607_sensor_state *sensor_st =3D iio_priv(indio_dev); struct device *dev =3D regmap_get_device(st->map); unsigned int reg; - __be16 data; + __le16 data; int ret; =20 if ((chan->type !=3D IIO_ANGL_VEL) && (chan->type !=3D IIO_ACCEL)) @@ -391,7 +391,7 @@ int inv_icm42607_read_sensor(struct iio_dev *indio_dev, if (ret) return ret; =20 - *val =3D be16_to_cpu(data); + *val =3D le16_to_cpu(data); if (*val =3D=3D INV_ICM42607_DATA_INVALID) return -EINVAL; =20 @@ -490,7 +490,7 @@ static int inv_icm42607_setup(struct inv_icm42607_state= *st, if (ret) return ret; =20 - ret =3D regmap_set_bits(st->map, INV_ICM42607_REG_INTF_CONFIG0, + ret =3D regmap_clear_bits(st->map, INV_ICM42607_REG_INTF_CONFIG0, INV_ICM42607_INTF_CONFIG0_SENSOR_DATA_ENDIAN); if (ret) return ret; diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_gyro.c index 8e8d36461e51..fb9bacee4e8d 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c @@ -32,7 +32,7 @@ .sign =3D 's', \ .realbits =3D 16, \ .storagebits =3D 16, \ - .endianness =3D IIO_BE, \ + .endianness =3D IIO_LE, \ }, \ .ext_info =3D inv_icm42607_gyro_ext_infos, \ } diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_temp.c index 53f0484c0845..ab2ba7900095 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c @@ -58,7 +58,7 @@ static int inv_icm42607_temp_read(struct inv_icm42607_sta= te *st, s16 *temp) if (ret) return ret; =20 - *temp =3D get_unaligned_be16(raw); + *temp =3D get_unaligned_le16(raw); if (*temp =3D=3D INV_ICM42607_DATA_INVALID) return -EINVAL; =20 diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h b/drivers/iio= /imu/inv_icm42607/inv_icm42607_temp.h index 18499b4d0b94..eb55e2daac89 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h @@ -27,7 +27,7 @@ struct iio_chan_spec; .sign =3D 's', \ .realbits =3D 16, \ .storagebits =3D 16, \ - .endianness =3D IIO_BE, \ + .endianness =3D IIO_LE, \ }, \ } =20 --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012030.outbound.protection.outlook.com [52.101.66.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFCD73CF201; Tue, 1 Sep 2026 14:36:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273379; cv=fail; b=WP9n5Ipy8EYwWph/zc8RBkjQZwiJqrWse32/FS0tYxxHc6nKHERgooQXNYJea5CTnFdUtuSW3JP59twjMgS2+ltcDQuhXTApRkns4TdTlKGzTFCSFhwUnus5PF8M+rC7NuIQDZTV+sbc/14jRZW9eCpSXfBkIrJEOUFtnbXNp1s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273379; c=relaxed/simple; bh=ZHGODs3RsxVAyFBmbdEusNuUodBwFubg8eotaDBGIdA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=de8LRLB87im4+W+oR16LX+r8ISnSHcD1D5L01oabI9iwm7zqtfd8FS5EecJd6ddeX5REPF1YrHzc2A4qUpQs3vbeb0D9+d/yrlbkMAkJIFvJkI7fuFjcs0EyByFxM5LjhdrvMq+rLNxjj6CdPc98XirF787uMdqL1SUoCo6QHR4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=WamMDwJ/; arc=fail smtp.client-ip=52.101.66.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="WamMDwJ/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VOyGasy3Kd4Egx5jznI1TwHOZ85cdr1XOYkiLb8/m7DpVe9AFGfbmdgqY6gobOXReBV2Qbb3BK2zwfo1oGblcbOEr7dxnxJpL69x7sQqRH96nq4umoRDY0AqHm2gWKpA1EW/u0P2E/CO8mf1Awsce0d5W1oq2cW/cXnK/bubB+ZTQ9fDwNPJ85/lgB/AMcRAiSRDFgwqODndWJoqwjIxrOHsYBR3GT6hXrxYaQ69R22YSH9bZieSHc3DA/9nVUVRpHX7OKgJi9zCDLhgij8Isr7OrtbA0nGM/idGOTX7HYH5HAcI1CL+UKdxwibtyy6SQ2+9g/BWrye78S4JM9oGaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+9k8ojMm0cmfCSNT3wKoV+nrS8Yl3BwpQ5JBw7M8upY=; b=H0eDkAQc4sIDea527cbEe+Ze3cdyKftXWYW8KCOHz8Y2X1BVu0gg9f3HG20ZGghiu/7LaOjCqBtqmRhuLzBM5ZF8iwT+sJZQb99Rg+q0yFMevQbgUoELfuL+pV3D2/B5P0sOhstQL0yaRzyV0TerRpCoj8UzECeXArLtETWFuirlLE+5QZjMojeJChLvgFwYI7wUUKn9uVkjcbX3uuUuyNCzZadf/mom2LmP+JI3A0pJvQBf+87mLnXfXUOdUAQ+Iv8u/qsAePSdg3j4KPGB19T8+jMGAgW5d5wtpmfnAcfExBVcHv4OZiFvRGdl8z9OK3U0741luLfnFdLfkdQZcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+9k8ojMm0cmfCSNT3wKoV+nrS8Yl3BwpQ5JBw7M8upY=; b=WamMDwJ/9sczjQIKnpYr0WLgfuYAcTsto7/6hNV36dYRkZSYBE/zs4j1vQ92oJg6fWhz6YeNg1l7Z0sTwXBYi0d24qhXQWk0X+3z86qp4M46h02UnxVGmzL3moGnPIEv/QaBiznCdXPOmtMDiVCQh30pHBg6nvO2xGloAXOdiuw= Received: from AS9PR06CA0329.eurprd06.prod.outlook.com (2603:10a6:20b:45b::35) by AS8PR02MB6744.eurprd02.prod.outlook.com (2603:10a6:20b:252::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:14 +0000 Received: from AMS1EPF0000009C.eurprd02.prod.outlook.com (2603:10a6:20b:45b:cafe::5b) by AS9PR06CA0329.outlook.office365.com (2603:10a6:20b:45b::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 14:36:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000009C.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:14 +0000 Received: from SE-MAILARCH01W.axis.com (10.20.40.15) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:05 +0200 Received: from se-mail10w.axis.com (10.20.40.10) by SE-MAILARCH01W.axis.com (10.20.40.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id A0E582DF8; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 779E6305CBC9; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:58 +0200 Subject: [PATCH v3 5/8] iio: imu: inv_icm42607: Add support for ICM-42370-P Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-5-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5577; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=ZHGODs3RsxVAyFBmbdEusNuUodBwFubg8eotaDBGIdA=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9ujyDUYjzal8X7SeVGz/tPsH3zOeoi7rzNJC76KWu 7taoht4O0pZGMS4GGTFFFnOGW2P3p/8T3eOtNMlmDmsTCBDGLg4BWAi1TKMDNfOTvudmXH//qMl iwuDVc4fF/heevlg5UOLD/X/rjHmsTUz/A9hlDh6cPN8ns1tj3UEzrJ+SsjQmq324sgPrdsdoSF ptawA X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000009C:EE_|AS8PR02MB6744:EE_ X-MS-Office365-Filtering-Correlation-Id: 74cd7cf1-51d7-49f6-a443-08df0836603b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|7416014|1800799024|82310400026|36860700016|32650700020|921020|6133799003|3613699012|56012099006|10067099003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: hTJkhq4+rJ5lSKkyMnNMO3HCc4jcVDGzsZKPcv3POOxhldozbNmkd5QZxHYEKyjd6YCSOHwOEgldI4V0ELqlYZUEiJjmJUEXOVCROwXyQlAqXKvGoYvRCPyKh5vPVbATP1VlXB+1enMLb/p4v3l5J1s8d0UB1pw0H0CI3rgeLrmru24fsg9FLrAZCMHk+o/pxP93+MvM4Oy3IazpxMfrE3bYCs7Emf6Rb0oEWZwpUid85lviU8t0oG8IuxeKGbo1t8r6GXNa2d+AoFc29z2A+PyC2qH6OG0PSKr0pflJ4JkPU2uAAnBJ79xNJAZAVovQxmtsFyrjZQtuLnCEkoh9nHizQtlUAo7mycwvqnoIN8KharAzxPWingCoyemyQyolVcN/N2qalJ59FmKPv75hST71N3ybQTNE/ls6xvqSLGiHDjJmLROQflKHAsN9qYQMndii4GoKR9uSlOaEPJrtBg2Fgod4i2zWaOXADr5+LZyV5geQfDPlY1wLs8i+YhuXH3MvV2csxA0xPdFcj0Z3hSbFphVtc69LmjEd6sXdeOqQMv+727JUHWlEli26SEm+qmAu+IZHPVrrptc4YDLhIyeLtYcnlcSB6CntvE201CL9XByZNZk8UDRi87aomNAqNkflTlmvoPSb3WOGwYWBCXDlu3/DfHp8AYNuPiY1EC0r7UBYp158/U90/Z2XcQNskVSMn0yy5u4sF/+WwCwupTM3cVG2sD2m0RWKDAibbhc= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(376014)(7416014)(1800799024)(82310400026)(36860700016)(32650700020)(921020)(6133799003)(3613699012)(56012099006)(10067099003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6y9GX/gYP5r6B70D8I6vS0AFdeier71lhzDwPBoB0lNzcU0OMV8HloLyUc/wBIWOJUjlR/iE6KeWalzImnSeOhX/CUfjWlI4jZ4GkmM9kCXqGJ6Qy6HhZRzGQOryhroNwqlzwW2Z8GM5kHneKgf5XtH9lnl+I3riNXkGZV66PYLzoVzBw/Cq7NXC7aEtkGcKvIBELkX4b9scv9wIgw3rfBengQ8tMqm0O2FkiytNMH3j4SX62cD9cV888qvXFLJ/GQJGgzBPK4rGPSqflG/ahmZQ6zM862KsDPJffEr7HlYB9tCmL2UR/ZVSsXRB9sjAVPJ9CA/ctUqCBeyavj2n15fju2fdErz72egTiQeBFjDfUeIetb2xSwGwzfm8kyjXu8CKVxrT0HIDzvu48YPXjVad+CFejpElywJ3OmjDyIQQ4tDvOG2vObzjvzPIUs4d X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:14.5334 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74cd7cf1-51d7-49f6-a443-08df0836603b X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB6744 Add support for the Invensense ICM-42370-P MEMS MotionTracking 3-axis accelerometer with built-in temperature sensor. This device is almost identical to the existing Invensense ICM-42607-P IMU, but lacks gyroscope. The device supports I2C, SPI and I3C, implement only I2C support. Provide basic support for raw sensor reads via sysfs. There is also a built-in temperature sensor but it can not be turned off. Datasheet: https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p Datasheet: https://www.lcsc.com/product-detail/C5129967.html Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607.h | 2 + drivers/iio/imu/inv_icm42607/inv_icm42607_core.c | 56 ++++++++++++++++++++= ---- drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c | 8 ++++ 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607.h b/drivers/iio/imu/= inv_icm42607/inv_icm42607.h index fa85cf738cc0..a183a8566617 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607.h +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607.h @@ -368,6 +368,7 @@ struct inv_icm42607_sensor_state { #define INV_ICM42607_REG_WHOAMI 0x75 #define INV_ICM42607P_WHOAMI 0x60 #define INV_ICM42607_WHOAMI 0x67 +#define INV_ICM42370P_WHOAMI 0x0D =20 /* * Timings as listed in section 3 of datasheet, all values listed in datas= heet @@ -392,6 +393,7 @@ typedef int (*inv_icm42607_bus_setup)(struct inv_icm426= 07_state *); extern const struct regmap_config inv_icm42607_regmap_config; extern const struct inv_icm42607_hw inv_icm42607_hw_data; extern const struct inv_icm42607_hw inv_icm42607p_hw_data; +extern const struct inv_icm42607_hw inv_icm42370p_hw_data; extern const struct dev_pm_ops inv_icm42607_pm_ops; =20 const struct iio_mount_matrix * diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_core.c index 7eb486ff673b..e77d72e0f7bc 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c @@ -92,6 +92,17 @@ static const struct inv_icm42607_conf inv_icm42607_defau= lt_conf =3D { }, }; =20 +/* Chip initial default configuration */ +static const struct inv_icm42607_conf inv_icm42370_default_conf =3D { + .gyro =3D { }, + .accel =3D { + .mode =3D INV_ICM42607_SENSOR_MODE_OFF, + .fs =3D INV_ICM42607_ACCEL_FS_4G, + .odr =3D INV_ICM42607_ODR_100HZ, + .filter =3D INV_ICM42607_FILTER_BW_25HZ, + }, +}; + const struct inv_icm42607_hw inv_icm42607_hw_data =3D { .whoami =3D INV_ICM42607_WHOAMI, .name =3D "icm42607", @@ -106,6 +117,13 @@ const struct inv_icm42607_hw inv_icm42607p_hw_data =3D= { }; EXPORT_SYMBOL_NS_GPL(inv_icm42607p_hw_data, "IIO_ICM42607"); =20 +const struct inv_icm42607_hw inv_icm42370p_hw_data =3D { + .whoami =3D INV_ICM42370P_WHOAMI, + .name =3D "icm42370p", + .conf =3D &inv_icm42370_default_conf, +}; +EXPORT_SYMBOL_NS_GPL(inv_icm42370p_hw_data, "IIO_ICM42607"); + const struct iio_mount_matrix * inv_icm42607_get_mount_matrix(struct iio_dev *indio_dev, const struct iio_chan_spec *chan) @@ -617,16 +635,38 @@ int inv_icm42607_core_probe(struct regmap *regmap, pm_runtime_set_autosuspend_delay(dev, INV_ICM42607_SUSPEND_DELAY_MS); pm_runtime_use_autosuspend(dev); =20 - /* Initialize IIO device for Accel */ - st->indio_accel =3D inv_icm42607_accel_init(st); - if (IS_ERR(st->indio_accel)) - return PTR_ERR(st->indio_accel); + switch (st->hw->whoami) { + case INV_ICM42607_WHOAMI: + case INV_ICM42607P_WHOAMI: + /* + * Invensense, ICM42607 and ICM42607P both have accelerometer + * and gyroscope functionality. + */ + st->indio_accel =3D inv_icm42607_accel_init(st); + if (IS_ERR(st->indio_accel)) + return PTR_ERR(st->indio_accel); + + st->indio_gyro =3D inv_icm42607_gyro_init(st); + if (IS_ERR(st->indio_gyro)) + return PTR_ERR(st->indio_gyro); + + break; + case INV_ICM42370P_WHOAMI: + /* + * Invensense, ICM42370P has only accelerometer functionality. + * Thus, set the gryo property to NULL. + */ + st->indio_accel =3D inv_icm42607_accel_init(st); + if (IS_ERR(st->indio_accel)) + return PTR_ERR(st->indio_accel); =20 - /* Initialize IIO device for Gyro */ - st->indio_gyro =3D inv_icm42607_gyro_init(st); - if (IS_ERR(st->indio_gyro)) - return PTR_ERR(st->indio_gyro); + st->indio_gyro =3D NULL; =20 + break; + default: + /* No WHOAMI value matched */ + return dev_err_probe(dev, -ENODEV, "Failed to find a matching WHO_AM_I v= alue\n"); + } return 0; } EXPORT_SYMBOL_NS_GPL(inv_icm42607_core_probe, "IIO_ICM42607"); diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c b/drivers/iio/= imu/inv_icm42607/inv_icm42607_i2c.c index e903106af84a..82480ae6879c 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_i2c.c @@ -64,6 +64,10 @@ static const struct i2c_device_id inv_icm42607_id[] =3D { .name =3D "icm42607p", .driver_data =3D (kernel_ulong_t)&inv_icm42607p_hw_data, }, + { + .name =3D "icm42370p", + .driver_data =3D (kernel_ulong_t)&inv_icm42370p_hw_data, + }, { } }; MODULE_DEVICE_TABLE(i2c, inv_icm42607_id); @@ -76,6 +80,10 @@ static const struct of_device_id inv_icm42607_of_matches= [] =3D { .compatible =3D "invensense,icm42607p", .data =3D &inv_icm42607p_hw_data, }, + { + .compatible =3D "invensense,icm42370p", + .data =3D &inv_icm42370p_hw_data, + }, { } }; MODULE_DEVICE_TABLE(of, inv_icm42607_of_matches); --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011007.outbound.protection.outlook.com [40.107.130.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15CCB3CD8D3; Tue, 1 Sep 2026 14:36:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273379; cv=fail; b=oJsq8lrrghNsnPiIY+UyM7SBVgApwy6zaz3P6scqP6hVlqjpk6TnEtNEfddiOe2JjS/uY+pjtshzK4X8XE+8woAQHBhI/yuxbgeO8yrpYRcMLEZjaVap7ZX4M3mDFywp3KjL/l8OvFI0/eMUrRpyUl0RckcNTlp5EJFDRq9ji48= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273379; c=relaxed/simple; bh=UvuNPv9ZfwU3jy+vPNZI4tVK+/qWMQB7sBDGCYvuCOs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=McnJ0lgV/S79I3OYm0g8C7pJ0KivFGWNMlntX6JjJK2alSp3qFWC4/nOuAYYYlKZBJuzq4u4I+WX3I3x0/+XvDNHJ4OWvMTUgG0IYXno+7LRCkiw3+Hq/wKJijfmnUARwzjrpkZjVZ/pH/7wPlA/gxdBOqEzrs6WDQ6yAApvteg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=S1E/OtGE; arc=fail smtp.client-ip=40.107.130.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="S1E/OtGE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dEFp6nMxsWktVqRx7mBCECsQBWDU7pCaNmkFeZm3PaMqnMYkaVL7dQtIjOUw5RFObRtus/gfM9YKWQQUsn/rej1Yy4gerTRYXaebKh8VuBz1Lyx8l0840ji3bvgFGtmuXcjt16yZm0WlI1HHUjbS0T9xamSRBaIlMoDo0hlOOVemzlUsIOZmQpc6GOhLmhrZ/2x8CJwLmHheSEPbty/n+Gjp32vQNK/et7u13btas2wYxEY9TGwI1DRfv0DLGjapHDcERx35SrES+GE3fL5OpAB+3qPWHGEZUVTpAXGMcwkIJ9QvfMH96XwjkkjMuJxIL9w/tKfmZV+ZaepuFYYuSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RfNvwt6s71vFESLO0ZyCE3C66EsmBhtcEqcmnn4fZtk=; b=HKBEeoQtNY9qSSlWF5EPG0uzol8g/NpJJZ2hB4iTqCKJQm9a3lkm84wHBZLeVnIiE3wUZ2UUuYGa3ZlHS2YgZmtPVSF6Hif84wFHFvaOMkTE24MW38HFbrGeenppbnZ4Kb8ZLvLFviuFsbY/MWHBn+jiJtoLkAkYwgMCWjp19v4SqxgSqUoxAhNIT8DtU1h8rwUrDzU0ANSMIGMaYpXxjzvCcH6g2kwP+Fw34230owYKtnFcuy164iDQ8pqwHN363E1n4mQfNdzD6L/O1X+QD5b0Av+Opg0miFhXs7hlryXupSn5sJPpDzUhgjwqlHjiLB4OgFTp6pAF4ljdW4Uj7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RfNvwt6s71vFESLO0ZyCE3C66EsmBhtcEqcmnn4fZtk=; b=S1E/OtGEsfkjDCI/Te1Guny7ScQ+fe1KKlTG091HA4zNR53Y7WQNYx5x4h0yPmnzhKA6RMwz16znu9nrh82vr1Te3HEGBxMTKSb1Nzw2nRnBe1a64ykrvWEvSqw6VVjQjBurNAtTTJzyjtH+wHWLIYJnfTmrTZt006HxOZZQwGg= Received: from AS9PR06CA0319.eurprd06.prod.outlook.com (2603:10a6:20b:45b::12) by GV1PR02MB10837.eurprd02.prod.outlook.com (2603:10a6:150:170::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:08 +0000 Received: from AMS1EPF0000009C.eurprd02.prod.outlook.com (2603:10a6:20b:45b:cafe::4e) by AS9PR06CA0319.outlook.office365.com (2603:10a6:20b:45b::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.13 via Frontend Transport; Tue, 1 Sep 2026 14:36:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000009C.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:08 +0000 Received: from SE-MAILARCH01W.axis.com (10.20.40.15) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-mail11w.axis.com (10.20.40.11) by SE-MAILARCH01W.axis.com (10.20.40.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id 9CF232D94; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 795E3305CBCB; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:35:59 +0200 Subject: [PATCH v3 6/8] iio: imu: inv_icm42607: Implement MREGx register access Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-6-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8431; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=UvuNPv9ZfwU3jy+vPNZI4tVK+/qWMQB7sBDGCYvuCOs=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9uhK116uhTmbVxbeqJi1YIHoDI0rPROWzfx1WjTYu eGPsbbfio5SFgYxLgZZMUWWc0bbo/cn/9OdI+10CWYOKxPIEAYuTgGYSN8Phv/B4h2T/Svfyfen SitZ7t0UrnHY1rA6W1Djg+HRE9sq2oMZ/jvE7D08WcXbpkB2zZIj1h/4xE3PKr7KPRzXcYZlTe6 +DH4A X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000009C:EE_|GV1PR02MB10837:EE_ X-MS-Office365-Filtering-Correlation-Id: 03ed0494-85d8-44b4-e84d-08df08365c6b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|32650700020|1800799024|82310400026|23010399003|7416014|376014|10067099003|10063799003|11063799006|56012099006|22082099003|18002099003|13003099007|921020|3613699012; X-Microsoft-Antispam-Message-Info: qY1+tKQPYnxqOuPXDgnT28PviwYX6rPwHpN27kPy+q/RFq0cRwzeFCpMk8NLk0HxF3NZzacFbg1ldJsupbecO0TcD1F17aDxk+OjldmwCSmkPMk1YyFQoX3ETEZU1QiZ+h80xbt9w2V6NutOr5utECedVU+kf4AZRuPcBXq47Ju8XvOMPijO9Mrsz9C6wQB7V9iJvICm4cO/0CuV17Fhqv9YLeAlLt5GIo8UEO2Mpqunvzb04I00/JdgxNDd8ItuC7lZjtVzc/cVDV0CGItvO04UNuxtuRrQoxZBTs+q3/wC2rnk9VlsPcGqGOiPDtMi/TEsXlUE/s9gWEi/eB3Ma6S7m3mVWPcVqQY1haXIBgh/UZLxgRUNi/tzk+MNdzARYmIVABcTKvGfgrvp5VeaF7g0dvq8MePl3T6GH/JDeF1q9GoNKXc7PudMgJkEevJcNUPgGuQt+Yr3cJ0PnXNguOgpR/BkoVhks9bQYEXh0U4nBxcn8q46NlyCVRsAvC2M0evh1LbBXQ0Vu/dEPvXYA6Vsk4OgHBQY6tkl0ggYR5+xkxgN7qJV/Mpz1vQKGNM16TdosFmwNxaFTAw8ABGVfp6EpZu3QW2a4OUF6ReSGwpW1VIo2vHf7IPcx+xhOzjoFd218VmV6t1moxsf5WV+XKQzDv7nRpSXTAm4wHwdFxRNmlq9Zm7Ht0dcBU5ZC0lJkRfMfq928nAU+PmQxjFqlhYPoD7xHC5wPcXtxe2FRz0= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(32650700020)(1800799024)(82310400026)(23010399003)(7416014)(376014)(10067099003)(10063799003)(11063799006)(56012099006)(22082099003)(18002099003)(13003099007)(921020)(3613699012);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: X7YRf20tzjIc5RaEK5xSxDX/K7wI0QiBeX+7oHXSjY9qYKMOr9OzHBNzhqh/AyI0qtenuMi0z3QAyB1sQJ9ybhsu2v0ZYoG51dwuE/fv+160J5XsBipWBjcuHdcVsRKIPnT6fWS3i+hMM71t9OhLj2a4NXCkH54T0eblLCbt4ahuv8PuDvG5jbXqSAMdmTmTmUvRv2yyWR5vYtrjlSQC0So8XP0JCnjRpzmBwTjyxTmR2SfGecKF5tK2l0JBJhBGfEMLUfs7uozv7WYi/6zFNxwe33tdaXNf3pLnoEpPkdvD5iyKKqEF4J5fpiXTTMx0vLtrHS9EaTeaYEXyry9P6Jnvn2ViSZdWDoldOLkkFtne8Zr8V/i0lSLpB03KRunur8QvKeLMbv5O9Z5eMUxz/BhxDThvxh30ystWVqfApPyqyhU6X1O+LnsSVgphpt75 X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:08.1378 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03ed0494-85d8-44b4-e84d-08df08365c6b X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR02MB10837 The device supports indirect register access to different banks. A specific routine needs to be followed when accessing the registers in another bank as documented in the datasheet (section 13). This is required for accessing registers configured via the user and implementing buffer support. Datasheet: https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p Datasheet: https://www.lcsc.com/product-detail/C5129967.html Assisted-by: LLM Signed-off-by: Kanak Shilledar --- LLM was used to improve the mreg_check function to include the case where the sensor is in a POWER OFF or LOW POWER mode to utilize the RC oscillator for initiating the bank access. --- drivers/iio/imu/inv_icm42607/inv_icm42607.h | 29 ++++++ drivers/iio/imu/inv_icm42607/inv_icm42607_core.c | 108 +++++++++++++++++++= +++- 2 files changed, 135 insertions(+), 2 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607.h b/drivers/iio/imu/= inv_icm42607/inv_icm42607.h index a183a8566617..a522850e0268 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607.h +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607.h @@ -111,6 +111,13 @@ enum inv_icm42607_temp_filter_bw { /* value 7 also corresponds to 4Hz */ }; =20 +enum inv_icm42607_mregs { + INV_ICM42607_MREG1, + INV_ICM42607_MREG2 =3D 0x28, + INV_ICM42607_MREG3 =3D 0x50, + INV_ICM42370_NB +}; + /* Signed so that negative values can signify an invalid condition. */ struct inv_icm42607_sensor_conf { int mode; @@ -170,6 +177,7 @@ struct inv_icm42607_sensor_state { =20 /* Register Map for User Bank 0 */ #define INV_ICM42607_REG_MCLK_RDY 0x00 +#define INV_ICM42607_MCLK_RDY_BIT BIT(3) =20 #define INV_ICM42607_REG_DEVICE_CONFIG 0x01 #define INV_ICM42607_DEVICE_CONFIG_SPI_AP_4WIRE BIT(2) @@ -370,6 +378,24 @@ struct inv_icm42607_sensor_state { #define INV_ICM42607_WHOAMI 0x67 #define INV_ICM42370P_WHOAMI 0x0D =20 +#define INV_ICM42607_REG_BLK_SEL_W 0x79 +#define INV_ICM42607_REG_MADDR_W 0x7A +#define INV_ICM42607_REG_M_W 0x7B +#define INV_ICM42607_REG_BLK_SEL_R 0x7C +#define INV_ICM42607_REG_MADDR_R 0x7D +#define INV_ICM42607_REG_M_R 0x7E + +/* User Bank MREG 1 registers */ +#define INV_ICM42607_REG_OFFSET_USER0 0x4E +#define INV_ICM42607_REG_OFFSET_USER1 0x4F +#define INV_ICM42607_REG_OFFSET_USER2 0x50 +#define INV_ICM42607_REG_OFFSET_USER3 0x51 +#define INV_ICM42607_REG_OFFSET_USER4 0x52 +#define INV_ICM42607_REG_OFFSET_USER5 0x53 +#define INV_ICM42607_REG_OFFSET_USER6 0x54 +#define INV_ICM42607_REG_OFFSET_USER7 0x55 +#define INV_ICM42607_REG_OFFSET_USER8 0x56 + /* * Timings as listed in section 3 of datasheet, all values listed in datas= heet * in ms except temp startup time... setting all values in us and using @@ -400,6 +426,9 @@ const struct iio_mount_matrix * inv_icm42607_get_mount_matrix(struct iio_dev *indio_dev, const struct iio_chan_spec *chan); =20 +int inv_icm42607_mreg_read(struct inv_icm42607_state *st, u8 bank, u8 addr= , u8 *val); +int inv_icm42607_mreg_write(struct inv_icm42607_state *st, u8 bank, u8 add= r, u8 val); + int inv_icm42607_get_pwr_mgmt0(struct inv_icm42607_state *st, enum inv_icm42607_sensor_mode *gyro, enum inv_icm42607_sensor_mode *accel); diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_core.c index e77d72e0f7bc..6e514b8682a0 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_core.c @@ -31,6 +31,7 @@ static bool inv_icm42607_is_readable_reg(struct device *d= ev, unsigned int reg) case INV_ICM42607_REG_APEX_DATA4 ... INV_ICM42607_REG_INTF_CONFIG1: case INV_ICM42607_REG_INT_STATUS_DRDY ... INV_ICM42607_REG_FIFO_DATA: case INV_ICM42607_REG_WHOAMI: + case INV_ICM42607_REG_BLK_SEL_W ... INV_ICM42607_REG_M_R: return true; } =20 @@ -43,6 +44,7 @@ static bool inv_icm42607_is_writeable_reg(struct device *= dev, unsigned int reg) case INV_ICM42607_REG_DEVICE_CONFIG ... INV_ICM42607_REG_INT_CONFIG: case INV_ICM42607_REG_PWR_MGMT0 ... INV_ICM42607_REG_INT_SOURCE4: case INV_ICM42607_REG_INTF_CONFIG0 ... INV_ICM42607_REG_INTF_CONFIG1: + case INV_ICM42607_REG_BLK_SEL_W ... INV_ICM42607_REG_M_R: return true; } =20 @@ -59,6 +61,7 @@ static bool inv_icm42607_is_volatile_reg(struct device *d= ev, unsigned int reg) case INV_ICM42607_REG_FIFO_LOST_PKT0 ... INV_ICM42607_REG_APEX_DATA3: case INV_ICM42607_REG_INT_STATUS_DRDY: case INV_ICM42607_REG_INT_STATUS ... INV_ICM42607_REG_FIFO_DATA: + case INV_ICM42607_REG_BLK_SEL_W ... INV_ICM42607_REG_M_R: return true; } =20 @@ -71,7 +74,7 @@ const struct regmap_config inv_icm42607_regmap_config =3D= { .writeable_reg =3D inv_icm42607_is_writeable_reg, .readable_reg =3D inv_icm42607_is_readable_reg, .volatile_reg =3D inv_icm42607_is_volatile_reg, - .max_register =3D INV_ICM42607_REG_WHOAMI, + .max_register =3D INV_ICM42607_REG_M_R, .cache_type =3D REGCACHE_MAPLE, }; EXPORT_SYMBOL_NS_GPL(inv_icm42607_regmap_config, "IIO_ICM42607"); @@ -96,7 +99,7 @@ static const struct inv_icm42607_conf inv_icm42607_defaul= t_conf =3D { static const struct inv_icm42607_conf inv_icm42370_default_conf =3D { .gyro =3D { }, .accel =3D { - .mode =3D INV_ICM42607_SENSOR_MODE_OFF, + .mode =3D INV_ICM42607_SENSOR_MODE_LOW_POWER, .fs =3D INV_ICM42607_ACCEL_FS_4G, .odr =3D INV_ICM42607_ODR_100HZ, .filter =3D INV_ICM42607_FILTER_BW_25HZ, @@ -352,6 +355,107 @@ int inv_icm42607_set_sensor_conf(struct inv_icm42607_= state *st, } } =20 +static int inv_icm42607_mreg_check(struct inv_icm42607_state *st) +{ + struct regmap *map =3D st->map; + unsigned int val; + int ret; + + ret =3D regmap_read(map, INV_ICM42607_REG_MCLK_RDY, &val); + if (ret) + return ret; + + if (val & INV_ICM42607_MCLK_RDY_BIT) + return 0; + + /* + * Clock isn't running: we're either in Sleep mode or Accel LP + * mode with WUOSC. Force the RC oscillator on via IDLE, then + * wait for MCLK_RDY. + */ + ret =3D regmap_set_bits(map, INV_ICM42607_REG_PWR_MGMT0, + INV_ICM42607_PWR_MGMT0_IDLE); + if (ret) + return ret; + + /* + * After setting the IDLE bit to 1 in PWR_MGMT0 register, wait for anywhe= re between + * 10us to 200us which are the ACCEL_STARTUP time and accelerometer trans= ition time + * from OFF respectively. + */ + return regmap_read_poll_timeout(map, INV_ICM42607_REG_MCLK_RDY, val, + val & INV_ICM42607_MCLK_RDY_BIT, 10, 200); +} + +int inv_icm42607_mreg_write(struct inv_icm42607_state *st, const u8 bank, + const u8 addr, const u8 val) +{ + int ret; + + ret =3D inv_icm42607_mreg_check(st); + if (ret) + return ret; + + ret =3D regmap_write(st->map, INV_ICM42607_REG_BLK_SEL_W, bank); + if (ret) + return ret; + + ret =3D regmap_write(st->map, INV_ICM42607_REG_MADDR_W, addr); + if (ret) + return ret; + + ret =3D regmap_write(st->map, INV_ICM42607_REG_M_W, val); + if (ret) + return ret; + + /* + * As per the Datasheet Section 13 Accessing MREGx Registers, + * there should be no read/writes to the device for 10us + * after performing bank access. + */ + fsleep(10); + return regmap_write(st->map, INV_ICM42607_REG_BLK_SEL_W, 0x00); +} + +int inv_icm42607_mreg_read(struct inv_icm42607_state *st, const u8 bank, c= onst u8 addr, u8 *val) +{ + unsigned int read_val; + int ret; + + ret =3D inv_icm42607_mreg_check(st); + if (ret) + return ret; + + ret =3D regmap_write(st->map, INV_ICM42607_REG_BLK_SEL_R, bank); + if (ret) + return ret; + + ret =3D regmap_write(st->map, INV_ICM42607_REG_MADDR_R, addr); + if (ret) + return ret; + + /* + * As per the Datasheet Section 13 Accessing MREGx Registers, + * there should be no read/writes to the device for 10us + * after performing bank access. + */ + fsleep(10); + ret =3D regmap_read(st->map, INV_ICM42607_REG_M_R, &read_val); + if (ret) + return ret; + + *val =3D (u8)read_val; + + /* + * As per the Datasheet Section 13 Accessing MREGx Registers, + * there should be no read/writes to the device for 10us + * after performing bank access. + */ + fsleep(10); + + return regmap_write(st->map, INV_ICM42607_REG_BLK_SEL_R, 0x00); +} + int inv_icm42607_read_sensor(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, s16 *val) --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013015.outbound.protection.outlook.com [40.107.159.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86C44318EFF; Tue, 1 Sep 2026 14:36:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273374; cv=fail; b=tTVUwxKf11WeZNgfLUzsl7AAcymYyG4K9bHYft141Fv+N815XYLgv+Ebl2CUw/vbskokI0Mlvp6PHhN+bM/Q7ufrz7+sDWuQY+3EIy06FwyxtcZzJhhewL3pP0I9S/AE3qC97Bz/WhEY7FaBf7Yf54gK2W+8IuO+n7/8aABXDOg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273374; c=relaxed/simple; bh=sr51mA9NbXRfrp1Uzexr6FNQs5IK4u2wFcikDyF0AnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Cv1u3MjrEFK4T0nK/CnBp6QLdqh/1VJdgKjvAL1IXkYsLGEHsTUWrUrPzfSVrTjQ703+pNsGREVO/0l5z5u2ahNgLNYFD4YWmXseP7QW/gogcoscstYIGdwljhp0zXsydNtzRy4ZL486tV2YhIfFRnYjcwThomjHaUHY4b2w3mQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=OMUS1a2B; arc=fail smtp.client-ip=40.107.159.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="OMUS1a2B" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l4kaSKpdjz22WDAHYrC+KBC70j6ug6mmtlJqGDjVYtQ51LrbuCEvzEyzH5/qVzArNRgW/2HSYj5RZfsdyOUmudnB5nOTmz6wi0P8bvJ/4+ZkdDZ4zHow3mLEwsGl25MCGRfiFceHSh3KuUkgaNcNQ3Osob2f+ava/sotg/VXUMUHUVIRcJEFIX08FzjMgiIg5mEtCoIqCSUC+QvdRm/VZF5QTBkfTSpEdgp9NSKJLtJrBhHX+prIPRxwy5s02F1F2C0gnQ1yR+RbSxKlS8u/KTsS5o3SgUGtsz8PG5SWVPoEGObA8yCskmrT7IpS09IkKLf06yhPFoLkdxgEmjdtiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=y1tiApY5nOurBRoWduMULkyGkJPmDZLxQXmq6IVgqeQ=; b=FQJiXyJmHi/mWD9YeN+Te/WkcKPxousmvVEZWyLp1FhGfAAhI1u56bGjvWZma9agvjMdYPPH2IwPmLKzNIqIs4ukOjSk5Uo+zNdS0rRTp8RHRIv+Nf/q/upGCbwwiMOUxeNgx74wKF1uXxYVK2zkJvWwemxCZMCQJWPm76CVlp05xFpnSers4QkJrOc2XTYCf5vb2LvhCyEZonmMcp6WMaP791YfZQZODYaCOX7nNcWqhiILoSCWjsHaPp8EkRScKVefLbcClcUuUZDHbkBpPiySs6OyzsqLB84GOdKAP/e/LnPGAA7EX9mv0yO42g7Vihl+d7rKf4lSKyfZfHQWJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y1tiApY5nOurBRoWduMULkyGkJPmDZLxQXmq6IVgqeQ=; b=OMUS1a2ByjrLfEOldBfqidol6REH1QNF1/paEwA7GFXKdKNVzgBHF/Q24en2IAY4b1AjIffC1nzaOCKrSh7774XYCL+BMf3qmh5w3UYlqdCrFzYj69eNfdBIeRauXK14HflV8sE2F5w2ZeuvOGHuH8x1UNXlFw+VMS5Nf/+GRyw= Received: from AS4P190CA0069.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::15) by AMCPR02MB12428.eurprd02.prod.outlook.com (2603:10a6:20b:771::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:06 +0000 Received: from AMS1EPF0000004B.eurprd04.prod.outlook.com (2603:10a6:20b:656:cafe::c) by AS4P190CA0069.outlook.office365.com (2603:10a6:20b:656::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 14:36:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000004B.mail.protection.outlook.com (10.167.16.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:06 +0000 Received: from se-mail10w.axis.com (10.20.40.10) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail01x.se.axis.com (10.4.0.28) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail01x.se.axis.com (Postfix) with ESMTP id 9D56A4D08; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 79EF2305CBCD; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:36:00 +0200 Subject: [PATCH v3 7/8] iio: imu: inv_icm42607: Add accelerometer calibbias support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-7-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=9298; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=sr51mA9NbXRfrp1Uzexr6FNQs5IK4u2wFcikDyF0AnI=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9uiKp+SrZHN5z/PFBw+vW+r9Q+eMz2zurNzKjxe22 xTf+W/7oKOUhUGMi0FWTJHlnNH26P3J/3TnSDtdgpnDygQyhIGLUwAmYhzG8N+7senapmOFewNt MpNndFne3XOf7XBGsdHSGSkzCurNZTsZ/ikVb53ePDH+I9s6g1tuLOfLY1bZTZN5/tpi/jcV2Xl 8+5gA X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000004B:EE_|AMCPR02MB12428:EE_ X-MS-Office365-Filtering-Correlation-Id: 84a1c0f6-f1dc-49de-f2b4-08df08365b7f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|32650700020|23010399003|7416014|376014|6133799003|18002099003|22082099003|13003099007|56012099006|11063799006|3613699012|10067099003|921020; X-Microsoft-Antispam-Message-Info: YyooMUlAv0p9YXRcaoJHsVFMkUwqm0O46Mnb0A+25Oeu6DIcNTqxeJOfEQiwWxBhY602fywNS3ztZA8+BWszEcJuyecZGnuRZlY+mgV+2kd4KmuD89cW3dkinDxdFeZZYUzRJe4hh+yI8pDY0s+9SpBr8xxGUmKujmiVkFm/BNPboKNkKISt5KDctz1ozlikyB4o0Zi08ewT/d2zyoZhnqdvWTWYpeQ4y0XMBlUqtaFLBj0daUqPZ3nw5nTRdlvaXf9eEs+HQA5ElXgSfZ/jqg25cg5QO965vtGWxNmjcWb227KlonNC1hOoXY/2nQ4gp3H4fgAggj0jYICPpLU82z5+9TEINM5iRUpwLnw3Et/F9usoXP+lYxyv/GHA9xoYyghKr8Cl+srHJ7enmGHcXdQPX0JXhBCttWAQSBdyiDcDFm/8jo/AoneC3TlFcC5EekoWyH6tItjL+0ntpT/mW7Ck+0CTxseRYRhGtgNG6Oy+ufF/27EzfOvw8hG3Yo/YrIpnAQo/eb5f4x3oGozmvINseBTCSi063vkf2EJr/LmIkWyAy5ZQFUyyzNSq0aUcZI19qloxepg+LY6xCzL5bygYsqkgGwBrLRYPzZXXc3qMjXp8QPgJgOONRTV8HfXgeo/ersRPkAM72ktjySBAXytyhq0DulB0UfbZRmN/xeyOXkOeuPQETj9srbG2G0XwxA7QoGjP4NKmLyXaDCPyvN0YEw2hCWKXNYYyXHxkVig= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(32650700020)(23010399003)(7416014)(376014)(6133799003)(18002099003)(22082099003)(13003099007)(56012099006)(11063799006)(3613699012)(10067099003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7SGeQVZub4Q763qqmKVidEfFf31vZ2dp6tBEiELDKTYZGOSlUQ/TMyOU1BCTMz2Ulfv8nYpmJ4jGOXH2EPS58gmGIn0KFY8buuQGVARwvnmZaIMtqvaogOmpfnFwN7L10kLFxD7ZO4nkBF6VTeU+UkbAke3lgB1r0ioxcxblqWCF6jODjvgdxE8ELxyGvTB+bdwUEvPI1GQZ60qtQGIWQxJ3W3O5GDqCcPbGYttXsSKGafRuU8e/SmugZscNZoqdbjP0DvrY39DVTp86f9vQ83DzerNOsVyuVbwaNpvqvx9zd0Xl/QHLg8Y5ibW9zI7DSqGZx/bRSq5i+u10D2qE80+B3JEHsNCVs7RvaWnthiZLiEK1GIR75Kqg4cNwwCzh0OJucc9MzonTK5gH7phtsaZV7u3PxRRGlPlTCnR1DsmudU4QlRqa9jzWS+ERWx9u X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:06.5880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 84a1c0f6-f1dc-49de-f2b4-08df08365b7f X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000004B.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMCPR02MB12428 Expose IIO_CHAN_INFO_CALIBBIAS on the accelerometer channels. The registers are stored in MREG1, which can be accessed by the mreg_read and mreg_write routines. The calibration bias is written to OFFSET_USER4 to OFFSET_USER8 registers in MREG1. Note: The accelerometer functionality is tested with Invensense, ICM42370-P development board. Datasheet: https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p Datasheet: https://www.lcsc.com/product-detail/C5129967.html Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c | 238 ++++++++++++++++++= +++- 1 file changed, 236 insertions(+), 2 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c b/drivers/ii= o/imu/inv_icm42607/inv_icm42607_accel.c index 318373efeb9e..af2ac9d6a47c 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c @@ -13,6 +13,7 @@ #include #include #include +#include =20 #include "inv_icm42607.h" #include "inv_icm42607_temp.h" @@ -22,9 +23,11 @@ .type =3D IIO_ACCEL, \ .modified =3D 1, \ .channel2 =3D _modifier, \ - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_CALIBBIAS), \ .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ - .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_CALIBBIAS), \ .info_mask_shared_by_all =3D BIT(IIO_CHAN_INFO_SAMP_FREQ), \ .info_mask_shared_by_all_available =3D BIT(IIO_CHAN_INFO_SAMP_FREQ), \ .scan_index =3D _index, \ @@ -56,6 +59,16 @@ static const struct iio_chan_spec inv_icm42607_accel_cha= nnels[] =3D { INV_ICM42607_TEMP_CHAN(INV_ICM42607_ACCEL_SCAN_TEMP), }; =20 +/* + * Calibration bias values, IIO range format int + micro. + * Value is limited to +/-1g coded on 12 bits signed. Step is 0.5mg. + */ +static int inv_icm42607_accel_calibbias[] =3D { + -10, 42010, /* Min : -2^11 * 0.0005 * 9.80665 =3D -10.042010 m/s=C2=B2= */ + 0, 4903, /* Step: 0.5 * 0.00980655 =3D 0.004903 m/s=C2=B2 */ + 10, 37106, /* Max : (2^11 - 1) * 0.0005 * 9.80665 =3D 10.037106 m/s=C2= =B2 */ +}; + static const int inv_icm42607_accel_scale_nano[][2] =3D { [INV_ICM42607_ACCEL_FS_16G] =3D { 0, 4788403 }, [INV_ICM42607_ACCEL_FS_8G] =3D { 0, 2394202 }, @@ -176,6 +189,221 @@ static int inv_icm42607_accel_write_odr(struct iio_de= v *indio_dev, return inv_icm42607_set_sensor_conf(st, &conf, IIO_ACCEL); } =20 +static int inv_icm42607_accel_read_offset(struct inv_icm42607_state *st, + struct iio_chan_spec const *chan, int *val, int *val2) +{ + struct device *dev =3D regmap_get_device(st->map); + u8 buffer_data[2]; + unsigned int reg; + s16 offset; + s64 val64; + s32 bias; + int ret; + + if (chan->type !=3D IIO_ACCEL) + return -EINVAL; + + switch (chan->channel2) { + case IIO_MOD_X: + reg =3D INV_ICM42607_REG_OFFSET_USER4; + break; + case IIO_MOD_Y: + reg =3D INV_ICM42607_REG_OFFSET_USER6; + break; + case IIO_MOD_Z: + reg =3D INV_ICM42607_REG_OFFSET_USER7; + break; + default: + return -EINVAL; + } + + PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + + guard(mutex)(&st->lock); + + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, reg, &buffer_data[= 0]); + if (ret) + return ret; + + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, reg + 1, + &buffer_data[1]); + if (ret) + return ret; + + /* 12 bits signed value */ + switch (chan->channel2) { + case IIO_MOD_X: + offset =3D sign_extend32(((buffer_data[0] & 0xF0) << 4) | buffer_data[1]= , 11); + break; + case IIO_MOD_Y: + offset =3D sign_extend32(((buffer_data[1] & 0x0F) << 8) | buffer_data[0]= , 11); + break; + case IIO_MOD_Z: + offset =3D sign_extend32(((buffer_data[0] & 0xF0) << 4) | buffer_data[1]= , 11); + break; + default: + return -EINVAL; + } + + /* + * Convert raw offset to g then to m/s=C2=B2 + * 12 bits signed raw step 0.5mg to g: 5 / 10000 + * g to m/s=C2=B2: 9.806650 + * Result in micro (1000000) + * (offset * 5 * 9.806650 * 1000000) / 10000 + */ + val64 =3D (s64)offset * 5LL * 9806650LL; + /* For rounding, add + or - divisor (10000) divided by 2 */ + if (val64 >=3D 0) + val64 +=3D 10000LL / 2LL; + else + val64 -=3D 10000LL / 2LL; + + bias =3D div_s64(val64, 10000L); + *val =3D bias / (long)MEGA; + *val2 =3D bias % (long)MEGA; + + return IIO_VAL_INT_PLUS_MICRO; +} + +static int inv_icm42607_accel_write_offset(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2) +{ + struct inv_icm42607_state *st =3D iio_device_get_drvdata(indio_dev); + struct device *dev =3D regmap_get_device(st->map); + u8 hi, lo, regval; + s32 min, max; + s16 offset; + s64 val64; + int ret; + + if (chan->type !=3D IIO_ACCEL) + return -EINVAL; + + /* inv_icm42607_accel_calibbias: min - step - max in micro */ + min =3D inv_icm42607_accel_calibbias[0] * (long)MEGA - + inv_icm42607_accel_calibbias[1]; + max =3D inv_icm42607_accel_calibbias[4] * (long)MEGA + + inv_icm42607_accel_calibbias[5]; + + val64 =3D (s64)val * (s64)MEGA; + if (val >=3D 0) + val64 +=3D (s64)val2; + else + val64 -=3D (s64)val2; + + if (val64 < min || val64 > max) + return -EINVAL; + + /* + * Convert m/s=C2=B2 to g then to raw value + * m/s=C2=B2 to g: 1 / 9.806650 + * g to raw 12 bits signed, step 0.5mg: 10000 / 5 + * val in micro (1000000) + * val * 10000 / (9.806650 * 1000000 * 5) + */ + val64 =3D val64 * 10000LL; + + /* For rounding, add + or - divisor (9806650 * 5) divided by 2 */ + if (val64 >=3D 0) + val64 +=3D 9806650 * 5 / 2; + else + val64 -=3D 9806650 * 5 / 2; + offset =3D div_s64(val64, 9806650 * 5); + + /* Clamp value limited to 12 bits signed */ + if (offset < -2048) + offset =3D -2048; + else if (offset > 2047) + offset =3D 2047; + + PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + + guard(mutex)(&st->lock); + + switch (chan->channel2) { + case IIO_MOD_X: + /* OFFSET_USER4 register is shared */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER4, ®val); + if (ret) + return ret; + + hi =3D ((offset & 0xF00) >> 4) | (regval & 0x0F); + lo =3D offset & 0xFF; + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER4, hi); + if (ret) + return ret; + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER5, lo); + + if (ret) + return ret; + break; + + case IIO_MOD_Y: + /* OFFSET_USER7 register is shared */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER7, + ®val); + if (ret) + return ret; + + lo =3D offset & 0xFF; + hi =3D ((offset & 0xF00) >> 8) | (regval & 0xF0); + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER7, + hi); + if (ret) + return ret; + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER6, + lo); + if (ret) + return ret; + break; + + case IIO_MOD_Z: + /* OFFSET_USER7 register is shared */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER7, + ®val); + if (ret) + return ret; + + hi =3D ((offset & 0xF00) >> 4) | (regval & 0x0F); + lo =3D offset & 0xFF; + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER7, hi); + if (ret) + return ret; + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER8, lo); + if (ret) + return ret; + break; + + default: + return -EINVAL; + } + + return 0; +} + static int inv_icm42607_accel_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask) @@ -207,6 +435,8 @@ static int inv_icm42607_accel_read_raw(struct iio_dev *= indio_dev, return inv_icm42607_accel_read_scale(indio_dev, val, val2); case IIO_CHAN_INFO_SAMP_FREQ: return inv_icm42607_accel_read_odr(st, val, val2); + case IIO_CHAN_INFO_CALIBBIAS: + return inv_icm42607_accel_read_offset(st, chan, val, val2); default: return -EINVAL; } @@ -250,6 +480,8 @@ static int inv_icm42607_accel_write_raw(struct iio_dev = *indio_dev, return ret; case IIO_CHAN_INFO_SAMP_FREQ: return inv_icm42607_accel_write_odr(indio_dev, val, val2); + case IIO_CHAN_INFO_CALIBBIAS: + return inv_icm42607_accel_write_offset(indio_dev, chan, val, val2); default: return -EINVAL; } @@ -266,6 +498,8 @@ static int inv_icm42607_accel_write_raw_get_fmt(struct = iio_dev *indio_dev, return IIO_VAL_INT_PLUS_NANO; case IIO_CHAN_INFO_SAMP_FREQ: return IIO_VAL_INT_PLUS_MICRO; + case IIO_CHAN_INFO_CALIBBIAS: + return IIO_VAL_INT_PLUS_MICRO; default: return -EINVAL; } --=20 2.43.0 From nobody Sat Sep 26 12:29:01 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013039.outbound.protection.outlook.com [52.101.72.39]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 351A83C5826; Tue, 1 Sep 2026 14:36:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.39 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273378; cv=fail; b=Ez9TVjQ19/K3UfBmaXqIW18ZJY79tbXad666wvPXq17SHRGrJM4qAdGx39/3KlI3b4/M176OG5jouInC64StKbuX/ylBTxhDSUpdEsfD0fkdnGqoV+xWf8fX/QNfkCd9qVzCzovTRHQiN+XAsF2SE5bu2wPulJBXz1SgyuPPW1Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788273378; c=relaxed/simple; bh=pFN/oL3nsfqOktGXOZRuzDJioPVKrdv3tqVeNYEAliE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=tQS66XP0R66RUejCKHpMmQE7kEaH6sdZruZvelH6IEuLIYm1D451gtPSJBeLMAbOf51QRMl02atJMEzHmDZDGJaeLbKsEt6SSwyjMxHHkfhkIw3LvxWQfSZy2s+nae5pOk7YZRLw4nayfL1RExNglU3EWaemDGaPhw28FWjdaSg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=BOboJlJW; arc=fail smtp.client-ip=52.101.72.39 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="BOboJlJW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TZWKBKedmGvOTYUPd7H93iTeGKjZOosZSis7TDZmZOX37+ANfp7GhIqbDvE46QZMu0IJ0EpBCGz2pvQatbpROjL60kUQ9G03HEWD3mUzLW7lBnNQk1QdJr88T1Vp5xW9a7w/wpY24eQRNHm064a94B6EbpEaU6cb3sKfQfbIxrGmeu4pxPjirfvNCqrQ8lfIVCetY3HBQH7Q05+z2H0mHPk3cVG8Rt5Q737u8V6fTCaCi2qr0XQ9kebnyu73sbZZhchF1Odd2wWYmXDuBq5R6YSPB/4vhM/TgBnME2/pYbiAH6WW3+tKVE5jwBGUtHSZ6tIBVT5eZBKkcH55HRFTGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LuPCBiVrk2sfy9OoMsydbiSR4dSMRYtIB9X3CZq4X7Y=; b=aPaXXe0HisPyQ9W7VuRzapi+n3KqxKoISYAXvHUI0LPnL9W5TzBjinVb2D95NypK5O/KbxfrBSPYb1/jP9sES1a5mazoHiXJsfrfYHZTLnLW24GHh5YlvZpkTkW+Csylgj7Pt2UlkLH1Rp+LE9YC6RhYmqXPQiaFiK3B36t7cIW7XU6X55xxSDaVs4975z4/B+1ADoc+EMXMtTHgMZRxKbq1ykxkPOs1ImEvL88DOEG1WxSmWaU1Brs2Ld9TJBk/9UnFh5aKQL0wHgGSR6g2DLXiQkbvhFnDw1CI0K7GxT5gp4Gx4x2xdrVLpWUkPm+0kOxOmOv6xL92/qz6Fg9PuA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=analog.com smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LuPCBiVrk2sfy9OoMsydbiSR4dSMRYtIB9X3CZq4X7Y=; b=BOboJlJWm+gQ7Zs4oy0RFkvbOGdxN6i9RkI3mdiOe8Xokwx1IUChg9CqeO5kvKKvg29LZh1ta6phy3v4WbII/9P1OZvjUx+HHQlRjqgHAM7HCtlL3J4JuiOVHyXGufol30kYlI0cMl7jOGoyKiCPH1dZIMx6bkPcKkGr/ckQxHs= Received: from AS4P190CA0069.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::15) by AM0PR02MB5793.eurprd02.prod.outlook.com (2603:10a6:208:18b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 14:36:09 +0000 Received: from AMS1EPF0000004B.eurprd04.prod.outlook.com (2603:10a6:20b:656:cafe::93) by AS4P190CA0069.outlook.office365.com (2603:10a6:20b:656::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 14:36:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS1EPF0000004B.mail.protection.outlook.com (10.167.16.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 14:36:09 +0000 Received: from se-mail10w.axis.com (10.20.40.10) by se-mail11w.axis.com (10.20.40.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 16:36:04 +0200 Received: from se-intmail02x.se.axis.com (10.4.0.28) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server id 15.2.1748.39 via Frontend Transport; Tue, 1 Sep 2026 16:36:04 +0200 Received: from pc66231-2602.sto.se.axis.com (pc66231-2602.sto.se.axis.com [10.133.4.42]) by se-intmail02x.se.axis.com (Postfix) with ESMTP id AD7622E8C; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) Received: by pc66231-2602.sto.se.axis.com (Postfix, from userid 21940) id 7B1A9305CBCF; Tue, 1 Sep 2026 16:36:04 +0200 (CEST) From: Kanak Shilledar Date: Tue, 1 Sep 2026 16:36:01 +0200 Subject: [PATCH v3 8/8] iio: imu: inv_icm42607: Add gyroscope calibbias support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20260901-b4-inv_icm42370p-v3-8-77cc31642115@axis.com> References: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> In-Reply-To: <20260901-b4-inv_icm42370p-v3-0-77cc31642115@axis.com> To: Henrik Grimler , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Jean-Baptiste Maneyrol" , Joshua Crofts , Marcelo Schmitt , Chris Morgan CC: Kanak Shilledar , , , , X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=9661; i=kanak.shilledar@axis.com; h=from:subject:message-id; bh=pFN/oL3nsfqOktGXOZRuzDJioPVKrdv3tqVeNYEAliE=; b=owGbwMvMwCV2JPnG7+2HZqUznlZLYsia9uhKU3Yi76+OKZ1R8067THETTXB/0l1y8eDqcCP3X 94ZtjeLO0pZGMS4GGTFFFnOGW2P3p/8T3eOtNMlmDmsTCBDGLg4BWAiQRWMDBOVWT6UvnjD9KLy 3v3qBBFr++2H5L7t5b66+V6i0NNU/fMM/xMN42de3bao6vRaLv2vJkkuL37JmK+emSLv4NvwJyJ +Dj8A X-Developer-Key: i=kanak.shilledar@axis.com; a=openpgp; fpr=CDB0F1C8EAD5B522C7B3A77928221FF065DB55F9 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS1EPF0000004B:EE_|AM0PR02MB5793:EE_ X-MS-Office365-Filtering-Correlation-Id: 2be8631c-00ed-46ea-952b-08df08365d01 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|32650700020|376014|1800799024|7416014|23010399003|82310400026|921020|3613699012|6133799003|10067099003|11063799006|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: t3xv93DHLMmHWZEDU0T0+a42apWVXF+usDABrxpCnO0pbL6qB38bdIkPfMj2tjmnqfbcqRQp7lGacYNiV98XgEn7Ru/cCgURrz7yVVnueMNW5vDSp9MVTh7EtDEcfVOGjEhk2UvbTrWjb78j+WfX86IeEEVbYjbbBN410Kt97lr9cvVREpy23e+SQvop5bA4K2ChPjNDlkSWiXxYqeEy5Q19htaobBrTWAyofvLtYXDK/zK3GEiW8qNvV64nhNi+7N6KY8GP2r/vbCTrPR/L6LKfvhsmLDrrNdJDeOl9s2fPdGjHFk21msBdXcNiTGVf3vHUvQUqoYvA0oFxDDXZ3j+ByuKH3PRmstDnnDr4RVbHqO+i6k566Nr9mI9XLvwc47dFIsWSLdicnEO5+bH7ypvpEPkRncRUblBAXZPKy9g3+ZJWloWVYZsLdBwsEcbsB0FNGg6gxFC7Ebv9C3UTCCOkah2+GfOoR1YpWtPYQlqmy/+9v2H6egsnS+MtriyCf1NOS4GU1pNVsWlw6ec1vS/GIP12up8JX5iz4RwVodR8xo0VGXve5yFSiM0zwVgC94yoVk3iZTZ/v2Z2gi7UUZqpTCrmfhvYbrLHHSLGz6OLcpuPnqbIZc6BsV5EsgSKyISGBE0qUSCu/JLjv2njY/tS8E/GnqureJRPyJniaBYZVJdz9plKmDEgHc/2BYIxJin1wulMdEk0A0EPUl/9s4/Ab6MCbG/wHtCqYYLEkaU= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(32650700020)(376014)(1800799024)(7416014)(23010399003)(82310400026)(921020)(3613699012)(6133799003)(10067099003)(11063799006)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Yybs6xGh652nT+ALubQQVSjriWOdqD/28yXGUx3GEu37kSmIgZ63S7KtVwVjIeUSe7NDlqSg16H6NKcycA06KDgZo7wCLJVB1UFBsJuBoDHlEQxztI2barmzN0GdIgY33eVs7Mn9/7tnTcA84FSxdsQdzIuknXs2Q4RKNL8O2q0EGFcP4Cf8MkH3k6HMHEaxhRtI9/uq0KcTc1n8IUfRl5e8e52oF0JoKIc8lf2URbU5W2tWwM5gF0zruzQdqzYTD7bKl188vuIWZs5x0lPwI7/t45kvWFVR9DlgepP39+DtlDjh9zT07jDiSt12H3eZ0LmDGUbKO8mcv9NdK6C5Q2aopT5wzeZkiCrLJKaqJhVSsZXdJkfzOBiZhn4WYXGoSzRFTPysB3mNCxk7aykGc1I7JE4iGGR3d57/26R0iNiMa4NQTM3IQAV6u9vGw0DY X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 14:36:09.1148 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2be8631c-00ed-46ea-952b-08df08365d01 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000004B.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR02MB5793 Expose IIO_CHAN_INFO_CALIBBIAS on the gyroscope channels. The registers are stored in MREG1, which can be accessed by the mreg_read and mreg_write routines. The calibration bias is written to OFFSET_USER0 to OFFSET_USER3 registers in MREG1. Note: The gyroscope calibbias functionality is not tested on actual hardware. Datasheet: https://www.invensense.tdk.com/en-us/products/3-axis/icm-42370-p Datasheet: https://www.lcsc.com/product-detail/C5129967.html Signed-off-by: Kanak Shilledar --- drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c | 233 +++++++++++++++++++= +++- 1 file changed, 231 insertions(+), 2 deletions(-) diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c b/drivers/iio= /imu/inv_icm42607/inv_icm42607_gyro.c index fb9bacee4e8d..58647cbd4ea4 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c @@ -13,6 +13,7 @@ #include #include #include +#include =20 #include "inv_icm42607.h" #include "inv_icm42607_temp.h" @@ -22,9 +23,11 @@ .type =3D IIO_ANGL_VEL, \ .modified =3D 1, \ .channel2 =3D _modifier, \ - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_CALIBBIAS), \ .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ - .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_CALIBBIAS), \ .info_mask_shared_by_all =3D BIT(IIO_CHAN_INFO_SAMP_FREQ), \ .info_mask_shared_by_all_available =3D BIT(IIO_CHAN_INFO_SAMP_FREQ), \ .scan_index =3D _index, \ @@ -63,6 +66,16 @@ static const int inv_icm42607_gyro_scale_nano[][2] =3D { [INV_ICM42607_GYRO_FS_250DPS] =3D { 0, 133158 }, }; =20 +/* + * Calibration bias values, IIO range format int + micro. + * Value is limited to +/-64 dps coded on 12 bits signed. Step is 1/32 dps. + */ +static int inv_icm42607_gyro_calibbias[] =3D { + -1, 117011, /* Min : -2^11 * (1/32) * (pi/180) =3D -1.117011 rad/s */ + 0, 545, /* Step: (1/32) * (pi/180) =3D 0.000545 rad/s */ + 1, 116465, /* Max : (2^11 - 1) * (1/32) * (pi/180) =3D 1.116465 rad/s */ +}; + static int inv_icm42607_gyro_read_scale(struct iio_dev *indio_dev, int *val, int *val2) { @@ -173,6 +186,209 @@ static int inv_icm42607_gyro_write_odr(struct iio_dev= *indio_dev, return inv_icm42607_set_sensor_conf(st, &conf, IIO_ANGL_VEL); } =20 +static int inv_icm42607_gyro_read_offset(struct inv_icm42607_state *st, + struct iio_chan_spec const *chan, + int *val, int *val2) +{ + struct device *dev =3D regmap_get_device(st->map); + s16 offset; + s64 val64; + u8 lo, hi; + s32 bias; + int ret; + + if (chan->type !=3D IIO_ANGL_VEL) + return -EINVAL; + + PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + + guard(mutex)(&st->lock); + + switch (chan->channel2) { + case IIO_MOD_X: + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER0, &lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, &hi); + if (ret) + return ret; + offset =3D sign_extend32(((hi & 0x0F) << 8) | lo, 11); + break; + + case IIO_MOD_Y: + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER2, &lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, &hi); + if (ret) + return ret; + offset =3D sign_extend32((((hi & 0xF0) >> 4) << 8) | lo, 11); + break; + + case IIO_MOD_Z: + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER3, &lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER4, &hi); + if (ret) + return ret; + offset =3D sign_extend32(((hi & 0x0F) << 8) | lo, 11); + break; + + default: + return -EINVAL; + } + + /* + * Convert raw offset to dps then to rad/s + * 12 bits signed raw, step 1/32 dps + * dps to rad/s: pi / 180 + * Result in micro (1000000): offset * 5760 / (pi * 1e6) [inverse below] + * offset * pi * 1e6 / 5760, using pi*1e6 ~=3D 3141593 + */ + val64 =3D (s64)offset * 3141593LL; + if (val64 >=3D 0) + val64 +=3D 5760LL / 2LL; + else + val64 -=3D 5760LL / 2LL; + + bias =3D div_s64(val64, 5760L); + *val =3D bias / (long)MEGA; + *val2 =3D bias % (long)MEGA; + + return IIO_VAL_INT_PLUS_MICRO; +} + +static int inv_icm42607_gyro_write_offset(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2) +{ + struct inv_icm42607_state *st =3D iio_device_get_drvdata(indio_dev); + struct device *dev =3D regmap_get_device(st->map); + u8 hi, lo, regval; + s64 min64, max64; + s16 offset; + s64 val64; + int ret; + + if (chan->type !=3D IIO_ANGL_VEL) + return -EINVAL; + + /* inv_icm42607_gyro_calibbias: min - step - max in micro */ + min64 =3D (s64)inv_icm42607_gyro_calibbias[0] * MEGA - + inv_icm42607_gyro_calibbias[1]; + max64 =3D (s64)inv_icm42607_gyro_calibbias[4] * MEGA + + inv_icm42607_gyro_calibbias[5]; + + val64 =3D (s64)val * (s64)MEGA; + if (val >=3D 0) + val64 +=3D (s64)val2; + else + val64 -=3D (s64)val2; + + if (val64 < min64 || val64 > max64) + return -EINVAL; + + /* + * Convert rad/s to dps then to raw 12-bit signed value, step 1/32 dps + * offset =3D val(rad/s, micro) * 5760 / (pi * 1e6), pi*1e6 ~=3D 3141593 + */ + val64 =3D val64 * 5760LL; + if (val64 >=3D 0) + val64 +=3D 3141593LL / 2LL; + else + val64 -=3D 3141593LL / 2LL; + offset =3D div_s64(val64, 3141593LL); + + if (offset < -2048) + offset =3D -2048; + else if (offset > 2047) + offset =3D 2047; + + PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + + guard(mutex)(&st->lock); + + switch (chan->channel2) { + case IIO_MOD_X: + /* OFFSET_USER1 register is shared with Y */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, ®val); + if (ret) + return ret; + + lo =3D offset & 0xFF; + hi =3D ((offset & 0xF00) >> 8) | (regval & 0xF0); + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER0, lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, hi); + if (ret) + return ret; + break; + + case IIO_MOD_Y: + /* OFFSET_USER1 register is shared with X */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, ®val); + if (ret) + return ret; + + lo =3D offset & 0xFF; + hi =3D ((offset & 0xF00) >> 4) | (regval & 0x0F); + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER2, lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER1, hi); + if (ret) + return ret; + break; + + case IIO_MOD_Z: + /* OFFSET_USER4 register is shared with accel X */ + ret =3D inv_icm42607_mreg_read(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER4, ®val); + if (ret) + return ret; + + lo =3D offset & 0xFF; + hi =3D ((offset & 0xF00) >> 8) | (regval & 0xF0); + + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER3, lo); + if (ret) + return ret; + ret =3D inv_icm42607_mreg_write(st, INV_ICM42607_MREG1, + INV_ICM42607_REG_OFFSET_USER4, hi); + if (ret) + return ret; + break; + + default: + return -EINVAL; + } + + return 0; +} + static int inv_icm42607_gyro_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask) @@ -204,6 +420,8 @@ static int inv_icm42607_gyro_read_raw(struct iio_dev *i= ndio_dev, return inv_icm42607_gyro_read_scale(indio_dev, val, val2); case IIO_CHAN_INFO_SAMP_FREQ: return inv_icm42607_gyro_read_odr(st, val, val2); + case IIO_CHAN_INFO_CALIBBIAS: + return inv_icm42607_gyro_read_offset(st, chan, val, val2); default: return -EINVAL; } @@ -228,6 +446,13 @@ static int inv_icm42607_gyro_read_avail(struct iio_dev= *indio_dev, *length =3D (ARRAY_SIZE(inv_icm42607_gyro_odr) - INV_ICM42607_ODR_1600HZ) * 2; return IIO_AVAIL_LIST; + case IIO_CHAN_INFO_CALIBBIAS: + if (chan->type !=3D IIO_ANGL_VEL) + return -EINVAL; + *vals =3D inv_icm42607_gyro_calibbias; + *type =3D IIO_VAL_INT_PLUS_MICRO; + *length =3D ARRAY_SIZE(inv_icm42607_gyro_calibbias); + return IIO_AVAIL_RANGE; default: return -EINVAL; } @@ -247,6 +472,8 @@ static int inv_icm42607_gyro_write_raw(struct iio_dev *= indio_dev, return ret; case IIO_CHAN_INFO_SAMP_FREQ: return inv_icm42607_gyro_write_odr(indio_dev, val, val2); + case IIO_CHAN_INFO_CALIBBIAS: + return inv_icm42607_gyro_write_offset(indio_dev, chan, val, val2); default: return -EINVAL; } @@ -263,6 +490,8 @@ static int inv_icm42607_gyro_write_raw_get_fmt(struct i= io_dev *indio_dev, return IIO_VAL_INT_PLUS_NANO; case IIO_CHAN_INFO_SAMP_FREQ: return IIO_VAL_INT_PLUS_MICRO; + case IIO_CHAN_INFO_CALIBBIAS: + return IIO_VAL_INT_PLUS_MICRO; default: return -EINVAL; } --=20 2.43.0