From nobody Sun Jun 14 04:10:44 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (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 904123B2FFD for ; Sun, 3 May 2026 12:23:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777811033; cv=none; b=LA/mvC8A+DoPm2QwJPIdVfKcN6jWrrkNeKZYEhRhVSEnEBv4arJDnnTgCMbzMvrTx9Z9jtme7ygU9+FrBoe4ZRB9eb4Ez10xZpBVJXG4sFft3htKOHFAj8c8TiCpc1fBQ9PfgwPAp+/dP2R8+vF+GIjAjlLqvm88ccWD/8jt8mI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777811033; c=relaxed/simple; bh=MKnHF5kGPsCR4N7ujUtM10eo1Pl10rQIAl+7znui3Yw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oaMCw5IGx/obOTzYKF2/86xjyrXMt120iegS+vPfNhIl6gYxQzINQ2fvJbmh9GopXDgFj5GiX9UIr9IB5coF7az/qg88rOLXP+DaBL2Q/Bdfs3BoSeLL8oGkNvo39Lcn9DgoY58keZzEXpPF3E89EYWcYbTHq+HnYVmK2aNSSXA= 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=a/I3cZVd; arc=none smtp.client-ip=209.85.216.51 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="a/I3cZVd" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-364c5317d67so3263521a91.2 for ; Sun, 03 May 2026 05:23:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777811032; x=1778415832; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xRIl6J1CxzKB9h9sfgFUzYhFZthyT2nAY7hrklEwHCo=; b=a/I3cZVdqZJBUg3WZXTng4mzBvlUq1X7Lz552/ajhwWg9XZ6skWCUflxpPOXVjir0D SE/PF1sM+APMaE+vkJnuCfck8khBXoBQx/++HJlw5yZFBIBn37aPub7EATAbZ3Olwgxy LUf4+BXa1vTfcPSLBhLkY/5xmQqJhdfz+SPiKW3PQ5S4RI3iUwtBocf/9VNGGC18/344 GT+yB20FUfD9u+/HqYuDMZ3LwX3SU4zFBM/FHmrrpMpyTqj5xiF5xLkXr9lr1pPFZNZK 40/0RFxChuV8hG1hln2/SQtoB3qUhUoouM9q+iZ7FISAxdVrvS6ECSjil606w3i0R6X0 R6uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777811032; x=1778415832; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xRIl6J1CxzKB9h9sfgFUzYhFZthyT2nAY7hrklEwHCo=; b=OAZZTzSfP86d9mCL3zRURnEQJ2vQTYM9d7JmoOb9PMr2p5YmpRaWncVblNSABxPSHz rByK9tSwp+aMadjy8DMXhUYIfp4Eqcbg0DDEZV87tba4yhFd9CAParh+/yrxNz6cZxWk JgHociHps7nVThOo69/TD6x0tOVKk+wciOEz7fEjMtAId0qUQH3zizxpM7mRFBUlLYxW tY79V9PbsOX8ZRNQpo6Au1XbaWDHj8PLdFnjk6Yf8+X4u//ZFFJjgbBb9b2rUO/V0JR0 h9QGJI/iwh2J2jeOt1PdcPFTCVAYzU0qWtyBpDD1y4BrzRZmM44yPdJyrieer37Vno5H KEjA== X-Forwarded-Encrypted: i=1; AFNElJ/ty15O7LuHy2LlaPNoPsNvRXFP0Ou2GZeQ2umRRKwoNJZTnPG7TqTpyxFuRBLGi7MI+E4QsthdSZWK2CU=@vger.kernel.org X-Gm-Message-State: AOJu0YwPi/DwAET9o8NUWklCTnGO488XjdAwxcRYrZUKC5tRXoHDPImA ALW222f5pa6aTOs/OWv7RY0bk9pGxVhVoUiYa4OZZG1RZN81lpN2mseN X-Gm-Gg: AeBDiesH15CKOrHO4rYE5dOQeZGWdPqj21s+JjxVyKPRCk117608g1A+2yLq9dnrTco wJ3gM7ivWD3+6XoOq1EioDj6VO+w0LK1t9ooNZ2DyWuaXVGRmcwN9poOJbvGcHg+Y+ppdmlx8tl qKoS2nj2e3nSpp9WZHdxTdnzub6SQSRUWd9RVospCr4qtZBo1iG+2SoPWJleXANYgjZT58EEy2j XYvo9Z7rHe3jQf7tBs+PibeZEpf9yEuxLWko9BiqAoP6wsQhL6ISZ/nn/zM0iWz5GqinHNj/MB7 /a/T4eJu1M7F7yb5i3+qZB+haSfL4p2kSW3Ajkrf09zOP4SrZPAh2KNpNz/w8nJ+wg8l1Ixnwok ALgyLKulzxF9dphRr3zmq2kOptjpkb6BT44EeVlsPB9OoRqUg82RkUxK066odbhPvBCUiRlDXN+ fwXz8dAhOu31iG7b8RauATZoex9MjloIV/FONj+eDTymQCu038Ts931+HCLlSHfiyRNxZz5qyQS 02Q5p0FT8N6k6R10IPZUFXMsa927y9K2M69rKFpEbUZX0jqt07fAu+IJF0PHUIBMIhMJMTuHVDL XIympBjp6dI= X-Received: by 2002:a17:90b:35cf:b0:35f:b5df:456 with SMTP id 98e67ed59e1d1-3650ce7e5c9mr6377278a91.18.1777811031895; Sun, 03 May 2026 05:23:51 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c8023e6eabesm2098464a12.5.2026.05.03.05.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 05:23:51 -0700 (PDT) From: James Calligeros Date: Sun, 03 May 2026 22:23:23 +1000 Subject: [PATCH v2 1/2] ASoC: tas2764: Deal with bogus initial temperature register value 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: <20260503-tas27xx-hwmon-fixes-v2-1-208e802be4ac@gmail.com> References: <20260503-tas27xx-hwmon-fixes-v2-0-208e802be4ac@gmail.com> In-Reply-To: <20260503-tas27xx-hwmon-fixes-v2-0-208e802be4ac@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= , Sen Wang Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, asahi@lists.linux.dev, James Calligeros X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3388; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=MKnHF5kGPsCR4N7ujUtM10eo1Pl10rQIAl+7znui3Yw=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJnf7Xyvn3p16mylh1j2t59a2y3fGqgtVVeR4oneY2ZVH yAx5eejjoksDGJcDJZiiiwbmoQ8Zhux3ewXqdwLM4eVCWSItEgDAxCwMPDlJuaVGukY6ZlqG+oZ GukY6xgxcHEKwFSf9GP4K3x+TtGrE9nK8YUL+A6HGq1c/PyYwLdK3Yx4/5LDyX0J6YwMm10f68Z +MUu4O02C58i1v7X/xOv3mTBVc24Uub5su8M8dgA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 The TAS2764 datasheet specifies that the chip initialises the temperature register such that the temperature reading is 2.6 *C, ostensibly to prevent tripping the chip's protection circuitry. The chip is not capable of representing 2.6 *C however, and the register is actually initialised to 0. The ADC does not start sampling until the chip is powered up, and the last sampled temperature persists in the register during software shutdown. Therefore, any reading returning 0 is almost certain to be from before the ADC has actually started sampling, meaning that it is invalid. Return -ENODATA early if the temperature has not yet been sampled by the chip, and indicate a fault condition using HWMON_T_FAULT. Fixes: 186dfc85f9a8 ("ASoC: tas2764: expose die temp to hwmon") Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 35 +++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 6aab6d2b7419..55211266927d 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -684,18 +684,33 @@ static int tas2764_read_die_temp(struct tas2764_priv = *tas2764, long *result) * As per datasheet, subtract 93 from raw value to get degrees * Celsius. hwmon wants millidegrees. * - * NOTE: The chip will initialise the TAS2764_TEMP register to - * 2.6 *C to avoid triggering temperature protection. Since the - * ADC is powered down during software shutdown, this value will - * persist until the chip is fully powered up (e.g. the PCM it's - * attached to is opened). The ADC will power down again when - * the chip is put back into software shutdown, with the last - * value sampled persisting in the ADC's register. + * NOTE: The TAS2764 datasheet mentions initialising TAS2764_TEMP + * such that the temperature is 2.6 *C, however the register + * is actually initialised to 0. The ADC is also powered down during + * software shutdown. The last sampled temperature will persist + * in the register while the amp is in this power state. */ + if (reg =3D=3D 0) + return -ENODATA; + *result =3D (reg - 93) * 1000; return 0; } =20 +static int tas2764_hwmon_is_fault(struct tas2764_priv *tas2764, long *resu= lt) +{ + int ret; + long temp; + + ret =3D tas2764_read_die_temp(tas2764, &temp); + if (ret =3D=3D -ENODATA) { + *result =3D true; + return 0; + } + + return ret; +} + static umode_t tas2764_hwmon_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel) @@ -705,6 +720,7 @@ static umode_t tas2764_hwmon_is_visible(const void *dat= a, =20 switch (attr) { case hwmon_temp_input: + case hwmon_temp_fault: return 0444; default: break; @@ -724,6 +740,9 @@ static int tas2764_hwmon_read(struct device *dev, case hwmon_temp_input: ret =3D tas2764_read_die_temp(tas2764, val); break; + case hwmon_temp_fault: + ret =3D tas2764_hwmon_is_fault(tas2764, val); + break; default: ret =3D -EOPNOTSUPP; break; @@ -733,7 +752,7 @@ static int tas2764_hwmon_read(struct device *dev, } =20 static const struct hwmon_channel_info *const tas2764_hwmon_info[] =3D { - HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT), + HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT | HWMON_T_FAULT), NULL }; =20 --=20 2.54.0 From nobody Sun Jun 14 04:10:44 2026 Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (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 A43103B3C0B for ; Sun, 3 May 2026 12:23:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777811039; cv=none; b=bu1e1P8XTwQcbGEthLywXHxncxLmwXi/qBlv1k4rLNQX3VmumfUALd1xsycxcG66ql77NJnblMTUauv7yBHHlW7CTObyXBEnOOZMeqqx2R65jbQT5p3nj7uF6erXMhVAzDTS+Hkb6zfm/Nxes7jstxC4di2wa3WMAxjV+aQYQMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777811039; c=relaxed/simple; bh=0BxDQKg9U+Ox+mI7tseZohlkvmKXx+ARG+YotcC1/OY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YicZfMOjeHx8r1CqHTRXwyG6/Lx3G5RlbY6UsLhVqhP1qk/ODgEuFZ0n1ipSWgYO2tRekeysKiUl+sLYr3rgFTJHEpcsNJL5OofRsx3Ng7KrDPlJOT9T47dNMfmJeVjjyy+Y5YAP6B2XksJrmC8QfH5YxnVV2nUtFv+0j/GUy4o= 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=MK66963c; arc=none smtp.client-ip=209.85.215.180 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="MK66963c" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-c8025500cc7so311536a12.1 for ; Sun, 03 May 2026 05:23:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777811037; x=1778415837; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ARXgZHWlxADKCu4jNBhWPeDkQ/ONx5QPdnTv+mQK58o=; b=MK66963cYv9oVNoBVStbvj6MwoWZbh6DIAjBAZQ7dqjkMe/CighFVnj2jenbJcZ5Mq CmgJqnsrZkAJuP0uanBb2lbDvb8rL5WiBUwnPcDBfP+9Onel3SNMQGvjbCGyiEwkjSJK nPKdlXv/Fwnw5KbKKmqbR5xijAoIX7DbJ7qbjhz4tvGUzXAA6b9HjUhM9c+ejLFN5STV ehsKbHzZ+cbE1FdwO+QCfRPmJ4dbIYQUMR7+c973nC8dzPeVuBQgI34JRp51zzJA2R82 5k/9ySXWmF1BnMS5a9CZj6bPQ4Lg9erOxxiEomX0g1yEfQJu9ILRY2h2NMPQs928tss/ Ci6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777811037; x=1778415837; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ARXgZHWlxADKCu4jNBhWPeDkQ/ONx5QPdnTv+mQK58o=; b=c2cDEGbb9m2uqnSQi8iaAD6ItZq1zeGDeE8iEpuJ1PQv9Kh6g04yRODA5O9tDhxucJ CxHoyuerfhAKkvJefDICqomTIOlML5I+EZAhJyMEbkD9kkWICWZATXRLNz5UAXEAzt0o AUowGZZ53Sk3/MWl+P5RQnB/56EL6g7t4Hb2lUbQaNGtGicTYa2bYHviPLz85l7moowB dQUHM5qvlFbkuhQMFausy5G4RuYCBekyatCftpgGjHyCVaFldd4jExLuQWdq9opCvcp1 3NkiVm0+KThnbrVAgp2e3yipKOfsns+sp0Jo5EH7F/WoBwCXVd+2IiuKx7FcEdrt5Xrd ZR2A== X-Forwarded-Encrypted: i=1; AFNElJ/tRR7QEG0RNkAUYvLe4XKBeJMzeSjkJhAuL/qmrMuofj13WF3DIuRbm5+Ew2mPy/eListBu/KgH7s5SRM=@vger.kernel.org X-Gm-Message-State: AOJu0Yza+k+jzlOH2CUmFVS02nPhwnwmab2XHKvJZFjganyQui0JZwNo 7ZCd/obQMJJYbvWrsz3hKhKIk8qQiRH+DncDEhuiqOnCeG1+yFpM5UvL X-Gm-Gg: AeBDies+rKj2yOsblycXop1bayVJYMdaQnHw7sVxiCCwt1TrWp7Dr3mrMVFRzg5ssj5 i+4Z3E3bxc6jVN92Rjlk7aL9odFowMX7KmCQBFpygToAPWppGg24CJIun1iDHwH+7R2/0qeknlu WvvO8MV6DZMBCxfRtuedgSmqUEuJdBoeC1vFU5YIJG7ByJrqsVL8AE8AqNDYy4Q0J9ru9s06OML HpGcQVNHAbqkq7PWWtXdic9tNsuhSGbMV1P19PhVodm2CXM/1DpfgURDvTtWHKMPk8YwPOAl1+b R9xXblfHch3B03rOPwR2l/d27D2wwUU0vLRdhMUc1zVXD+xh3cdREFb7HCTo0kLE3x4unmLH2Hj QlaVQ4Roiq9KVcB15AOgGdho26d1LRAi7nsB17eVPpfB41NM6xM48EtwT9X7G8ITcn2GO8cbZiV 2/+2qKCH2pqCJynzx6Xwpvzr4nko69CeKLyJBeQlfEQgqRaj10s9SOJP4ovf0h2Ye0D3GL1ZomZ Co6ZhLdnkLYQlfhsHueq1SBBU3+HS9/Bi96ioIalInXo9v/eUE/r5ZcYKWJ3YezDdycxte6JSla SFzyr2aEakA= X-Received: by 2002:a05:6a20:1592:b0:3a2:f2b1:1ac with SMTP id adf61e73a8af0-3a7f1fb6640mr6397695637.44.1777811037064; Sun, 03 May 2026 05:23:57 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c8023e6eabesm2098464a12.5.2026.05.03.05.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 05:23:56 -0700 (PDT) From: James Calligeros Date: Sun, 03 May 2026 22:23:24 +1000 Subject: [PATCH v2 2/2] ASoC: tas2770: Deal with bogus initial temperature value 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: <20260503-tas27xx-hwmon-fixes-v2-2-208e802be4ac@gmail.com> References: <20260503-tas27xx-hwmon-fixes-v2-0-208e802be4ac@gmail.com> In-Reply-To: <20260503-tas27xx-hwmon-fixes-v2-0-208e802be4ac@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= , Sen Wang Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, asahi@lists.linux.dev, James Calligeros X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2271; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=0BxDQKg9U+Ox+mI7tseZohlkvmKXx+ARG+YotcC1/OY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJnf7XybWJ6/zFyWH11c8ktp00q+UwwVs6bY+FntWO/Nu K/8Y+nLjoksDGJcDJZiiiwbmoQ8Zhux3ewXqdwLM4eVCWSItEgDAxCwMPDlJuaVGukY6ZlqG+oZ GukY6xgxcHEKwFRvuc/wh/tFQU+ZZOTfvb+Vvi/hD/0vpn5p9tIqg3/dKYXuEj2LChn+WTxkujB nw7dza6TFn9lMNBV5YvMl9PVqL6anhvymXbtvMwMA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 TAS2770 initialises the temperature readout registers to 0. This value persists until the chip is fully powered up and the ADC starts sampling. The ADC then persists the last sampled temperature during software shutdown. The ADC should therefore never return 0 in normal operating conditions, so return -ENODATA and mark it as a fault condition using HWMON_T_FAULT. Fixes: ff73e2780169 ("ASoC: tas2770: expose die temp to hwmon") Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 50501bcbe916..dbda9f327535 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -633,10 +633,27 @@ static int tas2770_read_die_temp(struct tas2770_priv = *tas2770, long *result) * value read back from its registers will be the last value sampled * before entering software shutdown. */ + if (reading =3D=3D 0) + return -ENODATA; + *result =3D (reading - (93 * 16)) * 1000 / 16; return 0; } =20 +static int tas2770_hwmon_is_fault(struct tas2770_priv *tas2770, long *resu= lt) +{ + int ret; + long temp; + + ret =3D tas2770_read_die_temp(tas2770, &temp); + if (ret =3D=3D -ENODATA) { + *result =3D true; + return 0; + } + + return ret; +} + static umode_t tas2770_hwmon_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel) @@ -646,6 +663,7 @@ static umode_t tas2770_hwmon_is_visible(const void *dat= a, =20 switch (attr) { case hwmon_temp_input: + case hwmon_temp_fault: return 0444; default: break; @@ -665,6 +683,9 @@ static int tas2770_hwmon_read(struct device *dev, case hwmon_temp_input: ret =3D tas2770_read_die_temp(tas2770, val); break; + case hwmon_temp_fault: + ret =3D tas2770_hwmon_is_fault(tas2770, val); + break; default: ret =3D -EOPNOTSUPP; break; @@ -674,7 +695,7 @@ static int tas2770_hwmon_read(struct device *dev, } =20 static const struct hwmon_channel_info *const tas2770_hwmon_info[] =3D { - HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT), + HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT | HWMON_T_FAULT), NULL }; =20 --=20 2.54.0