From nobody Fri Oct 2 04:30:17 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 5553047013A for ; Wed, 5 Aug 2026 13:15:42 +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=1785935743; cv=none; b=Vp/Cx0nabJJgXF4eG+pCiusrS7S9+04K1Al+FMiDaHqN3Hx0CeQfGek7OcofMvGYLhUCy4OIqaqxJgd4UUBGqHLPt+e7TuIUvyoXFlbCUq/3jb9JafItu1xQdC8zkjZPiJcofGy0HFR6x2aNx+KJ+h23vyqlXDfKYysIpFvSsVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935743; c=relaxed/simple; bh=fbUKh1todKkP1FT2/cHCaDm4OfpjsPhk1f8mXru53ro=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OBKxtzd2RhCht+mmAj+oM71/VA0Z+npMGlV7moQdVnyfRynL6GaOHAjbl/Oh1iu0QleqL326M3IkrT7kUtJzIRu3vB8l8oNJeanHBHyw6+77Z924jI+iOD5QpTcqJwI2LrhhD4TLZ3cM7gMHHKmxOZ40Ba2r1Is+F6+UaP3FkQQ= 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=DJ2V7wXN; 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="DJ2V7wXN" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-cb5a6aa8760so522812a12.1 for ; Wed, 05 Aug 2026 06:15:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785935742; x=1786540542; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+l3n4KRaWC56rAxkOg4FR4j0cY6wBbchP2+x6Oxm4pc=; b=DJ2V7wXNib2XxPegFARJUtXRPsjIc1bSBiBWVxASJk0fsjCX+uQeEq4Oxlh08jYFVo rUSJQmymp9tEQiYsTeCDAoEf9f3rvm4IzNxJpid24Pn7IhbOAwLw7AAofgJkxiBGeMxD jwPcny2rsUL+GtiLrtgCAYd55zQfL3/uz7dJYXL0MrKLK0+OsyCX9/anHAx16hj58Q8i kCAfqKGPKVXBGOENz6gHcA7ZWxfzMRDJgn0OSt+XSDFBU3tOwvfMxALim5HRuxb6mqSJ swVPqZEOPVih/9JNvU2zfqRkCMFh6ykn3FGw3icjKTyCwzPrd2Cvux7114GteMyNbT3J 0jpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785935742; x=1786540542; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+l3n4KRaWC56rAxkOg4FR4j0cY6wBbchP2+x6Oxm4pc=; b=TZWazpkhIMmZHWfSrc1tViK9LCd+bPyN+QK8GLY8RPKaAJyrAv4wH3xMIJ6AFCHhTw hg/Ym0eINGyLcdhDyo6JPJ5zkforqMzTB40JzaCqWYTE0mPtwXzwU3aFkFALKwaNS69k 07MnBk8dq55wE7grLyImJDZDr2hg7aMRHNyM4Tr30nlBcSQLq3BhqeMDNHxHIX3DTNxs AbBvWpGm+d7PxxzfriO+LrmTnJZQKdL5mS3M+HTjkipDR5wny3Tu7JuBQBszQhUt936L Cb2kUBvyEP+Tedr5JNw289e0sXpC9k8xuTWDwgMNI4IxjUMcuOaIc2XJTc1GPXFFkB4D rBhA== X-Forwarded-Encrypted: i=1; AHgh+RrzlZfWxCnJdBdtZ3P3AHYDauucPvIVvARzdrOye13ZDdFmF5wvi/vNtNmIai/QAgn87/9dQKCojUrdXoc=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+YNsrIzXGZlfIIgiIh6N7ZNFzaVxUpQnmJg7Ih3jj3eEgFoFg ZU5puXaAlT/S2zRaGBk3lWIxHEuyfX1IefCMSywIin2Ci+egXAl1HuOB X-Gm-Gg: AR+sD124J+6Rqgn15YvY2kRjZ87XBwI14J1tRNHWBDbvE9COY+rfY73fL1mfhSTXwrL OmSTLrKi1OAWEIjtSAzd22OJw9NTq3TQmtqbwGk2ZK2GuOcT8H9fWduB4oOUW033nJJ5u0nj+pJ 7gp4bs18elM2XIdZbxgVzpeTbwZ8TgVLuPGeL/MaCYrTCeMHrP8eTi+ISHvG08f92uePfZHdza3 t+1/fXHAT7ufypT+ksqXn3qJncA7uLIlJthNWHJDB34gqJZ8xAMvCRP6U10q3cRqSewL23/7S7u 9cvn2RnnzKwand5iTnVohzISGYPCDkeUCFLgsOg4/p+bQB8wNggvYh9/lYJC5ib7m3KKryGJ44n P59wMZJmKF5IwYWsXvcMzYuZv6+A/gQ3EBWewSPfr8Hx4illpE1PeTul/Zpvjgc0wY5UpFRNTYR uj+eu8zcnbB5rg9xr/EHXlWV8ZiisV9U60zgOWUOz80LbwOQmeUUz3LuuulJvJUXC2lUy8Xo42+ gidP8BCQcU= X-Received: by 2002:a05:6a20:734c:b0:3c3:91f5:82c2 with SMTP id adf61e73a8af0-3cb85e788b6mr7269693637.16.1785935741411; Wed, 05 Aug 2026 06:15:41 -0700 (PDT) Received: from tresc054937.tre-sc.gov.br ([189.4.123.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3158673a9e4sm18292261eec.18.2026.08.05.06.15.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 06:15:40 -0700 (PDT) From: Luiz Angelo Daros de Luca Date: Wed, 05 Aug 2026 10:15:17 -0300 Subject: [hwmon-next PATCH v6 1/4] dt-bindings: hwmon: add adi,adt7470 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: <20260805-adt7470_thermalzone-v6-1-5605a5f95467@gmail.com> References: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> In-Reply-To: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> To: Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Packham , Andrew Morton , "Darrick J. Wong" , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Angelo Daros de Luca , linux-pwm@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.15.2 The Analog Devices ADT7470 is a multichannel temperature sensor and PWM fan controller. It supports monitoring up to 10 external temperature sensors and controlling up to 4 fans. Add the device tree binding documentation for it. This includes support for the thermal framework by defining the "#thermal-sensor-cells" property, and models the fan control lines as PWM channels by defining the "#pwm-cells" property. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Luiz Angelo Daros de Luca --- .../devicetree/bindings/hwmon/adi,adt7470.yaml | 58 ++++++++++++++++++= ++++ 1 file changed, 58 insertions(+) diff --git a/Documentation/devicetree/bindings/hwmon/adi,adt7470.yaml b/Doc= umentation/devicetree/bindings/hwmon/adi,adt7470.yaml new file mode 100644 index 000000000000..a701542898ee --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/adi,adt7470.yaml @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/hwmon/adi,adt7470.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices ADT7470 hwmon sensor + +maintainers: + - Luiz Angelo Daros de Luca + +description: + Multi-channel temperature monitor and PWM fan controller. + It supports monitoring up to 10 external temperature sensors and + controlling up to 4 fans. The fan control lines are modeled + as standard PWM channels. + +properties: + compatible: + const: adi,adt7470 + + reg: + maxItems: 1 + + "#pwm-cells": + const: 3 + + "#thermal-sensor-cells": + const: 1 + description: + Valid index values are 0 to 9, corresponding to temp1 through temp10. + +required: + - compatible + - reg + +allOf: + - if: + required: + - "#thermal-sensor-cells" + then: + $ref: /schemas/thermal/thermal-sensor.yaml# + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + hwmon@2f { + compatible =3D "adi,adt7470"; + reg =3D <0x2f>; + #pwm-cells =3D <3>; + #thermal-sensor-cells =3D <1>; + }; + }; --=20 2.55.0 From nobody Fri Oct 2 04:30:17 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 C515647125B for ; Wed, 5 Aug 2026 13:15:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935751; cv=none; b=IHpglAx2mkQ60CZQYhJfwhel/5u4fl6jn1LPBFq/58x4vmU8ALBnIJYbxaq+pbqkRKY5jPZo8kbV8hSBgUkXybWKqyFksRiawOdpPd4xXWkH/Nvczq3+FPUf4E/VQbAQGBFMB8HpM4h9MXYm+QcUMzVSue9exC894qXIV9Ure4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935751; c=relaxed/simple; bh=rWZwf1SmZmy+I60NhIjL5+z4C+Nz7YTugxwvI3MpXGs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MRlWJkwv0GwXI0JTFNGt3MOLEYrxS5QAzq9cdMRuvSLnEb56DrY1CIjI/XsEjs22HtqPvoiB/46r+IAcCj1RraDdy9STKhDGG9499vtWu3K/s1T+EzSOq2VD2uhl/Vnb3XvnyRLieRVV4DTX42UWBC1nLYOEbnq7veofsWgmPdo= 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=V+ZB/KGc; arc=none smtp.client-ip=209.85.216.53 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="V+ZB/KGc" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-38e07ebd263so648312a91.1 for ; Wed, 05 Aug 2026 06:15:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785935748; x=1786540548; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RsowAhie0fn+JDFgZmQoMRNcudB/ZaxkZWEVB+SjP1w=; b=V+ZB/KGcCtaDUhzGKcko0RPPEFoX1wQ+iAPr9VHD24Pi8+mygCZl+EK+U76uF3m89f RkuNWEDL5OepG2kZ2iw0dktkc/1AIrAMJpP8I9v2R3AcLvIBcBNS86jLdzHezf4I6Gk8 gsA29QMrI/9dPoRtg1sUPW/hUEnDo03iwPm+ILMw8GaUGJEMXLa3V3AgGjUHvEtRXLpw AI+VdWfy78O4XiLp5AdV0CuUOvuprABCfMVucW3Yv2emsBvnXMCz4nx9du0V9q0WdO// YxFfGOdOVH94MbAY0EgFWaG/JFJSNxLxBLat+mt7FakWDP+icgKO5l2K4xQbpjRDVgm5 v5dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785935748; x=1786540548; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=RsowAhie0fn+JDFgZmQoMRNcudB/ZaxkZWEVB+SjP1w=; b=CsqYEaeLAxj1DRa2d4ZPYmYsUguXfOc01oGTS0/4fSlJPVz2dncBiqq4oFjvAK5Wot 43G+Rly7fcts/SRiByCI+1L8wrpqNAvZs5ZMvnGOeGnQnKRwQhvdRfZIKFQRsoQPaEs/ ks16oQvej5bo4lxkRprAvl4l1egtKhV2129kRq6iv1zXFM27O+2A/5p5QB7AfxvU0FzU LkY3gqFwMHPfD8IRDtdmSF4Hrx/FugeJ2aYIvbd6qFsLC6+3Zj5479U6/Om9LQtTjzrf qjRlvzE2R2SgwPNcYIhefKZpgZglD3mVMJbWXWwNVNI3xFqhVdejlxWV0jPrYujI/7hS 2gyg== X-Forwarded-Encrypted: i=1; AHgh+RpjdhA/w+mZ+X/6ozvtaOZVgt0iQ7EcrMqM//6R2DBeX5WlEKYvMCwCv1AyPxeQCWYAAEDtEo/oWe0k3DY=@vger.kernel.org X-Gm-Message-State: AOJu0YzCN8NC2IHSooWczHGUtX+jBVwHPG2k6dt8PkyeOQwPhtu81hCW JgdFB0FEyQJNczlQ9Zd2bBDoby7fEuqW6Bih4ZQ9Lktlvca8x0zoK7Rk X-Gm-Gg: AR+sD11v/bGhjouGcQt7xCjgBvD6SyV2CQ1YCFrntpThyDe1w27zDt505c/hBeur5hZ rEy294Qnb4lg30YutNygSfUH1rdXEMUeWwMUbPVEqAkb+KkqtQxvrdzyN774hfWsr4GTvlv8NIL ReeCA9t+n7CyAa4SJJonXnzTcJwTkQI6zl80B6wIxdUyMpEwKl3XoZ5fhJSwR/H9U7/aKDhzO/D zIh29PpcNLm952wHyxhzG3GRUQ6fv3tqq9q0/N853jNTCnPHXQTbwcCE8JAKOMht0rnHEImhiJb FqPUCu5tYlfYBGs5OYPepkoc107rRlJj8ZCAJl9DbOrkhPOsCV+7EXVbLvJGx00mPDMnv/wOIhY 70j3PMmgZzpnZROJyCXZTEjDLjZ4XmY6r1ybWybqLiJTu3M3E3RsFPhpy8x0atCRRrPexbjpxLA VQSzz9TQuePypkv27g6jIS/HT61MaJ9QjQkVGvfs6apF8MeHzldd5hLy4ZhbYDcHqib9kjgyJU X-Received: by 2002:a17:90b:3812:b0:380:f389:447b with SMTP id 98e67ed59e1d1-3903c592834mr6034525a91.11.1785935747648; Wed, 05 Aug 2026 06:15:47 -0700 (PDT) Received: from tresc054937.tre-sc.gov.br ([189.4.123.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3158673a9e4sm18292261eec.18.2026.08.05.06.15.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 06:15:45 -0700 (PDT) From: Luiz Angelo Daros de Luca Date: Wed, 05 Aug 2026 10:15:18 -0300 Subject: [hwmon-next PATCH v6 2/4] hwmon: (adt7470) Add ADT7470_PWM_MAX macro 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: <20260805-adt7470_thermalzone-v6-2-5605a5f95467@gmail.com> References: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> In-Reply-To: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> To: Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Packham , Andrew Morton , "Darrick J. Wong" , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Angelo Daros de Luca , linux-pwm@vger.kernel.org X-Mailer: b4 0.15.2 Instead of a magic 255, use a macro to refer to it. Signed-off-by: Luiz Angelo Daros de Luca --- drivers/hwmon/adt7470.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c index c45b984c02e6..87ddd7b8ddae 100644 --- a/drivers/hwmon/adt7470.c +++ b/drivers/hwmon/adt7470.c @@ -100,6 +100,7 @@ static const unsigned short normal_i2c[] =3D { 0x2C, 0x= 2E, 0x2F, I2C_CLIENT_END }; #define ADT7470_REG_FAN_MAX(x) (ADT7470_REG_FAN_MAX_BASE_ADDR + ((x) * 2)) =20 #define ADT7470_PWM_COUNT 4 +#define ADT7470_PWM_MAX 255 #define ADT7470_REG_PWM(x) (ADT7470_REG_PWM_BASE_ADDR + (x)) #define ADT7470_REG_PWM_MAX(x) (ADT7470_REG_PWM_MAX_BASE_ADDR + (x)) #define ADT7470_REG_PWM_MIN(x) (ADT7470_REG_PWM_MIN_BASE_ADDR + (x)) @@ -850,7 +851,7 @@ static int adt7470_pwm_write(struct device *dev, u32 at= tr, int channel, long val =20 switch (attr) { case hwmon_pwm_input: - val =3D clamp_val(val, 0, 255); + val =3D clamp_val(val, 0, ADT7470_PWM_MAX); mutex_lock(&data->lock); err =3D regmap_write(data->regmap, ADT7470_REG_PWM(channel), val); @@ -910,7 +911,7 @@ static ssize_t pwm_max_store(struct device *dev, if (kstrtol(buf, 10, &temp)) return -EINVAL; =20 - temp =3D clamp_val(temp, 0, 255); + temp =3D clamp_val(temp, 0, ADT7470_PWM_MAX); =20 mutex_lock(&data->lock); data->pwm_max[attr->index] =3D temp; @@ -945,7 +946,7 @@ static ssize_t pwm_min_store(struct device *dev, if (kstrtol(buf, 10, &temp)) return -EINVAL; =20 - temp =3D clamp_val(temp, 0, 255); + temp =3D clamp_val(temp, 0, ADT7470_PWM_MAX); =20 mutex_lock(&data->lock); data->pwm_min[attr->index] =3D temp; --=20 2.55.0 From nobody Fri Oct 2 04:30:17 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 19C2A471275 for ; Wed, 5 Aug 2026 13:15:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935758; cv=none; b=Vo+Pv7EhlT7q2VnfWpjMMqJuema9ihZlXTfnG+7lS/I6mlQ1B94IqQvUe1TR3GwkQi9UR+fkc4eLbptSirlp2rgPBQ9LuJnkuMdpyKep9V5s0gf6RsjwU9+LqNabLzohXEFItbPh+vc0SWCsuuzBsvZVBrRuUNLl01Mb7FDFYlk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935758; c=relaxed/simple; bh=6Sz4Q0ABr5Tfip31KyIIcvrudC0SDzp/CSjmJxU7CSM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BnW20l/d9RPeNJddVkrvCkjO/BVOpGF2ErnWcxcV+hT4KU3+L6NoKauesdLFSoIHz6lIfOs2Q43vV2+w+ba2MQA5IuG4Ooe+cYma5dGgu6b/5E/LRNmLxvsNOjfH1TPgM/cFIlqH3pmHajnNLNDeBYUv5nReJdk3hH6/43zxzQ0= 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=fIVfKMeB; arc=none smtp.client-ip=209.85.216.49 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="fIVfKMeB" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-38de840f2f0so725126a91.0 for ; Wed, 05 Aug 2026 06:15:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785935754; x=1786540554; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Mof0gXHLBACZ9mYjnIwYKuzUS/R9hysxBWyHkqLlLTg=; b=fIVfKMeBxh2GTX0g9jspWdrlay5rqJAUbbY5ZOyBL4kDB9UThb9yxj+gj2sclLXpKV 1jTomK2FzMOh0Dj8Qs3F+0Dciik4oEK0IdkyIKanSuz5C3cJOW2hM6/JnPeQWmOsc589 YPXHo1dQfWFb0jnfbMnT7sSeO6nWxEmq97oeuxBA5HhpK8rS9IRwmpqchNDJ8FtGGnXE xnJOIyERzqRqMum4WqijDFWXRneyqV3OCWOFNzsf/Qvm1tgYsaKr1bopoe7QJFOgM/3C X2XZMEJ/wDfIUjS+flM6RXlrp7xBB6408Kl/yjwN3IucDtXuOiKEAiddLXDsWPX1UrlE fLXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785935754; x=1786540554; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Mof0gXHLBACZ9mYjnIwYKuzUS/R9hysxBWyHkqLlLTg=; b=Cazfe9sCJU5xkT1avDWtB7dq3A0csl6k0pS7WTpURuzzCAG+pqmAG0J0styGeslmY+ dsPb61kQpKUcNpZicE4IReO9g/HOZT6TCeBXeXWtXKWlXNEiQN90scpfINwY/Vxo2gVY DUeyckffcscn+7mMVKQ47d8+0JbUDoom8kq9kbqUKznFAUQTz92IApfQNKGVJ2JJKGhS OgcS7UqnYmhfoVqAvIhX09LU/fPplYbu3LQ6XkiqOr/Bw2BGSvCuSD7fB/XH8d8isjHd 9Tq1+cFcXJ4xbfF48HvYr2UeGlY0d+mTI5td4fiU+Iyj9bUKELTTWnaPcc7QfEdasQ2H nP0A== X-Forwarded-Encrypted: i=1; AHgh+Ro3pjMt7xETHy7zJTtMT1IZPLUzJRRflg0y6r00YkvEHJOGH+bpRq786giWJEIsMnFONDt2R13HfJINr7M=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe07DGdZxDb23hVNWbUxl8VZ4HGiy32/hQbw01k6x+4MB8I1rY iyvwZJT48m4fVrs4RmQSygIskaLnM2HZtF07M72Ce2IpL/LPWDHhSNdc X-Gm-Gg: AR+sD13Bdh2Vqzy+lQnA3Di9QZjjQZaqrCLdy9z4ZGvZuuADhZkU7+QY9w8YiIoH/Y7 cM/WciRt9OkXrNj+iJRJARGOIe8VdYR6PNYx9UwCqFYjKQcNc0CDmkPYctrs+Q4p2gYYKEAHVW3 zCVWALs5lQVlT+WkWLm4a5lIEt3QwkW2knFsWBocYLt3MXZCX4Of5jFaIsguQqZh3ycBc5Trwqe yNAVPvu9ZKp7Q+1+jeRjKpNc35NELPOJlH6qS+ARuIp8r+8BgnjccynMziWmhsXBuuxgMs59G5J BMQMY8G++CvNdwy+aNMqkcdRLCrP9uSaz+CLtC3mIgyAovO5GMRd2PWdX0gbV9bFUS7mHg78v7z 7groxSQM+y2xyw4lb6U3LBlttk58WhX7+nJP15urdOdVL8puJ79/i8xuDVdWknnNOdLPewRc7/Z N2St39dgj/v9FPfx90M5yyx7AxCAsVgKleNEbgfFyqbEGV7WWJxnnBC1GtPjEcSdSV0NVrhIjAm lre86O+YUo= X-Received: by 2002:a17:90b:17c6:b0:38f:1a2e:6e56 with SMTP id 98e67ed59e1d1-3903c59330amr6273573a91.9.1785935753895; Wed, 05 Aug 2026 06:15:53 -0700 (PDT) Received: from tresc054937.tre-sc.gov.br ([189.4.123.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3158673a9e4sm18292261eec.18.2026.08.05.06.15.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 06:15:52 -0700 (PDT) From: Luiz Angelo Daros de Luca Date: Wed, 05 Aug 2026 10:15:19 -0300 Subject: [hwmon-next PATCH v6 3/4] hwmon: (adt7470) Expose fan control via PWM framework 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: <20260805-adt7470_thermalzone-v6-3-5605a5f95467@gmail.com> References: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> In-Reply-To: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> To: Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Packham , Andrew Morton , "Darrick J. Wong" , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Angelo Daros de Luca , linux-pwm@vger.kernel.org X-Mailer: b4 0.15.2 The ADT7470 features four PWM outputs designed to control fans. Previously, these were only accessible through the legacy hwmon sysfs interface. Expose the ADT7470 fan control lines through the generic PWM framework. This allows generic PWM consumers described in Device Tree, such as "pwm-fan", to use the device through the "#pwm-cells" property. This is particularly necessary for boards where the ADT7470 external temperature sensors are not populated and the chip is used strictly as a fan controller (e.g., Edgecore ECS-2100-52T switches). In such setups, delegating control to the generic PWM subsystem allows the kernel's thermal framework to manage the fans based on unrelated temperature zones, such as internal SoC sensors. When a PWM consumer applies a new PWM state, the driver automatically switches the corresponding PWM channel to manual mode so that the requested duty cycle takes effect. The duty cycle specified by the PWM framework is internally converted to the 0-255 scale expected by the hardware registers. To prevent conflicting access, the hwmon PWM sysfs attributes are hidden when the device is registered with PWM framework support (i.e. when "#pwm-cells" is present in DT and CONFIG_PWM is reachable). Signed-off-by: Luiz Angelo Daros de Luca --- drivers/hwmon/Kconfig | 1 + drivers/hwmon/adt7470.c | 194 ++++++++++++++++++++++++++++++++++++++++++++= +++- 2 files changed, 194 insertions(+), 1 deletion(-) diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 6b71e3304b4f..0d6bd117d14d 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -224,6 +224,7 @@ config SENSORS_ADT7462 config SENSORS_ADT7470 tristate "Analog Devices ADT7470" depends on I2C + depends on PWM || PWM=3Dn select REGMAP_I2C help If you say yes here you get support for the Analog Devices diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c index 87ddd7b8ddae..eeec3db0da88 100644 --- a/drivers/hwmon/adt7470.c +++ b/drivers/hwmon/adt7470.c @@ -22,6 +22,9 @@ #include #include #include +#include +#include +#include =20 /* Addresses to scan */ static const unsigned short normal_i2c[] =3D { 0x2C, 0x2E, 0x2F, I2C_CLIEN= T_END }; @@ -164,6 +167,7 @@ struct adt7470_data { char limits_valid; unsigned long sensors_last_updated; /* In jiffies */ unsigned long limits_last_updated; /* In jiffies */ + bool use_pwm_framework; =20 int num_temp_sensors; /* -1 =3D probe */ int temperatures_probed; @@ -887,6 +891,133 @@ static int adt7470_pwm_write(struct device *dev, u32 = attr, int channel, long val return err; } =20 +struct adt7470_pwm_wfhw { + u8 val; +}; + +static int adt7470_pwm_round_waveform_tohw(struct pwm_chip *chip, + struct pwm_device *pwm, + const struct pwm_waveform *wf, + void *_wfhw) +{ + struct adt7470_data *data =3D pwmchip_get_drvdata(chip); + struct adt7470_pwm_wfhw *wfhw =3D _wfhw; + u64 actual_period; + + if (wf->duty_length_ns =3D=3D 0) { + wfhw->val =3D 0; + return 0; + } + + /* + * The PWM frequency (period) is a single chip-wide setting shared by + * all 4 channels, so it cannot be changed on a per-pwm_device basis + * through this API. The duty cycle is rounded against the currently + * configured hardware period rather than the period requested in + * @wf; round_waveform_fromhw() reports the actual resulting + * waveform back so the core/consumer can detect a mismatch. + */ + actual_period =3D DIV_ROUND_UP_ULL(NSEC_PER_SEC, data->pwm_freq); + + if (actual_period > wf->period_length_ns) + /* period too short */ + return 1; + + if (wf->duty_length_ns >=3D actual_period) { + wfhw->val =3D ADT7470_PWM_MAX; + } else { + wfhw->val =3D mul_u64_u64_div_u64(wf->duty_length_ns, + ADT7470_PWM_MAX, + actual_period); + } + + return 0; +} + +static int adt7470_pwm_round_waveform_fromhw(struct pwm_chip *chip, + struct pwm_device *pwm, + const void *_wfhw, + struct pwm_waveform *wf) +{ + struct adt7470_data *data =3D pwmchip_get_drvdata(chip); + const struct adt7470_pwm_wfhw *wfhw =3D _wfhw; + + wf->period_length_ns =3D DIV_ROUND_UP_ULL(NSEC_PER_SEC, data->pwm_freq); + wf->duty_offset_ns =3D 0; + wf->duty_length_ns =3D DIV_ROUND_UP_ULL((u64)wfhw->val * wf->period_lengt= h_ns, + ADT7470_PWM_MAX); + return 0; +} + +static int adt7470_pwm_read_waveform(struct pwm_chip *chip, + struct pwm_device *pwm, + void *_wfhw) +{ + struct adt7470_data *data =3D pwmchip_get_drvdata(chip); + struct device *dev =3D regmap_get_device(data->regmap); + struct adt7470_pwm_wfhw *wfhw =3D _wfhw; + + data =3D adt7470_update_device(dev); + if (IS_ERR(data)) + return PTR_ERR(data); + + /* + * No lock needed: like the other hwmon_ops read callbacks in this + * driver (e.g. adt7470_pwm_read()), this only does a single byte + * read from the cache populated by adt7470_update_device(). + */ + wfhw->val =3D data->pwm[pwm->hwpwm]; + + return 0; +} + +static int adt7470_pwm_write_waveform(struct pwm_chip *chip, + struct pwm_device *pwm, + const void *_wfhw) +{ + struct adt7470_data *data =3D pwmchip_get_drvdata(chip); + const struct adt7470_pwm_wfhw *wfhw =3D _wfhw; + unsigned int pwm_auto_reg_mask; + int err; + + if (pwm->hwpwm % 2) + pwm_auto_reg_mask =3D ADT7470_PWM2_AUTO_MASK; + else + pwm_auto_reg_mask =3D ADT7470_PWM1_AUTO_MASK; + + guard(mutex)(&data->lock); + + if (data->pwm[pwm->hwpwm] =3D=3D wfhw->val && + data->pwm_automatic[pwm->hwpwm] =3D=3D 0) + return 0; + + /* Put the PWM channel in manual mode before updating it. */ + err =3D regmap_update_bits(data->regmap, + ADT7470_REG_PWM_CFG(pwm->hwpwm), + pwm_auto_reg_mask, 0); + if (err < 0) + return err; + + data->pwm_automatic[pwm->hwpwm] =3D 0; + + err =3D regmap_write(data->regmap, + ADT7470_REG_PWM(pwm->hwpwm), wfhw->val); + if (err < 0) + return err; + + data->pwm[pwm->hwpwm] =3D wfhw->val; + + return 0; +} + +static const struct pwm_ops adt7470_pwm_ops =3D { + .sizeof_wfhw =3D sizeof(struct adt7470_pwm_wfhw), + .round_waveform_tohw =3D adt7470_pwm_round_waveform_tohw, + .round_waveform_fromhw =3D adt7470_pwm_round_waveform_fromhw, + .read_waveform =3D adt7470_pwm_read_waveform, + .write_waveform =3D adt7470_pwm_write_waveform, +}; + static ssize_t pwm_max_show(struct device *dev, struct device_attribute *devattr, char *buf) { @@ -1107,6 +1238,10 @@ static struct attribute *adt7470_attrs[] =3D { &dev_attr_alarm_mask.attr, &dev_attr_num_temp_sensors.attr, &dev_attr_auto_update_interval.attr, + NULL +}; + +static struct attribute *adt7470_pwm_attrs[] =3D { &sensor_dev_attr_force_pwm_max.dev_attr.attr, &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr, &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr, @@ -1131,7 +1266,32 @@ static struct attribute *adt7470_attrs[] =3D { NULL }; =20 -ATTRIBUTE_GROUPS(adt7470); +static const struct attribute_group adt7470_group =3D { + .attrs =3D adt7470_attrs, +}; + +static umode_t adt7470_pwm_is_visible(struct kobject *kobj, + struct attribute *attr, int index) +{ + struct device *dev =3D kobj_to_dev(kobj); + struct adt7470_data *data =3D dev_get_drvdata(dev); + + if (data->use_pwm_framework) + return 0; + + return attr->mode; +} + +static const struct attribute_group adt7470_pwm_group =3D { + .attrs =3D adt7470_pwm_attrs, + .is_visible =3D adt7470_pwm_is_visible, +}; + +static const struct attribute_group *adt7470_groups[] =3D { + &adt7470_group, + &adt7470_pwm_group, + NULL, +}; =20 static int adt7470_read(struct device *dev, enum hwmon_sensor_types type, = u32 attr, int channel, long *val) @@ -1166,6 +1326,7 @@ static int adt7470_write(struct device *dev, enum hwm= on_sensor_types type, u32 a static umode_t adt7470_is_visible(const void *_data, enum hwmon_sensor_typ= es type, u32 attr, int channel) { + const struct adt7470_data *data =3D _data; umode_t mode =3D 0; =20 switch (type) { @@ -1198,6 +1359,14 @@ static umode_t adt7470_is_visible(const void *_data,= enum hwmon_sensor_types typ } break; case hwmon_pwm: + /* Hide all pwm attributes if this device is exposed to the PWM + * framework + */ + if (data->use_pwm_framework) { + mode =3D 0; + break; + } + switch (attr) { case hwmon_pwm_input: case hwmon_pwm_enable: @@ -1328,6 +1497,29 @@ static int adt7470_probe(struct i2c_client *client) =20 data->pwm_freq =3D (u32)freq_val; =20 + data->use_pwm_framework =3D false; + + if (device_property_present(dev, "#pwm-cells")) { + if (IS_REACHABLE(CONFIG_PWM)) { + struct pwm_chip *chip; + + chip =3D devm_pwmchip_alloc(dev, ADT7470_PWM_COUNT, 0); + if (IS_ERR(chip)) + return PTR_ERR(chip); + + chip->ops =3D &adt7470_pwm_ops; + pwmchip_set_drvdata(chip, data); + + err =3D devm_pwmchip_add(dev, chip); + if (err) + return dev_err_probe(dev, err, "failed to register PWM chip\n"); + + data->use_pwm_framework =3D true; + } else { + dev_warn(dev, "#pwm-cells present but CONFIG_PWM disabled. HWMON PWM at= tributes not hidden.\n"); + } + } + /* Register sysfs hooks */ hwmon_dev =3D devm_hwmon_device_register_with_info(dev, client->name, dat= a, &adt7470_chip_info, --=20 2.55.0 From nobody Fri Oct 2 04:30:17 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 2EC74471406 for ; Wed, 5 Aug 2026 13:16:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935761; cv=none; b=BI+sB3z/SjpkmXZkI/uISSWoTXZzRy4mRAqtXNfATtX4dzpcVMSsFzXC39g/6EUP2AvQBUvQEHttGLw+i1f0RyZTycV2QaVfPCYiulQ9mL9SrdfRfUNejpIqeTAAZRHdUi6rnkhEnBrpaH+QbZapaQwr5bWjNHuREbKf24nzVZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785935761; c=relaxed/simple; bh=+gw83Mh3Ir+pTpfrq0+pitALUCJUqx97EkYCdiBEbRg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fn3hAOQVvgokqRnrjB2GC4hNFZJo280Ue2+DuhaVICdGOuCx2S49Uy/glAAWPLBX8wc0Hq1fjhXFWwBuqSTDNXxJd9Vv5oz1i7fvpplOkjtY7Bzvwp//OP6OcheNIbtQ5Kbum0b/Yv2SpfEKvBhJSCHsmsFfyFC+HP4uJe/Ls1w= 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=Ku0EsZGG; arc=none smtp.client-ip=209.85.214.171 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="Ku0EsZGG" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2cacb8416a1so10698715ad.1 for ; Wed, 05 Aug 2026 06:16:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785935760; x=1786540560; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tv7r0pILyVz8vcjgz8J3/h+ifgsbbGqBLwmu7dyifLA=; b=Ku0EsZGG5qLwyKd1DIO9dwrzIPWocFr7AkGTsPDRRVGLc9SaUnJOEiF/nekL6gD3VR W2o9GIv7wrCNi0dk9n5pHvCKEQvF48W4npvMTk4aKoZJIyEE1kUR/aq0YrsBsHnWBayG fVXPjJsnJOYbvO+aTu6SPqYdk9k5kWOKA5m3sbrLSynkePWPNuu7U3qOmbODicaIjpPG DMX1BqQmIX/BBsycqviMYuu9zTwAhGtgoHm8HZY/T63ezrvAhAGN9ZTS9zngVDNNvqhY uR5iSq6ACw+zKr16cZgpp/PSKv+elLvpOi+GvnWQPML0cF9MPxrxn05TPpI9fiqCBS9k 4LPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785935760; x=1786540560; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tv7r0pILyVz8vcjgz8J3/h+ifgsbbGqBLwmu7dyifLA=; b=fzwAonekSJ7RjFz9PQHT0ypfFk36hURuMtiOtgMm8MbD0vxHB0CcUVXiFyRc5PbXvn icIcKmRa+hYwfEhAyol0+PkimzaKVKFsL7f7X4fahfD/YTGMp541G9JQ+NcvOZDHK3tZ LtSfupBgjtXF4u66ZNCud7imJdi3Swkq51OnUm1bWyyFCwDNQmm30TWLNbznFUftGXrw QyJZYfxnr5h6C+e7OQVnHMlJgHdck7lc9aOdE66rPgeww8ij9o9KLrIBMP7vpsFyV1Oh rH8FntZcASR0xfpK55yLcs1+cjgSjCm4ACKTlMoTb9diG1bW7qKQR+QQPnzFRKWUCErD bZog== X-Forwarded-Encrypted: i=1; AHgh+RrG8lkJxih+p7QWEB9lgKamsrBGTQBoKzDgwj/thAGA39eW/nCF+dgB0TZlI6yh3NannZ3rAEXiJ23oWJE=@vger.kernel.org X-Gm-Message-State: AOJu0YzMWOVK+tm6nElhd1/LkvQ6PPgHDOSPVe+JATyl9f0jL17xIWhP 8mx/IMPh0girxYPjRw5kceAsOpGTxju0YXG9F/+eaqBX6FOu1I+Er6g/ X-Gm-Gg: AR+sD12e6lmFQ4+EJUXCG8moY+BrJ3AZu9VBc+JAGo4XxZ/QbVBUnRegtpOjpXsMQdh BcFmz5rIHyZ1VL26pfrmHJADm870Kt1UnaLEvsYKHZX5m5y+iES13lqKRvtri/0Fm280tZ/JNw+ YatVX1U1w+zfB6cCgDE/2ByJ1BYTz7DRsbbsKiy3kMmAGrrmG9tPvOtj1g5zOjmzhFkM8l+yZ7e Bfddkw4Ny0DJwQZHZ9Ny6xwZIEiq65bK+gjwW4ayPxim/ybDRuNVhucFOctELpv8Bw0m77br0dw bmTF2U+zKQEP6PKTrEME8462htQhuAeAJEn+/znpRJ8EJun7Elh4L5AOSymmxiKGMFASRHBhNgI BtnbP2PHJA5olMeDbe6B0b1Q6xeAaGSAc8m/xidcIoreBJhuze/M1V3i5s/DuUIOV0KQHR+TI+x Lea74Q+pKTOsM5E8CFMyE4LLkog+lnKsIZLOVf8FSC3KgwUZoFFrZzdo/U0XsMyi3lmuxFFvjl X-Received: by 2002:a17:902:d986:b0:2c0:e2ea:6b0c with SMTP id d9443c01a7336-2d0caa031e5mr82849455ad.21.1785935759549; Wed, 05 Aug 2026 06:15:59 -0700 (PDT) Received: from tresc054937.tre-sc.gov.br ([189.4.123.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3158673a9e4sm18292261eec.18.2026.08.05.06.15.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 06:15:58 -0700 (PDT) From: Luiz Angelo Daros de Luca Date: Wed, 05 Aug 2026 10:15:20 -0300 Subject: [hwmon-next PATCH v6 4/4] hwmon: (adt7470) Add thermal zone sensor 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: <20260805-adt7470_thermalzone-v6-4-5605a5f95467@gmail.com> References: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> In-Reply-To: <20260805-adt7470_thermalzone-v6-0-5605a5f95467@gmail.com> To: Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chris Packham , Andrew Morton , "Darrick J. Wong" , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Angelo Daros de Luca , linux-pwm@vger.kernel.org X-Mailer: b4 0.15.2 Register the ADT7470 temperature channels as thermal zone sensors. Signed-off-by: Luiz Angelo Daros de Luca --- drivers/hwmon/adt7470.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c index eeec3db0da88..f652532f2f32 100644 --- a/drivers/hwmon/adt7470.c +++ b/drivers/hwmon/adt7470.c @@ -1396,6 +1396,8 @@ static const struct hwmon_ops adt7470_hwmon_ops =3D { }; =20 static const struct hwmon_channel_info * const adt7470_info[] =3D { + HWMON_CHANNEL_INFO(chip, + HWMON_C_REGISTER_TZ), HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT | HWMON_T_MIN | HWMON_T_MAX | HWMON_T_ALARM, HWMON_T_INPUT | HWMON_T_MIN | HWMON_T_MAX | HWMON_T_ALARM, --=20 2.55.0