From nobody Fri Jun 19 09:10:46 2026 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (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 964CA1A0BE0 for ; Sat, 25 Apr 2026 00:44:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077872; cv=none; b=NuqrxdfrWjsdPkka477bUdjIYjLqjPpc5yZx18fGCuwj8DJonrODbca/2nFVK26miE9o5QiKYUb97W3PrdLxT/DIYcw+zTFKG00Eg76rH29rEWr00mZRLN8Mr9eyR94YViRTnbji7KocT0Dal0yupAUE+ag9KIGkEC5EzjdCeUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077872; c=relaxed/simple; bh=vbRWR4+e3gI1T28wrrTlg16+8udVjYCSiQQA8vBr/y0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m2v7XIYLV1nacvhE7G3ldRYlEGn3kZ55U9sn+gMdeg89ruUK2aUy0ylJ7ZQYnA+8JcTPVvoDO4n9XOxdk4BeSI2RpBwjPzfbSKhkKYU3ZqGf7xgkMkLVkZ6t5Ly9uwkzPuWEFawisRalSmYL53O/reNe76dObM1vj4BNuE64Rrg= 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=ExglKHg4; arc=none smtp.client-ip=209.85.210.169 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="ExglKHg4" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-82f943870baso3440633b3a.1 for ; Fri, 24 Apr 2026 17:44:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777077871; x=1777682671; 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=xm2BMd5f70+IFDw9oIxnL0UFKMFjyAQAWO1QVmfPcuU=; b=ExglKHg4Pq71wWMzV9LCjf2dYdBiOGNQQFXBbrmEDTgbtGMNPkco/ikC1czmTgDRoa k194QH08KFnfS5VmH4F4uo8JDupi0VZa+OoS9M3jJhGddfdEqpEyodYjN5ymFF9x4vR/ fgYROv44XMzfzJax1j250L7vOt2WUShlbDuS6Mfp83PKBnkhFijENxDxFDjRENQm/n0h y04oKCar3bULWClYowzlA+8JCCtlKrftniAU519qMKJxydxnnOEecscl0hy6bov1b+7Y LB8ZXNd0hnhWPMBZc58lgVS90ZPSsVTWx/t8j9ciMeFO8brXItav7LhTnoi9iTDaBKZn Dk4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777077871; x=1777682671; 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=xm2BMd5f70+IFDw9oIxnL0UFKMFjyAQAWO1QVmfPcuU=; b=ZN01K6ByvHx1ww5XMhoxrrx56QCMUd3KWDReiM+ffYyxWUUe87HNQTC6ij8mfn1cPR wBMt6yP7r7/3qJ8mB1p0PtfaVanbXf/zFIjUmOk21K0Yfij6EyVRhxCWzb5DkEWemIgx cO0RU6kJTklp0ba+O050zN/1lm3HrA6ak1B/ICsZqQDwtj1ue2j9EDfDEXQIKRl428CE U/3FOv+8200ByNN1TJ7lOPmy6PsLs9CTZqSTfANaikHHjOYSeWay2ZAQQAW9qLPpwUnn +qP+qb6dIbz1HXnMDBM+DePWb4YVyo5ddM9hplaFfNQ0oKYx/8hCz/JimT173t+JypVh 3krQ== X-Forwarded-Encrypted: i=1; AFNElJ+oPKlDufQvvMn0vGsXK6fiEx21EEdChoYcajgajREay5QtRcQam5ICHYDorspnoMzQ/sHv1mQ37USLmnk=@vger.kernel.org X-Gm-Message-State: AOJu0YyjC5Kiwkx82ZRNUc1cjj2HwUm3p4oyomPVJ48JNVir+wZKojVf o80LsREZkIDboOcJ/pi0YQ33YDtvo8swtwm5M9wwNsjaXzv+wRbTwIeo X-Gm-Gg: AeBDiesdC1zaJxKfbR3N2ZLc9Qk9vyb+H4JSWq0ORKmHJgwwTSzeoNObBeiViGM5jhR Ek1n09bx+1iBSwe4Dqap66tTvsZUamUvKyJCINqw92UyANLvSYMPd/Doojlyf8j+YfJzgkvNDbN ZzKPN0KasM2bFI2vlwsCF0WWh4OroPEpT7GSUn2wGqoIjErucveWAlvo+uqPwyexrnI/JODJfG6 7T4cZ0ZKDh/Ov9hZ9f63jcESjzOi9YInFPMJxe/1ZeNREHfG/3NFfeFnJIje8D/gzGnEogbulgJ FyZ0nA4u2CHgfRPYai+kIDomcMIxx2aT4UOokDAASx2RzHQcfK8NX2Klz4fS8JQxQ9SFj/mvODB ro9dDd/haG553dpI301as7XPqdyxTvuMEBUxnaPW3IgIDtsisyrkwtk5iszBbFeHIu1XqXOPunY afSHrE+BMrScnUQ+k1dGbYY5q803qzPzyQY5XPIkEg7PYg7cXLvupoMr6y6H4xsJter8NUaz0RK TzAzhp+dpjwbjMPm1dpuioMJlh2I8kewz5oOqrJVnQwJnFsZxu/MG10elygPIP3FtucCOC1RrQK Ajn+gYZn6Q== X-Received: by 2002:a05:6a00:2ea5:b0:82f:1973:4b96 with SMTP id d2e1a72fcca58-82f8c91bc71mr39302406b3a.26.1777077870896; Fri, 24 Apr 2026 17:44:30 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec0566dsm24948385b3a.57.2026.04.24.17.44.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 17:44:30 -0700 (PDT) From: James Calligeros Date: Sat, 25 Apr 2026 10:44:03 +1000 Subject: [PATCH 1/4] ASoC: tas2764: Mark die temp register as volatile 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: <20260425-tas27xx-hwmon-fixes-v1-1-83c13b8e8f54@gmail.com> References: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> In-Reply-To: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= 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=860; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=vbRWR4+e3gI1T28wrrTlg16+8udVjYCSiQQA8vBr/y0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJlv+FIO8OgtsTpy6fl1eTM17fYVx6732x49qbnbds6Ns qfr/2X/6ZjIwiDGxWAppsiyoUnIY7YR281+kcq9MHNYmUCGSIs0MAABCwNfbmJeqZGOkZ6ptqGe oZGOsY4RAxenAEy1/QeGfya9zcf4bhUnWwR9eVKyctObv//izaf1et6xErC9x+fhKMvwv7qyXiz Jr3/HBtUJoh9WJBczTwnbcXV5toDw1xeaVS7xDAA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Reading the temperature register always returns the first value read from the chip due to regcache. Mark TAS2764_TEMP as volatile to prevent returning stale, cached values when reading the die temp. Fixes: 186dfc85f9a8 ("ASoC: tas2764: expose die temp to hwmon") Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 423b7073b302..6aab6d2b7419 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -904,6 +904,7 @@ static bool tas2764_volatile_register(struct device *de= v, unsigned int reg) { switch (reg) { case TAS2764_SW_RST: + case TAS2764_TEMP: case TAS2764_INT_LTCH0 ... TAS2764_INT_LTCH4: case TAS2764_INT_CLK_CFG: return true; --=20 2.54.0 From nobody Fri Jun 19 09:10:46 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (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 CA05D136358 for ; Sat, 25 Apr 2026 00:44:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077878; cv=none; b=k8FutjW4UiYtvHWO5zltyCgVTw/5R2/7sGWOyR9Ptw7+mFcWstmCpyWxoANAlmxOMm6tGMAuupYoSq/x4wMfv5kskXRrtY5muAqx3cvebvlKyDLbcY6NYIntYcy7bxYlHl8S5oibGbmSIOkEMFi1wN+7CZEmmk4uMr95GYeS5eA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077878; c=relaxed/simple; bh=e4tOpu0LbNNGF9iKe0Fx6Ayli0jihvKbR4O8mx1wFnM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Fp/tmAH7fCPooDrsTGhPu9pMKTjLXNfn9vWopYaE90LpjS7QZFdkUdEhnlgxptEbt1+JnPsHRW0M1s3B7xmHlDmRzUEseSTJN1L/HOXfh3Inp/3q7wGIZ96w0Ojw6r9PC9nmlQJfnQY6ieNOysDIpAt+zjtC68dSY2ECkJHpRvE= 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=Al/HEIKM; arc=none smtp.client-ip=209.85.210.170 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="Al/HEIKM" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-83178c0f29cso1569978b3a.0 for ; Fri, 24 Apr 2026 17:44:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777077876; x=1777682676; 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=OeLK2D28kWbvQeOXcDdKQJ3UJRWDE+NdXZ6b+JbOcrQ=; b=Al/HEIKMbMgdXyAMOGOftAkRgjVISUFty8BQxclA68P8HewNJiIcdE6j+guLY0LGsM LMYEAcLQlMRjzj2abkKl6FPPbFtPKOJ1Z6Ueghn1ILCsXOw3GJcfaOJmPdaI7XrDwJ38 Lj7ILJc7MCjFnrf4uq4QrrpUzgPxDkuA1wjKjLc+4F7eKXDFihn1GPIHQ4ylbm+8aljU j65RbjFcM+sfpIdYPwK4SXCI53SlJQdCZvRD2K5x/3JvAwQv7rAoeIYGfcj3erahao61 yKH7qcZYIb29VT20wZUmu6BDfEkgGUUF/mekj08Mr+zhSm0Q4Jzi5TuJ6AaHrFHrLHs+ mNiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777077876; x=1777682676; 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=OeLK2D28kWbvQeOXcDdKQJ3UJRWDE+NdXZ6b+JbOcrQ=; b=DqRXjSpYS8NMgpAVkUtCoODUs3iiJsN+m9/bXMR82wf3NuM4OgpNqiPQTGyx8bf/wd I+4kkEaEC3VrXP1phYZ63f1NOYGLfBVc2hnvZSq4vJKmsWdwqkYJZzvLccAhrMn3t7Ut D8kJCV27WShOvRE8URRnoSVUyj72HbtnFVQXbPpFchyiMFp87EekVHBhJoYZQO/EJRSu OwaEr9xsKDIkZFqDrWWic5rdLHRXjPZXc9lpb6xcR24b6gPz2dvJPb1PZXVXmhYnqt3F 3D7iSipGTJ6PSLnWbfqXv2C9GJkH4kxwCOPGeS6AIzYFL/DW3a+enZuMI9MDTAz0f3JJ aLPQ== X-Forwarded-Encrypted: i=1; AFNElJ8DerP2YGGKRXszUdcWDt/NfXsCSzJmoCo+RWU40oPxvVhEmFDXeigL4vhYYo20kZS2F8u6DdE/gGxWHt4=@vger.kernel.org X-Gm-Message-State: AOJu0YxGre7R8G/kxerJvc6qQXRDm2fsFczNY9M/lIsAAOTx31ft9lql akAVbR7qW4fLencvgLu/uXc6KCoc/y+lFQdQ4rzg3BCOUjIDIP0L4tIq X-Gm-Gg: AeBDietxqHpQWydJGvZ23G/hzSragcT9mM5UlOXiQShjItuXRVTh+1a8cq+HPjgXics rD6iFDqF1bh+nbkzzzgPJCmByaZn2ZBSBbeMlfu/VjAPgJgxl9c2OY2SRloDpwq8aM/3NiGCKcO /NkPzCJ/Prin/qcUqdjd0cWKTBhjrpF5eLV+1yyAIJIiBrOlcs/7277k3T5X+6PYH64Lfa1qosK aUwx6txTzlA3DGQ2tvrNgdK+KUUTGkG9ASEomezxQvuD0ND2gNuaieB4uDBIfc4oPMawr4oye5f E4rAFWKC5S7F10L9Z70QRXkCxvUYwwkX2kb5CugAeqf8s4HcHMALxJSKVFaHcvSJkRu/PEz2BpY Flq7m2oyT0PDe5VvlL7mUixr6/Gsjx/KEFaHoT05eKJ4z+nTfBELWVTO7BhwIZZxirOGbroAKgg NS7VZ3tcWMADsgbRBjUS2Npg7qcbxxCShRAGffQBvU2BRl3vwwLzsUJQvb1SZh90XhzN4iKtybd sPc9OegpKYkGUE5TOTA7l/x/lbQwq9rDeEebADCJ410kRwUSRx0GuwgkeAZaAktCKqC97Zo/vvZ oCsQFk8EgQ== X-Received: by 2002:a05:6a00:2d19:b0:82f:425b:4c27 with SMTP id d2e1a72fcca58-82f8c8250a2mr37208949b3a.14.1777077876149; Fri, 24 Apr 2026 17:44:36 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec0566dsm24948385b3a.57.2026.04.24.17.44.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 17:44:35 -0700 (PDT) From: James Calligeros Date: Sat, 25 Apr 2026 10:44:04 +1000 Subject: [PATCH 2/4] 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: <20260425-tas27xx-hwmon-fixes-v1-2-83c13b8e8f54@gmail.com> References: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> In-Reply-To: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= 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=3008; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=e4tOpu0LbNNGF9iKe0Fx6Ayli0jihvKbR4O8mx1wFnM=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJlv+FKqNbfcPK/2YM5fxbj6rjeBjbomUkcUhFKE1Dn2+ hksf+PcMZGFQYyLwVJMkWVDk5DHbCO2m/0ilXth5rAygQyRFmlgAAIWBr7cxLxSIx0jPVNtQz1D Ix1jHSMGLk4BmOoXzxkZDh/usk3RZH/00ejuixtLAiMslK3v75M/fcRx6rylKha3DjL8r/WPe/t v3fXqU4UCjq83CCkmaD2s4c24fv+UXPb0eKEeLgA= 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 | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 6aab6d2b7419..df21d98ee274 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -684,14 +684,15 @@ 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; } @@ -705,6 +706,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 +726,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: + *val =3D !!tas2764_read_die_temp(tas2764, val); + return 0; default: ret =3D -EOPNOTSUPP; break; @@ -733,7 +738,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 Fri Jun 19 09:10:46 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (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 1FA4A1B6D08 for ; Sat, 25 Apr 2026 00:44:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077883; cv=none; b=ZgV69uVmlGXWacnWS+xeHns3bg0T1N6/OTrd8qYoDUKW+h2G6nazN/UK3REYijQXq4cAucGVYb0bmZTXjzSDEOEkDEv/5DkUK+SGdVC75Dyky9988bNAamNHnEIo99XurTyieieBZCMv6c05EjzYHdb/r8uKlWrqTqH+XUIPsDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077883; c=relaxed/simple; bh=GZIFJWy+12t4tHAc+/EGv6IOtnm4zthnhcUZSfsEkEU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p4z3fCsUmnpRrLBC1XhYgN8P+RHzPDooIJZMY8Uq3cGZwYEriBGtlFvY+lnQI0XYHkWvNv63/ht8/2z9FqHl1qUMIHo1SayMbCqBiIz9On00YM3tfJAhVRUiw1xbRnOEoLF/xP6RZjHI0GeyIONtzf9ij62ytGE9L0mjShUWbIs= 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=K+0+Wry9; arc=none smtp.client-ip=209.85.210.175 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="K+0+Wry9" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-82f1bfc9b8fso3873115b3a.1 for ; Fri, 24 Apr 2026 17:44:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777077881; x=1777682681; 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=LhnWMqX0OboRHjbC1C9jxSbtj2tKGC5mQL6hqh/ROpo=; b=K+0+Wry9lixAGYIVuVCAtQLCIBBN3S1WlebE55a3iegNftuog+8Vcp8A7LUjqBOG1U yb85JZJY/Mx08O0cttgPcbpH1LeU/FNGrVKx3Qw0Ueeqda0NWRJGIS8DA4qZWYFoW5yG 3PBALXwtxo769VPaw1he1dWXCZWsxYdxxkfLSQOw3hAlPzWf6jH9KoB5KVqEPZycVi+2 zJN9JhWeSfLacRqAvYZPjPu+KG2eGizdSFRcqclb+c7wsfnTGeNJP/G+I15+pGgIIuM0 zokLVco9jPef3HSLX/z9guwxTffvIadZgQFZVrsqAPm2GUYqLMK3tIf+1oEw0QNibmwE y3uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777077881; x=1777682681; 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=LhnWMqX0OboRHjbC1C9jxSbtj2tKGC5mQL6hqh/ROpo=; b=MkHED3/cTh4XZayJqNtKkEiiXUM6Nr2qXgrM70qrMQjrqj8sOpdb6wemMpFeVcGsaa G5YUdj9FWr7d0yUgtS2fAUc8wtMsej7iROOBXBsFsJ4bR2OVlsNzUUZR1EWUIrJYv9Bl KUsjtQ6GQg8D3FIxfy0Np+VFBu2C0VgruAOcQW+VtfjpwUFOSquq3rvmEanS7CdWjRsY fQUVAi4laYhN3tlT7a4AgAUOQg7BBTJmEY/T1a/rK0poHxV5+2xh86VH6Q0U7yc0ZzD2 bxHmKKFw8ULJMRzM4eK2b7r8TUxK+dKbrpEaOlx0RMaB8pDrEtzmFj6wRu4HtxqHWGPg ZUuQ== X-Forwarded-Encrypted: i=1; AFNElJ/56mtq/qQ79ZM0T8LreVeJYj1oSmb/Lc+1td3kamcueZl7Aa6vVab7b1pIyXL7Q1/Ahj/aiX8reywj7xM=@vger.kernel.org X-Gm-Message-State: AOJu0YzZsYT2JGBQMZoitCo6hVkYekG6kCdgFLrwjC6E/GQMv9IpGGoy 0HxBeLBfw78gYvPLS2HSQg1N0QxL4sNyWKy9xbYlPRrtcQ72bXy2y8xt X-Gm-Gg: AeBDiesgv7gTb+purHBybneYb8ydQTfLbvxff/RldYyv63nndyhSLK4zmuel/UrmjP+ sBjuSgvsaO1o3TTyyp53eVB8eScbRucq3+pOr3G45edS4GcVkmwu2ABIMjB9vtPHv4/EEidTVBo noz770djpgfyF1837umBbMGQZ8zO6XxQf2aeAknPp2eqVmk3TBo9XoFxIo3zPPGtMKq0UxM+Qcn rvKnjPhFVBLtYxG96WpQYdVt7RZmp0WwHwJIivwb4FwFLCiKouyFogbvVyvUvq318NRqrxi5mOy it5N6c/Aot/mGYlrHlrNQPj6TcQxdNBawAicXASVpHagVb4BHTBci/0AkLs6TxSW3uVRsyn5dRr qlD0ftizUA/0J3HcsIVRIEBxLX3tt/UuzbC5qCzaM0fApFvzIMUdmZsLIC9fgHDYpDthaa8tH4v 0w1It0ZPKQlH8Vj7IoPd7SzIEygmcqhVQma6XwWEoIVbz2HYdRG5iDsEynhe6vELD+8W2qba7sH /YYRdIdM48sR+GSN6/Sc2Iazdvjhqfa/hYQ4k4bTyeXnPZl3gL+UlBy0p2UiUySYCMCjWsQX4QV tnq3qNQRcw== X-Received: by 2002:a05:6a00:1749:b0:82c:d7c4:4c6b with SMTP id d2e1a72fcca58-82f8c81dd75mr34959022b3a.11.1777077881389; Fri, 24 Apr 2026 17:44:41 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec0566dsm24948385b3a.57.2026.04.24.17.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 17:44:41 -0700 (PDT) From: James Calligeros Date: Sat, 25 Apr 2026 10:44:05 +1000 Subject: [PATCH 3/4] ASoC: tas2770: Fix order of operations for temperature calculation 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: <20260425-tas27xx-hwmon-fixes-v1-3-83c13b8e8f54@gmail.com> References: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> In-Reply-To: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= 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=1698; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=GZIFJWy+12t4tHAc+/EGv6IOtnm4zthnhcUZSfsEkEU=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJlv+FIOWK64Xa8ne6mbjW/P/okXW126NVIK/FU+Gbst1 JAWE/vXMZGFQYyLwVJMkWVDk5DHbCO2m/0ilXth5rAygQyRFmlgAAIWBr7cxLxSIx0jPVNtQz1D Ix1jHSMGLk4BmGrnzwy/2Y84r6772Boh/KBWcDPv24S77gvutnhMamc+yBL24aPIKkaGHvPl5jf nzWo5fNL5fVKC1L+qz3oOtZs6BNSOfC8K/H2JBwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 The order of operations to derive the temperature from the temp register values was wrong, since 1000 / 16 is not an integer. This resulted in the calculated temperature value deviating from the value represented by the registers slightly, which was most obvious when the registers were zeroed (-92.265 *C vs the expected -93.000 *C). Scale the reading before dividing the whole thing by 16 to correct this. Fixes: ff73e2780169 ("ASoC: tas2770: expose die temp to hwmon") Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index d4d7d056141b..50501bcbe916 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -624,7 +624,7 @@ static int tas2770_read_die_temp(struct tas2770_priv *t= as2770, long *result) /* * As per datasheet: divide register by 16 and subtract 93 to get * degrees Celsius. hwmon requires millidegrees. Let's avoid rounding - * errors by subtracting 93 * 16 then multiplying by 1000 / 16. + * errors by subtracting 93 * 16 and scaling before dividing. * * NOTE: The ADC registers are initialised to 0 on reset. This means * that the temperature will read -93 *C until the chip is brought out @@ -633,7 +633,7 @@ static int tas2770_read_die_temp(struct tas2770_priv *t= as2770, long *result) * value read back from its registers will be the last value sampled * before entering software shutdown. */ - *result =3D (reading - (93 * 16)) * (1000 / 16); + *result =3D (reading - (93 * 16)) * 1000 / 16; return 0; } =20 --=20 2.54.0 From nobody Fri Jun 19 09:10:46 2026 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (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 4F0F81D5CC6 for ; Sat, 25 Apr 2026 00:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077888; cv=none; b=koNMWdj0dB6yFYbc3fgOxSmY/uf3PgaBV/hsAG8lZvdo8Ms1rjqCNd9fQfQ+wBwV6gbIXO+Hld0FG3wzIYgCC3X6E7+o7TKaVvxFBUnwR5RCNF+R2WyjWhV2kM4L+xZE4hG+B5iFf41MDgjmUriLSXmsz9KbfqDP/xenaomgI2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777077888; c=relaxed/simple; bh=F5yeh6pdK6Hs7beqeyQj/TVTdS2YepfCTkinI6k7d80=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aLjbN8zJqlxJE8szvE/627zJUrxVwsZ7wpnhJmPaR7CCj/YBRSHfo6qQ4gMTBC4zBBGEgN0ZK0wqc+0Rp3HBYtZKo9A2MtnkgezqgxWBEvdFiMjDwR7c91Yg3TW0sc2RTBaslzscKRYqJqMgf4FtM+g785W3ZfUxUiYmS/PpYo4= 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=sQBxA4DS; arc=none smtp.client-ip=209.85.215.181 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="sQBxA4DS" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-c70e27e2b74so3199821a12.0 for ; Fri, 24 Apr 2026 17:44:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777077887; x=1777682687; 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=hX2/JA8GK9hYTduQnxjY+1BP+OMuld9S7rTvEbat1fM=; b=sQBxA4DSK/xdkYN6mRL1Go2uoaEaLhdiw9dUHlTct8ESSOidydZWmVfi+PfgedfRwY wDrRuQMrnlscu0jrF7hnztaia613LCpxKkq9Lo/C+dih2jX66tBDIHZad2RX01VLlHcW EEDGQyplrh6108QFkY+U0Xsj+EcnX1RbXUUUYuBkROI++YqYr3U40n5XLLRvg+3wGZIa vD2qFPH5MrBQTeGaRm6tYVE7op4NXXpgdGD6gQTPS/CTo5098p37C9rnKOOXzfb7+sb2 B50pUg5ryD8i9Yn8gd+VnKVsOJXRNU4NnQICnv33mUSx/s1RiI2oZxFknhghSCr5WgSS B6eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777077887; x=1777682687; 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=hX2/JA8GK9hYTduQnxjY+1BP+OMuld9S7rTvEbat1fM=; b=c6S9awj83W62XRbwChsagPShUC1t3JAhRvqfVNapKmdJ3LSDn1GprLw/nYKnGtdfVV ZnRjVvsJY0xvDpzsGLfuCxO80F9wqMBiN89p3tcwvcDykq4S4LheKdKbHozETZF0r5yG WJ1m1GJIIfSAmYeG7TRNwUqxHFbtYKOkEIn9y5PBh8HZCbI25G3BfrHyNVIb3/wHB998 wLdqIANni5X5DKcXLWLQKx2zte/3YzbVkVurd0tkaWOMW8fzuRsx2SEugg+KnzY/T48H NcBnQCCfrJBxnuo1vwe75WC1yUynKhcl3mo4tcjKjb7Gu40uwIbmzajgyBBWCE31zn7Z Gg9g== X-Forwarded-Encrypted: i=1; AFNElJ/xG4Dr1eLY1AnfFLAnBsW8k5+mI7Zxm7P2au/6BmkTfgSLvj2QBmUuRjz5vQX7lbooAS5SP0r+9j30mjU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5aek5Q5SwT9SJYGOi58Eool8nFhRcWnLwlywE9RfUxu9O1inc AQpyklGPEVe32qhYJFmyg871J25qKdtLlJgo3a9wnstdDfYGecp7z36K X-Gm-Gg: AeBDietjfVKixOYa0bsKS1QJ6gIfkf6F+vr5x4oc42rPvwvOCK0j+4DefmmcK4d/pUq CSqdmV622B0yy1tTpjENdRbQjNQpYhbzgGCL22S0vGV7in8zV1UMKmqhevzR/TESo6PvFOj89Qz jArTJTq7hmS8wbwzHBJy9u+8bvoV0GQkbcVvkEyheWdmyFu4EFbbVavc+SDZlVpxq61+0UctRbw 6bq8WZ8y13PodMsQVJY76e0rBOYM7nLfMcRAA5I0O3oz+6YmGBBnsAhf6Fo+LFRdNOqkoGrsLV5 B+Umc6gx4YoJmVtjdBQbJ5g0c0BGdMckhMCHyh6gyI3A8MpTHpwgTpZ8+fkk/3KFjRafrgsRGkL C/uMnSiRjIUvz9UW5/heX7KcCBYoZzhrYBs4/RjStqWH+/VGPljsEjbS+mBYa+9Go3fiaz6S/RB Z3HBtVzHzYHRp2escXvMcQcFzIgw1PhinuMXZbIrGYlRthQof+r2gqR9WK+ebsunX508mjQ2wQD bl/mKv0EQI9a5psaLPBJxAboUgM+WGaVH2NjPAliJxw68q9AEfcLDAEoY9hCjRXPCyWftqS86+b pMw1ln6YcQ== X-Received: by 2002:a05:6a21:3396:b0:3a3:21db:8ee8 with SMTP id adf61e73a8af0-3a321dbc8ccmr11418866637.1.1777077886621; Fri, 24 Apr 2026 17:44:46 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec0566dsm24948385b3a.57.2026.04.24.17.44.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 17:44:46 -0700 (PDT) From: James Calligeros Date: Sat, 25 Apr 2026 10:44:06 +1000 Subject: [PATCH 4/4] 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: <20260425-tas27xx-hwmon-fixes-v1-4-83c13b8e8f54@gmail.com> References: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> In-Reply-To: <20260425-tas27xx-hwmon-fixes-v1-0-83c13b8e8f54@gmail.com> To: Shenghao Ding , Kevin Lu , Baojun Xu , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Martin_Povi=C5=A1er?= 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=1877; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=F5yeh6pdK6Hs7beqeyQj/TVTdS2YepfCTkinI6k7d80=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJlv+FIixd5laq+Nc0jrstovZVGz3CkyJ7HG3KH5vorRO U37R9wdE1kYxLgYLMUUWTY0CXnMNmK72S9SuRdmDisTyBBpkQYGIGBh4MtNzCs10jHSM9U21DM0 0jHWMWLg4hSAqS7YyfA/88y+/OthEjcP5vC9NJAM95Iwz1/41cxrK6N2MOOipOg9jAy3FXhFk3i EzT9nz7/FX6S1zGDZxiCFvXVGbBH+6zknb2EFAA== 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 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 50501bcbe916..21e3daadefab 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -633,6 +633,9 @@ static int tas2770_read_die_temp(struct tas2770_priv *t= as2770, 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; } @@ -646,6 +649,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 +669,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: + *val =3D !!tas2770_read_die_temp(tas2770, val); + return 0; default: ret =3D -EOPNOTSUPP; break; @@ -674,7 +681,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