From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BB4CCC44512 for ; Thu, 16 Jul 2026 18:29:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nVvtjPMWyJf0czOMX5AcgU7Hf1JblWIYleFFfJhnC6c=; b=2XduNhEaW08EK1 E8+9wGhraWjQfUcvXrU4OSdsYDkLcRq3LO3eKj3/FdXoYQ8FWp8wY/eh/GuY78VE+7U/XXIMHNOeT Pk2guIS8v+QBPgv6m7Ag/MB73n8kkHcB0T+YMjuiVaP2VrF5Wp96qRTN24uwwoU1EUCCEszml3ePP G0GUovazlKWvaBOM9p2N6bwGFR8JaUN+UXyebA+QHVZ21wiCVFjgilc/QblP+IdakpbTC2F/I8P6M KvYasjZ11PgKjvMHok9/SH53Fqc+xiqc1yJIK1NJgPtifQk6GUJKHRVTVkaLwt689nqeOMZx5Px1c e4Prix/0nTnCDfsylhVA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wkQpb-00000000OEB-1z2H; Thu, 16 Jul 2026 18:29:11 +0000 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wkQpZ-00000000O9y-159s for linux-rockchip@lists.infradead.org; Thu, 16 Jul 2026 18:29:10 +0000 Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-7eb34c17b96so4468231a34.2 for ; Thu, 16 Jul 2026 11:29:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784226548; x=1784831348; darn=lists.infradead.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=huK+4iSPdfkgl67lIGlfvxQ4rc8RHlrj3WAmWFb8XCw=; b=sbox0bpHS2P5WguYqVLyAMNi2HtvCvm0S0+kNHjxGPsPwuG62U/lteUwT/05sSC705 sPTeWSPfAki1I9DSFldAZxQ+lLddjGKS5kFP2rAflD2oKU5A5vLqjHyoXXoEY+2Jp1Q/ eXCwvV9O3J93VFtjjxEaCWOvcYXj1novZCKJEwYSuzHdyWtmbHEZqM4mv1/cEB4K7ySK kMPm1tsVX8pEcDrl2Gz0tzGQHD0Yg+Ksq767PyYHJaGiBgjoOewJMRlR29aiK4aqBm3p ELwP1KrT3q9XbkpAfhGv2RlsoFMoMAARqhDFsUj3mvxqM2KpYXaFl3ns7P/0rG+G1ux5 L8pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784226548; x=1784831348; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=huK+4iSPdfkgl67lIGlfvxQ4rc8RHlrj3WAmWFb8XCw=; b=BD4qepSLBjMIq0ST4yJ8w/h6SFCmG1M1MgvDs53ahFZYatoUFhurKdoAOnlZgY20ww cchZTd8KV4adQnccoy7Qf9f+7R52GdTKVhHW5kO91SEFxQx7svki5Bg/RNOY5hXNeUGN GbbHlGKUNfJ+HYTtlqBjzCRh3v1UqCTeGRhWUtPiFp7NIXUvk946RAfZqz2WAXtRjZMW E9LzHqzq4pT6X1bA4fT+aJmy/1XvLqzbMKZPw9VAP/s8BOqo0oHi51o2Iwgo19aH+Zv3 G9mJ41Q7QVpZ46mouZwKtylFYZx18y2Ok4pMc+ogo4VYy3BaIE59xQjkY8r9AHtJh/RF GBvA== X-Forwarded-Encrypted: i=1; AHgh+RrLxVxdW7st5kXjzszHNPYhh6cAigJ1bLoKUcku6oJVaX9tT0U5OzZqK/GZojOmk8nndYB4PtO8WRbVNSunAA==@lists.infradead.org X-Gm-Message-State: AOJu0YzIW4iMOA+G01iy7eZqD0Z+Osleh6aUpHFFehLqY4XLYqaExDQN Q5q2FM3iD2MeAaUxWDbIe0EiLr/NpE4jYEuFTAVsLQBR1riO9vYbNBTCDVU6zg== X-Gm-Gg: AfdE7ckToMI5bVd7qKCD/HY6JWlV/btlZikXCv9e/TvLxoXugp9azvcL88SWWEJpVor KPYnXdxpdfHlXRXefjdHYnGQGLb03+ZDxdJdF1f9V3+I2HcInp7eQcsos82yHfCnUTvA4qOKC2R XPaIYzUdK0M5JAt4qqK9yjSuqsNnKW1WADeh6n5Cq46YAqY8O8cAdX25dOAaQ2yN+0kx7QrHpmX npzE7iwGiPYfKv0i88DbKyR+EGhZDRdAmoItPX43DiQzmkMf5ZN23Ko076JvuZxhxHCIiZSMI7E 3r/OKxvqDHa6zXdXPO3kI2s0xZB2QSwbp+W4V1DZQ7pA5bm5c0bVHZjcSzbfWUscXv8i9Ksu7j8 sIc5X0GGfvXXNRa8etz9TnckzsUesjSGXis0Ps6uyBKe/P+1Mpa8tSV2VMSpMNSvUWz07BdJZzX gk X-Received: by 2002:a05:6830:4423:b0:7e6:f482:df36 with SMTP id 46e09a7af769-7ec59d4092bmr5510593a34.15.1784226548173; Thu, 16 Jul 2026 11:29:08 -0700 (PDT) Received: from localhost.localdomain ([2600:1700:fb0:1bc0::54]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7ebcb3f6826sm19939993a34.27.2026.07.16.11.29.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 11:29:07 -0700 (PDT) From: Chris Morgan To: linux-iio@vger.kernel.org Cc: andy@kernel.org, nuno.sa@analog.com, dlechner@baylibre.com, jic23@kernel.org, jean-baptiste.maneyrol@tdk.com, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, heiko@sntech.de, conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, andriy.shevchenko@intel.com, Chris Morgan Subject: [PATCH V17 8/9] iio: imu: inv_icm42607: Add Temp Support in icm42607 Date: Thu, 16 Jul 2026 13:26:35 -0500 Message-ID: <20260716182637.24310-9-macroalpha82@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260716182637.24310-1-macroalpha82@gmail.com> References: <20260716182637.24310-1-macroalpha82@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260716_112909_321402_C4DA8180 X-CRM114-Status: GOOD ( 22.01 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org RnJvbTogQ2hyaXMgTW9yZ2FuIDxtYWNyb21vcmdhbkBob3RtYWlsLmNvbT4KCkFkZCBmdW5jdGlv bnMgZm9yIHJlYWRpbmcgdGVtcGVyYXR1cmUgc2Vuc29yIGRhdGEuCgpTaWduZWQtb2ZmLWJ5OiBD aHJpcyBNb3JnYW4gPG1hY3JvbW9yZ2FuQGhvdG1haWwuY29tPgotLS0KIGRyaXZlcnMvaWlvL2lt dS9pbnZfaWNtNDI2MDcvTWFrZWZpbGUgICAgICAgICB8ICAxICsKIC4uLi9paW8vaW11L2ludl9p Y200MjYwNy9pbnZfaWNtNDI2MDdfYWNjZWwuYyB8ICA2ICsrCiAuLi4vaWlvL2ltdS9pbnZfaWNt NDI2MDcvaW52X2ljbTQyNjA3X2d5cm8uYyAgfCAgNiArKwogLi4uL2lpby9pbXUvaW52X2ljbTQy NjA3L2ludl9pY200MjYwN190ZW1wLmMgIHwgOTggKysrKysrKysrKysrKysrKysrKwogLi4uL2lp by9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN190ZW1wLmggIHwgMzggKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3X3RlbXAuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3X3RlbXAuaAoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcvTWFrZWZpbGUgYi9kcml2 ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L01ha2VmaWxlCmluZGV4IDhlNzMzODVjOGY0Yi4uN2I5 MDdlMDE5NjAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcvTWFrZWZpbGUKQEAgLTQsNiAr NCw3IEBAIG9iai0kKENPTkZJR19JTlZfSUNNNDI2MDcpICs9IGludi1pY200MjYwNy5vCiBpbnYt aWNtNDI2MDcteSArPSBpbnZfaWNtNDI2MDdfY29yZS5vCiBpbnYtaWNtNDI2MDcteSArPSBpbnZf aWNtNDI2MDdfZ3lyby5vCiBpbnYtaWNtNDI2MDcteSArPSBpbnZfaWNtNDI2MDdfYWNjZWwubwor aW52LWljbTQyNjA3LXkgKz0gaW52X2ljbTQyNjA3X3RlbXAubwogCiBvYmotJChDT05GSUdfSU5W X0lDTTQyNjA3X0kyQykgKz0gaW52LWljbTQyNjA3LWkyYy5vCiBpbnYtaWNtNDI2MDctaTJjLXkg Kz0gaW52X2ljbTQyNjA3X2kyYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2lj bTQyNjA3L2ludl9pY200MjYwN19hY2NlbC5jIGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYw Ny9pbnZfaWNtNDI2MDdfYWNjZWwuYwppbmRleCA3YmI2N2YyMzJkMTkuLjlhNDRhMTgwZTVjYyAx MDA2NDQKLS0tIGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfYWNj ZWwuYworKysgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN19hY2Nl bC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1 ZGUgImludl9pY200MjYwNy5oIgorI2luY2x1ZGUgImludl9pY200MjYwN190ZW1wLmgiCiAKICNk ZWZpbmUgSU5WX0lDTTQyNjA3X0FDQ0VMX0NIQU4oX21vZGlmaWVyLCBfaW5kZXgsIF9leHRfaW5m bykJCQlcCiB7CQkJCQkJCQkJCVwKQEAgLTQwLDYgKzQxLDcgQEAgZW51bSBpbnZfaWNtNDI2MDdf YWNjZWxfc2NhbiB7CiAJSU5WX0lDTTQyNjA3X0FDQ0VMX1NDQU5fWCwKIAlJTlZfSUNNNDI2MDdf QUNDRUxfU0NBTl9ZLAogCUlOVl9JQ000MjYwN19BQ0NFTF9TQ0FOX1osCisJSU5WX0lDTTQyNjA3 X0FDQ0VMX1NDQU5fVEVNUCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3Bl Y19leHRfaW5mbyBpbnZfaWNtNDI2MDdfYWNjZWxfZXh0X2luZm9zW10gPSB7CkBAIC01NCw2ICs1 Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBpbnZfaWNtNDI2MDdfYWNj ZWxfY2hhbm5lbHNbXSA9IHsKIAkJCQlpbnZfaWNtNDI2MDdfYWNjZWxfZXh0X2luZm9zKSwKIAlJ TlZfSUNNNDI2MDdfQUNDRUxfQ0hBTihJSU9fTU9EX1osIElOVl9JQ000MjYwN19BQ0NFTF9TQ0FO X1osCiAJCQkJaW52X2ljbTQyNjA3X2FjY2VsX2V4dF9pbmZvcyksCisJSU5WX0lDTTQyNjA3X1RF TVBfQ0hBTihJTlZfSUNNNDI2MDdfQUNDRUxfU0NBTl9URU1QKSwKIH07CiAKIHN0YXRpYyBjb25z dCBpbnQgaW52X2ljbTQyNjA3X2FjY2VsX3NjYWxlX25hbm9bXVsyXSA9IHsKQEAgLTE4Niw2ICsx ODksOSBAQCBzdGF0aWMgaW50IGludl9pY200MjYwN19hY2NlbF9yZWFkX3JhdyhzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2LAogCiAJc3dpdGNoIChtYXNrKSB7CiAJY2FzZSBJSU9fQ0hBTl9JTkZP X1JBVzoKKwkJaWYgKGNoYW4tPnR5cGUgPT0gSUlPX1RFTVApCisJCQlyZXR1cm4gaW52X2ljbTQy NjA3X3RlbXBfcmVhZF9yYXcoaW5kaW9fZGV2LCBjaGFuLAorCQkJCQkJCSAgdmFsLCB2YWwyLCBt YXNrKTsKIAkJcmV0ID0gaW52X2ljbTQyNjA3X3JlYWRfc2Vuc29yKGluZGlvX2RldiwgY2hhbiwg JmRhdGEpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aWlvL2ltdS9pbnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3X2d5cm8uYyBiL2RyaXZlcnMvaWlvL2lt dS9pbnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3X2d5cm8uYwppbmRleCA5MjNkNDdkMDk2YmQuLmZh NmU2NWM3YWI2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwNy9pbnZf aWNtNDI2MDdfZ3lyby5jCisrKyBiL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcvaW52X2lj bTQyNjA3X2d5cm8uYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CiAKICNpbmNsdWRlICJpbnZfaWNtNDI2MDcuaCIKKyNpbmNsdWRlICJpbnZfaWNtNDI2MDdfdGVt cC5oIgogCiAjZGVmaW5lIElOVl9JQ000MjYwN19HWVJPX0NIQU4oX21vZGlmaWVyLCBfaW5kZXgs IF9leHRfaW5mbykJCQlcCiB7CQkJCQkJCQkJCVwKQEAgLTQwLDYgKzQxLDcgQEAgZW51bSBpbnZf aWNtNDI2MDdfZ3lyb19zY2FuIHsKIAlJTlZfSUNNNDI2MDdfR1lST19TQ0FOX1gsCiAJSU5WX0lD TTQyNjA3X0dZUk9fU0NBTl9ZLAogCUlOVl9JQ000MjYwN19HWVJPX1NDQU5fWiwKKwlJTlZfSUNN NDI2MDdfR1lST19TQ0FOX1RFTVAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFu X3NwZWNfZXh0X2luZm8gaW52X2ljbTQyNjA3X2d5cm9fZXh0X2luZm9zW10gPSB7CkBAIC01NCw2 ICs1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBpbnZfaWNtNDI2MDdf Z3lyb19jaGFubmVsc1tdID0gewogCQkJICAgICAgIGludl9pY200MjYwN19neXJvX2V4dF9pbmZv cyksCiAJSU5WX0lDTTQyNjA3X0dZUk9fQ0hBTihJSU9fTU9EX1osIElOVl9JQ000MjYwN19HWVJP X1NDQU5fWiwKIAkJCSAgICAgICBpbnZfaWNtNDI2MDdfZ3lyb19leHRfaW5mb3MpLAorCUlOVl9J Q000MjYwN19URU1QX0NIQU4oSU5WX0lDTTQyNjA3X0dZUk9fU0NBTl9URU1QKSwKIH07CiAKIHN0 YXRpYyBjb25zdCBpbnQgaW52X2ljbTQyNjA3X2d5cm9fc2NhbGVfbmFub1tdWzJdID0gewpAQCAt MTgzLDYgKzE4Niw5IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2d5cm9fcmVhZF9yYXcoc3Ry dWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAogCXN3aXRjaCAobWFzaykgewogCWNhc2UgSUlPX0NI QU5fSU5GT19SQVc6CisJCWlmIChjaGFuLT50eXBlID09IElJT19URU1QKQorCQkJcmV0dXJuIGlu dl9pY200MjYwN190ZW1wX3JlYWRfcmF3KGluZGlvX2RldiwgY2hhbiwKKwkJCQkJCQkgIHZhbCwg dmFsMiwgbWFzayk7CiAJCXJldCA9IGludl9pY200MjYwN19yZWFkX3NlbnNvcihpbmRpb19kZXYs IGNoYW4sICZkYXRhKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN190ZW1wLmMgYi9kcml2ZXJz L2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN190ZW1wLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NjgxZWYyYjQ5ZTIKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN190ZW1wLmMKQEAgLTAs MCArMSw5OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIK Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgSW52ZW5TZW5zZSwgSW5jLgorICovCisKKyNpbmNs dWRlIDxsaW51eC9jbGVhbnVwLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVk ZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPgorI2luY2x1ZGUgPGxp bnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUgPGxp bnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgv dW5hbGlnbmVkLmg+CisKKyNpbmNsdWRlICJpbnZfaWNtNDI2MDcuaCIKKyNpbmNsdWRlICJpbnZf aWNtNDI2MDdfdGVtcC5oIgorCitzdGF0aWMgaW50IGludl9pY200MjYwN190ZW1wX3JlYWQoc3Ry dWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QsIHMxNiAqdGVtcCkKK3sKKwlzdHJ1Y3QgaW52X2lj bTQyNjA3X3NlbnNvcl9jb25mIGNvbmYgPSBJTlZfSUNNNDI2MDdfU0VOU09SX0NPTkZfSU5JVDsK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSByZWdtYXBfZ2V0X2RldmljZShzdC0+bWFwKTsKKwlpbnQg cmV0LCBneXJvX21vZGUsIGFjY2VsX21vZGU7CisJdW5zaWduZWQgaW50IHZhbDsKKwl1OCByYXdb Ml07CisKKwlQTV9SVU5USU1FX0FDUVVJUkVfQVVUT1NVU1BFTkQoZGV2LCBwbSk7CisJcmV0ID0g UE1fUlVOVElNRV9BQ1FVSVJFX0VSUigmcG0pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlndWFyZChtdXRleCkoJnN0LT5sb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgYm90aCB0aGUg Z3lybyBhbmQgYWNjZWwgYXJlIG9mZiBhbmQgaWYgc28sIGVuYWJsZSBvbmUKKwkgKiBvZiB0aGVt LiBUaGUgdGVtcCBzZW5zb3IgY2Fubm90IGJlIHJlYWQgaWYgYm90aCB0aGUgZ3lybyBhbmQKKwkg KiBhY2NlbCBzZW5zb3IgYXJlIG9mZi4gUHJlZmVyIHRvIGVuYWJsZSB0aGUgYWNjZWwgb3ZlciB0 aGUgZ3lybworCSAqIGFzIHRoZSBkYXRhc2hlZXQgc2F5cyB0aGUgZ3lybyB1c2VzIDV4IG1vcmUg cG93ZXIgYW5kIGl0IGhhcworCSAqIGEgbWluaW11bSBydW4gdGltZSBvZiA0NW1zLgorCSAqLwor CXJldCA9IHJlZ21hcF9yZWFkKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfUFdSX01HTVQwLCAm dmFsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYWNjZWxfbW9kZSA9IEZJRUxEX0dF VChJTlZfSUNNNDI2MDdfUFdSX01HTVQwX0FDQ0VMX01PREVfTUFTSywgdmFsKTsKKwlneXJvX21v ZGUgPSBGSUVMRF9HRVQoSU5WX0lDTTQyNjA3X1BXUl9NR01UMF9HWVJPX01PREVfTUFTSywgdmFs KTsKKwlpZiAoIWd5cm9fbW9kZSAmJiAhYWNjZWxfbW9kZSkgeworCQkvKiBlbmFibGUgYWNjZWwg c2Vuc29yICovCisJCWNvbmYubW9kZSA9IElOVl9JQ000MjYwN19TRU5TT1JfTU9ERV9MT1dfTk9J U0U7CisJCXJldCA9IGludl9pY200MjYwN19zZXRfc2Vuc29yX2NvbmYoc3QsICZjb25mLCBJSU9f QUNDRUwpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSByZWdtYXBf YnVsa19yZWFkKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfVEVNUF9EQVRBMSwKKwkJCSAgICAg ICByYXcsIHNpemVvZihyYXcpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJKnRlbXAg PSBnZXRfdW5hbGlnbmVkX2JlMTYocmF3KTsKKwlpZiAoKnRlbXAgPT0gSU5WX0lDTTQyNjA3X0RB VEFfSU5WQUxJRCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGlu dl9pY200MjYwN190ZW1wX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkJ c3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sCisJCQkJaW50ICp2YWwsIGludCAqdmFs MiwgbG9uZyBtYXNrKQoreworCXN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0ID0gaWlvX2Rl dmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOworCXMxNiB0ZW1wOworCWludCByZXQ7CisKKwlz d2l0Y2ggKG1hc2spIHsKKwljYXNlIElJT19DSEFOX0lORk9fUkFXOgorCQlyZXQgPSBpbnZfaWNt NDI2MDdfdGVtcF9yZWFkKHN0LCAmdGVtcCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0Owor CQkqdmFsID0gdGVtcDsKKwkJcmV0dXJuIElJT19WQUxfSU5UOworCS8qCisJICogVMKwQyA9ICh0 ZW1wIC8gMTI4KSArIDI1CisJICogVG3CsEMgPSAxMDAwICogKCh0ZW1wICogMTAwIC8gMTI4MDAp ICsgMjUpCisJICogc2NhbGU6IDEwMDAwMCAvIDEyODAwIH49IDcuODEyNQorCSAqIG9mZnNldDog MzIwMAorCSAqLworCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToKKwkJKnZhbCA9IDc7CisJCSp2 YWwyID0gODEyNTAwMDAwOworCQlyZXR1cm4gSUlPX1ZBTF9JTlRfUExVU19OQU5POworCWNhc2Ug SUlPX0NIQU5fSU5GT19PRkZTRVQ6CisJCSp2YWwgPSAzMjAwOworCQlyZXR1cm4gSUlPX1ZBTF9J TlQ7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfdGVtcC5oIGIvZHJpdmVycy9p aW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfdGVtcC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTg0OTliNGQwYjk0Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfdGVtcC5oCkBAIC0wLDAg KzEsMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICov CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IEludmVuU2Vuc2UsIEluYy4KKyAqLworCisjaWZu ZGVmIElOVl9JQ000MjYwN19URU1QX0hfCisjZGVmaW5lIElOVl9JQ000MjYwN19URU1QX0hfCisK KyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KKworc3RydWN0IGlpb19kZXY7CitzdHJ1Y3QgaWlv X2NoYW5fc3BlYzsKKworI2RlZmluZSBJTlZfSUNNNDI2MDdfVEVNUF9DSEFOKF9pbmRleCkJCQkJ XAorewkJCQkJCQkJXAorCS50eXBlID0gSUlPX1RFTVAsCQkJCQlcCisJLmluZm9fbWFza19zZXBh cmF0ZSA9CQkJCQlcCisJCUJJVChJSU9fQ0hBTl9JTkZPX1JBVykgfAkJCVwKKwkJQklUKElJT19D SEFOX0lORk9fT0ZGU0VUKSB8CQkJXAorCQlCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSksCQkJXAor CS5pbmZvX21hc2tfc2hhcmVkX2J5X2FsbCA9CQkJCVwKKwkJQklUKElJT19DSEFOX0lORk9fU0FN UF9GUkVRKSwJCQlcCisJLmluZm9fbWFza19zaGFyZWRfYnlfYWxsX2F2YWlsYWJsZSA9CQkJXAor CQlCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpLAkJCVwKKwkuc2Nhbl9pbmRleCA9IF9pbmRl eCwJCQkJCVwKKwkuc2Nhbl90eXBlID0gewkJCQkJCVwKKwkJLnNpZ24gPSAncycsCQkJCQlcCisJ CS5yZWFsYml0cyA9IDE2LAkJCQkJXAorCQkuc3RvcmFnZWJpdHMgPSAxNiwJCQkJXAorCQkuZW5k aWFubmVzcyA9IElJT19CRSwJCQkJXAorCX0sCQkJCQkJCVwKK30KKworaW50IGludl9pY200MjYw N190ZW1wX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkgICAgICAgc3Ry dWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sCisJCQkgICAgICAgaW50ICp2YWwsIGludCAq dmFsMiwgbG9uZyBtYXNrKTsKKworI2VuZGlmCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxp c3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f46.google.com (mail-ot1-f46.google.com [209.85.210.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5543A37267E for ; Thu, 16 Jul 2026 18:29:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784226551; cv=none; b=TVWQHLOZjQSaDeGXx41mAfHVndgaglmORuhQjPX5udA+eA/aJa5abKaGQ/vuS6FxFXYzQAbP/E1NCWbHjNLz/+KyTRKYgIHiAber10WqMNjSOh0HNv3aRsyJWCLhcEA7HugvOrNhG9NSdheniqMboKGI8jHJljhhoroHt3EyqWo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784226551; c=relaxed/simple; bh=60QGKCey5R7RKbPdvKzDdEDSIA6Wxcr+O3VHAXD6zoY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WbGU60vNazOwZc3ktid1GYoVWBWFjZ661MYeLaTZ36ljGh4SWFayqli2dz1ciHz741CGWFqClFPvU9lNGqYXYvJkGlwXBOcTTOgUhLvnfZI5DsGJ31oAqqIdOG3V+teAtQ4X9S35iNX0vY0MOt35qJj33O91HQKuY90/+dr0tJk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Z35UVc/h; arc=none smtp.client-ip=209.85.210.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Z35UVc/h" Received: by mail-ot1-f46.google.com with SMTP id 46e09a7af769-7e9ecb1e13cso5287658a34.3 for ; Thu, 16 Jul 2026 11:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784226548; x=1784831348; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=huK+4iSPdfkgl67lIGlfvxQ4rc8RHlrj3WAmWFb8XCw=; b=Z35UVc/hDu8Qe5E3L8Mqgh1sFaoLRhmvVFY1jV4vaWO46+/HZp4wDOjS4g2POcH782 qgvz9DMW2WFhGnvDtyBnfr4ADaxLrgBATZEhgYTufLBMJODVuuP2hX3lDEoonzTZnGYH LN6lPF1RaGzVetzISshzFodrvcNoxJ3T8FQ1AK6KunPlk8EjLKk6XK7wDoTRn1hBCF3A 4jH3Qm5Y9u5GjsFIMzlHhvnz3KIHVVtahkmhHH3oT/Rtx+HhAvX9VhWTgZFvxDG1SLmo Sg6SsFSqXhHVJQN7QvpdvRjwwB7XZHn9wvHBTU9C9egdcXBOYiBdjQo0FsdkyWGg6/VC 5njA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784226548; x=1784831348; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=huK+4iSPdfkgl67lIGlfvxQ4rc8RHlrj3WAmWFb8XCw=; b=s2P4FCYlrGIXN9isBHtZ/k0pV+T2tKPlcmMLAqvReyjIM0VtIEtv9b6wveIGiJDgC7 lgcUzC1XBhBuPUDbuh4qrmoU87qt++eQkscm/Z8iiX8OrJy6whhlzEsOWvaKHkPiEToO fhb+WYqKU+u0XM2wnWt0CPnq5VtRbz3xiNkn039OVHnL85u23ilaOE4SfrjASmEPSKHN wXtmna0LzKHWs4DRnhkfqM9L11nYWnmgO9/BkuLA8ihxmxxU4HUZwV+fI0xAUSdye9Rn WSvV5caCvGN+mDfnW5uZ/bRhxXXKyLlLXoXyimSECaUqxzoEbvACam3JxhpBx0fW8Dnp ibSw== X-Forwarded-Encrypted: i=1; AHgh+RoigkrPaAoc6HJetVLx/63kUqy0gNXzGP26dPhKe1A8htmKPjPGDyMGnlXs+Mi2gFIBDd8hKHEmQb3h@vger.kernel.org X-Gm-Message-State: AOJu0YyPzt7uDdB53eJY32Th01YEnU5WoMRktxoG2gsauznRyhKOyqUx K22GQDPC/SnG0LiSZQLbE/mBz2nNDy2jQn9r/WQ7hwmXHw10kf5lS1Ze X-Gm-Gg: AfdE7ckS4C6JIGFymiO0IYO+gdjSUA0kxbW2ugR23RXiFCWFtrd94J84opEN08Qprtx MXmc/J5YBojwxurC6apwPXgxsodcCX9EuQsqLwL8LD+TWjAJO7/l04679+OxH7UKCSWQI+HYFHn 5mEkNE2CsEsKp9gNt3X6nsIR7Yw17/yN8LMBGiq8lxgyOeXsWuTKL82i91MCeJQXVy8BL/o1rhF 7kNbj4pWGKn3Snn7nO3/nRK03lQTuklYiDujV5of67eMTMqPfirgtOYgRLn13WDte/Iyr0rEFHi 8/CLExQuiuiNCR8tLAsNUAbYCGXHNBW6uSo1HEQjSJ/nwj6T5ViRTOzgNMZ7yJIu8UazpzIYAYa M8JRuQQJ3kAwNuWQdDXt7vJiC9P384dhY3LdOg+p7b9+r+c21TByzAc3mag09sz3Io4rma4hbQ5 xt X-Received: by 2002:a05:6830:4423:b0:7e6:f482:df36 with SMTP id 46e09a7af769-7ec59d4092bmr5510593a34.15.1784226548173; Thu, 16 Jul 2026 11:29:08 -0700 (PDT) Received: from localhost.localdomain ([2600:1700:fb0:1bc0::54]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7ebcb3f6826sm19939993a34.27.2026.07.16.11.29.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 11:29:07 -0700 (PDT) From: Chris Morgan To: linux-iio@vger.kernel.org Cc: andy@kernel.org, nuno.sa@analog.com, dlechner@baylibre.com, jic23@kernel.org, jean-baptiste.maneyrol@tdk.com, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, heiko@sntech.de, conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, andriy.shevchenko@intel.com, Chris Morgan Subject: [PATCH V17 8/9] iio: imu: inv_icm42607: Add Temp Support in icm42607 Date: Thu, 16 Jul 2026 13:26:35 -0500 Message-ID: <20260716182637.24310-9-macroalpha82@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260716182637.24310-1-macroalpha82@gmail.com> References: <20260716182637.24310-1-macroalpha82@gmail.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Chris Morgan Add functions for reading temperature sensor data. Signed-off-by: Chris Morgan --- drivers/iio/imu/inv_icm42607/Makefile | 1 + .../iio/imu/inv_icm42607/inv_icm42607_accel.c | 6 ++ .../iio/imu/inv_icm42607/inv_icm42607_gyro.c | 6 ++ .../iio/imu/inv_icm42607/inv_icm42607_temp.c | 98 +++++++++++++++++++ .../iio/imu/inv_icm42607/inv_icm42607_temp.h | 38 +++++++ 5 files changed, 149 insertions(+) create mode 100644 drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c create mode 100644 drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h diff --git a/drivers/iio/imu/inv_icm42607/Makefile b/drivers/iio/imu/inv_icm42607/Makefile index 8e73385c8f4b..7b907e019601 100644 --- a/drivers/iio/imu/inv_icm42607/Makefile +++ b/drivers/iio/imu/inv_icm42607/Makefile @@ -4,6 +4,7 @@ obj-$(CONFIG_INV_ICM42607) += inv-icm42607.o inv-icm42607-y += inv_icm42607_core.o inv-icm42607-y += inv_icm42607_gyro.o inv-icm42607-y += inv_icm42607_accel.o +inv-icm42607-y += inv_icm42607_temp.o obj-$(CONFIG_INV_ICM42607_I2C) += inv-icm42607-i2c.o inv-icm42607-i2c-y += inv_icm42607_i2c.o diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c b/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c index 7bb67f232d19..9a44a180e5cc 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_accel.c @@ -15,6 +15,7 @@ #include #include "inv_icm42607.h" +#include "inv_icm42607_temp.h" #define INV_ICM42607_ACCEL_CHAN(_modifier, _index, _ext_info) \ { \ @@ -40,6 +41,7 @@ enum inv_icm42607_accel_scan { INV_ICM42607_ACCEL_SCAN_X, INV_ICM42607_ACCEL_SCAN_Y, INV_ICM42607_ACCEL_SCAN_Z, + INV_ICM42607_ACCEL_SCAN_TEMP, }; static const struct iio_chan_spec_ext_info inv_icm42607_accel_ext_infos[] = { @@ -54,6 +56,7 @@ static const struct iio_chan_spec inv_icm42607_accel_channels[] = { inv_icm42607_accel_ext_infos), INV_ICM42607_ACCEL_CHAN(IIO_MOD_Z, INV_ICM42607_ACCEL_SCAN_Z, inv_icm42607_accel_ext_infos), + INV_ICM42607_TEMP_CHAN(INV_ICM42607_ACCEL_SCAN_TEMP), }; static const int inv_icm42607_accel_scale_nano[][2] = { @@ -186,6 +189,9 @@ static int inv_icm42607_accel_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: + if (chan->type == IIO_TEMP) + return inv_icm42607_temp_read_raw(indio_dev, chan, + val, val2, mask); ret = inv_icm42607_read_sensor(indio_dev, chan, &data); 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 923d47d096bd..fa6e65c7ab6b 100644 --- a/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_gyro.c @@ -15,6 +15,7 @@ #include #include "inv_icm42607.h" +#include "inv_icm42607_temp.h" #define INV_ICM42607_GYRO_CHAN(_modifier, _index, _ext_info) \ { \ @@ -40,6 +41,7 @@ enum inv_icm42607_gyro_scan { INV_ICM42607_GYRO_SCAN_X, INV_ICM42607_GYRO_SCAN_Y, INV_ICM42607_GYRO_SCAN_Z, + INV_ICM42607_GYRO_SCAN_TEMP, }; static const struct iio_chan_spec_ext_info inv_icm42607_gyro_ext_infos[] = { @@ -54,6 +56,7 @@ static const struct iio_chan_spec inv_icm42607_gyro_channels[] = { inv_icm42607_gyro_ext_infos), INV_ICM42607_GYRO_CHAN(IIO_MOD_Z, INV_ICM42607_GYRO_SCAN_Z, inv_icm42607_gyro_ext_infos), + INV_ICM42607_TEMP_CHAN(INV_ICM42607_GYRO_SCAN_TEMP), }; static const int inv_icm42607_gyro_scale_nano[][2] = { @@ -183,6 +186,9 @@ static int inv_icm42607_gyro_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: + if (chan->type == IIO_TEMP) + return inv_icm42607_temp_read_raw(indio_dev, chan, + val, val2, mask); ret = inv_icm42607_read_sensor(indio_dev, chan, &data); if (ret) return ret; diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c new file mode 100644 index 000000000000..8681ef2b49e2 --- /dev/null +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.c @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2026 InvenSense, Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "inv_icm42607.h" +#include "inv_icm42607_temp.h" + +static int inv_icm42607_temp_read(struct inv_icm42607_state *st, s16 *temp) +{ + struct inv_icm42607_sensor_conf conf = INV_ICM42607_SENSOR_CONF_INIT; + struct device *dev = regmap_get_device(st->map); + int ret, gyro_mode, accel_mode; + unsigned int val; + u8 raw[2]; + + PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm); + ret = PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + + guard(mutex)(&st->lock); + + /* + * Check if both the gyro and accel are off and if so, enable one + * of them. The temp sensor cannot be read if both the gyro and + * accel sensor are off. Prefer to enable the accel over the gyro + * as the datasheet says the gyro uses 5x more power and it has + * a minimum run time of 45ms. + */ + ret = regmap_read(st->map, INV_ICM42607_REG_PWR_MGMT0, &val); + if (ret) + return ret; + + accel_mode = FIELD_GET(INV_ICM42607_PWR_MGMT0_ACCEL_MODE_MASK, val); + gyro_mode = FIELD_GET(INV_ICM42607_PWR_MGMT0_GYRO_MODE_MASK, val); + if (!gyro_mode && !accel_mode) { + /* enable accel sensor */ + conf.mode = INV_ICM42607_SENSOR_MODE_LOW_NOISE; + ret = inv_icm42607_set_sensor_conf(st, &conf, IIO_ACCEL); + if (ret) + return ret; + } + + ret = regmap_bulk_read(st->map, INV_ICM42607_REG_TEMP_DATA1, + raw, sizeof(raw)); + if (ret) + return ret; + + *temp = get_unaligned_be16(raw); + if (*temp == INV_ICM42607_DATA_INVALID) + return -EINVAL; + + return 0; +} + +int inv_icm42607_temp_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + struct inv_icm42607_state *st = iio_device_get_drvdata(indio_dev); + s16 temp; + int ret; + + switch (mask) { + case IIO_CHAN_INFO_RAW: + ret = inv_icm42607_temp_read(st, &temp); + if (ret) + return ret; + *val = temp; + return IIO_VAL_INT; + /* + * T°C = (temp / 128) + 25 + * Tm°C = 1000 * ((temp * 100 / 12800) + 25) + * scale: 100000 / 12800 ~= 7.8125 + * offset: 3200 + */ + case IIO_CHAN_INFO_SCALE: + *val = 7; + *val2 = 812500000; + return IIO_VAL_INT_PLUS_NANO; + case IIO_CHAN_INFO_OFFSET: + *val = 3200; + return IIO_VAL_INT; + default: + return -EINVAL; + } +} diff --git a/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h new file mode 100644 index 000000000000..18499b4d0b94 --- /dev/null +++ b/drivers/iio/imu/inv_icm42607/inv_icm42607_temp.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2026 InvenSense, Inc. + */ + +#ifndef INV_ICM42607_TEMP_H_ +#define INV_ICM42607_TEMP_H_ + +#include + +struct iio_dev; +struct iio_chan_spec; + +#define INV_ICM42607_TEMP_CHAN(_index) \ +{ \ + .type = IIO_TEMP, \ + .info_mask_separate = \ + BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_OFFSET) | \ + BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_all = \ + BIT(IIO_CHAN_INFO_SAMP_FREQ), \ + .info_mask_shared_by_all_available = \ + BIT(IIO_CHAN_INFO_SAMP_FREQ), \ + .scan_index = _index, \ + .scan_type = { \ + .sign = 's', \ + .realbits = 16, \ + .storagebits = 16, \ + .endianness = IIO_BE, \ + }, \ +} + +int inv_icm42607_temp_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask); + +#endif -- 2.43.0