From nobody Mon Feb 9 15:08:22 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 A115D3AEF4F for ; Wed, 14 Jan 2026 22:12:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768428756; cv=none; b=Qe15CKZwCVdgIdDH61fBXoNW5ne6StsrHh+6g7AONQa55lTghlOpL7a0ypg+scFvRS0xoiuDGU1OLlaacfvx0A9oMyNTHcsVJ0azGEueC7DNRrBMJlFp9RitCGa17Eu9BioUVhkGYYnYUeMZvV2BZNhIjRuYLXm7lW5LxIz22+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768428756; c=relaxed/simple; bh=AqQ7D7MZG5dCwk0+FI4LPwFjNnbWzQHDbkY9jbK4f6A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AF492ORQR7Hpp7cwdtJPLmrho1SmB/T5YlDP/Q/xwklmqNOrmjgXr/fMWFw4f8NjLuVnLBspkMjtdYBncfFCj6QCd1sLnnOooD8ZjfBnx5AdgyRkpLbeQEX3vM1yWWK5kAiQYfu8TL9VYVYPh/KCgiIPfLLob+jhNFeYSCrgBWQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=perenite.com; spf=pass smtp.mailfrom=perenite.com; dkim=pass (2048-bit key) header.d=perenite-com.20230601.gappssmtp.com header.i=@perenite-com.20230601.gappssmtp.com header.b=Jv6dA1Q/; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=perenite.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=perenite.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=perenite-com.20230601.gappssmtp.com header.i=@perenite-com.20230601.gappssmtp.com header.b="Jv6dA1Q/" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-47ee0291921so2186845e9.3 for ; Wed, 14 Jan 2026 14:12:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=perenite-com.20230601.gappssmtp.com; s=20230601; t=1768428737; x=1769033537; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TEwZJiV03fJ628aCuxgNtJ0Js2UxACV5+XtPBkCCvVM=; b=Jv6dA1Q/hdZge3jWWBPueAxiXQ57z4IkxAOcHwLHAax7UImoRVPKoDw4PdF7or/BEL tej1t2vHhKUjuBEBiU5D6Hm46nD8B7ybeyVavhyNiboR+m36UQ+Dra2LN7P28rOXyryx LcR1yAz7I+T+wliVw1Lh53Cu9bMGd0fjtOY1ZIjQROoAnHW7HwHQpyfHLQOwaPyCEnNR KIVxR0sS040IasR11+3jBsCk9p7Qwm8+fQivNsssLU4U5pNRIfGba2XAhmInrLebNxK0 732MN3yXf81aRMtdoFY/1WcCKvw6iNiAd1g0WkjyeD3m4oWmD1tg3goLI6yun8QyOSi7 zmTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768428737; x=1769033537; h=content-transfer-encoding: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; bh=TEwZJiV03fJ628aCuxgNtJ0Js2UxACV5+XtPBkCCvVM=; b=rmQ5WSQuEvgmQpoo0yKdr5dUbtze595NN42Ayhm8IBK7X9igE+S8Br8bgscHz4wyVu Y9SLdLLSLTLUzMLj7PYMfWZ/Y4hBbZhnB0I6NyEL9w1if4KWsIS9dxMQDhvja3BZRPur gAFc/dECLYhhiBFjKYAFn4gLbCEcefoYto75i+/4muT6VYNhdNDqI5UG3wLVaBYGwsbp 7cHkx6yNWHIuLgpnVWysSfjpAcN2okMOtvl3P9O45Exgz/KRQ/lDw7meGbt0zufS33xy XAKzHdTxmOQQ+/PtHwHZqft88AhxnJ/zFEmItuuiVtJusZbHMGZNMCwi86tav1jqZLPD Kdxg== X-Forwarded-Encrypted: i=1; AJvYcCXl+fn/6bbPMmLO2LmCcVT7hJNX9ALab/PeSTIxFT/s5m3EQ/4o3xY4iq6Sv3T0s5qA9zTtF8TsYN2+PFg=@vger.kernel.org X-Gm-Message-State: AOJu0YzG2IaXUB4dW3pfX8jTIx7jaEJikgQssykgbbmP+VTg32bohE08 Q4+r4Rhka+JybT33AAVDiBaOK+ZEF2q2UczuTlzjDD5KHAwyS2fmmNXmqtEcFFKB6g== X-Gm-Gg: AY/fxX7VZ1EdJKDj/s0juhMqclr5YDTVIyTAri1OId//f2vWTN+4gQgxn3L7oulsDL5 6omKsyX0RXbQpiY/XEkkTl4Jx9kqIL2U0BKMmyiV6MHzd0rar5+ijmbhAR3o/hxltmz3Aef37hh KQaB6cUlr7geLDoplaI8BjXjtmtZ0Mrec/Ef8BD60VYGE+Av40+7gnerxNhS1tJ7+ITo6EoCfya Bltufc2y9rW0BDbd61g9tLSs8bPi7OwwpUvkhkIz2apb4U/7t4OifgIOX5418al6vP6jEVrVWNN PqSUl7Wcswj8pgnUNSgVzdSjP5hSWjZWC/H9rPZczrUP/LFrmNY2SWWV7wHNiEhtKzJwc5jrTQ0 t2lMV/9xxw2mvZ7m2vfIJOMWCRC3Zq+J/9uC9Bkvj+8BOt/YU9hb+0uovfLmjYhI3FGRNHfC+se 0+QXZK+OK4nL85ah8FZxlS550ZcdoHelVqZq+Sy9VDakMNCWFdpPRjy0FVXAXYIhAYwaZdiFKqj MeTiOujFwNgdLGirw== X-Received: by 2002:a05:600c:1f92:b0:47a:94fc:d057 with SMTP id 5b1f17b1804b1-47ee332fa41mr38400435e9.2.1768428736813; Wed, 14 Jan 2026 14:12:16 -0800 (PST) Received: from localhost.localdomain (217-128-226-200.ftth.fr.orangecustomers.net. [217.128.226.200]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f941a670dsm3098195e9.5.2026.01.14.14.12.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 14 Jan 2026 14:12:16 -0800 (PST) From: "benoit.masson" To: Jean Delvare , Guenter Roeck Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, Jonathan Corbet , linux-doc@vger.kernel.org, "benoit.masson" Subject: [PATCH v4 3/5] hwmon: it87: expose additional temperature limits Date: Wed, 14 Jan 2026 23:12:08 +0100 Message-ID: <20260114221210.98071-4-yahoo@perenite.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260114221210.98071-1-yahoo@perenite.com> References: <20260114221210.98071-1-yahoo@perenite.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Expose extra temp min/max/offset/type/alarm attributes when a chip reports more than three temperature resources. Signed-off-by: benoit.masson --- drivers/hwmon/it87.c | 58 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index 2d4264d05bc2..368ae68ace15 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c @@ -1334,8 +1334,26 @@ static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_I= WUSR, show_temp, set_temp, static SENSOR_DEVICE_ATTR_2(temp3_offset, S_IRUGO | S_IWUSR, show_temp, set_temp, 2, 3); static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 3, 0); +static SENSOR_DEVICE_ATTR_2(temp4_min, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 3, 1); +static SENSOR_DEVICE_ATTR_2(temp4_max, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 3, 2); +static SENSOR_DEVICE_ATTR_2(temp4_offset, S_IRUGO | S_IWUSR, show_temp, + set_temp, 3, 3); static SENSOR_DEVICE_ATTR_2(temp5_input, S_IRUGO, show_temp, NULL, 4, 0); +static SENSOR_DEVICE_ATTR_2(temp5_min, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 4, 1); +static SENSOR_DEVICE_ATTR_2(temp5_max, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 4, 2); +static SENSOR_DEVICE_ATTR_2(temp5_offset, S_IRUGO | S_IWUSR, show_temp, + set_temp, 4, 3); static SENSOR_DEVICE_ATTR_2(temp6_input, S_IRUGO, show_temp, NULL, 5, 0); +static SENSOR_DEVICE_ATTR_2(temp6_min, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 5, 1); +static SENSOR_DEVICE_ATTR_2(temp6_max, S_IRUGO | S_IWUSR, show_temp, set_t= emp, + 5, 2); +static SENSOR_DEVICE_ATTR_2(temp6_offset, S_IRUGO | S_IWUSR, show_temp, + set_temp, 5, 3); =20 static int get_temp_type(struct it87_data *data, int index) { @@ -1461,6 +1479,12 @@ static SENSOR_DEVICE_ATTR(temp2_type, S_IRUGO | S_IW= USR, show_temp_type, set_temp_type, 1); static SENSOR_DEVICE_ATTR(temp3_type, S_IRUGO | S_IWUSR, show_temp_type, set_temp_type, 2); +static SENSOR_DEVICE_ATTR(temp4_type, S_IRUGO | S_IWUSR, show_temp_type, + set_temp_type, 3); +static SENSOR_DEVICE_ATTR(temp5_type, S_IRUGO | S_IWUSR, show_temp_type, + set_temp_type, 4); +static SENSOR_DEVICE_ATTR(temp6_type, S_IRUGO | S_IWUSR, show_temp_type, + set_temp_type, 5); =20 /* 6 Fans */ =20 @@ -2290,6 +2314,9 @@ static SENSOR_DEVICE_ATTR(fan6_alarm, S_IRUGO, show_a= larm, NULL, 7); static SENSOR_DEVICE_ATTR(temp1_alarm, S_IRUGO, show_alarm, NULL, 16); static SENSOR_DEVICE_ATTR(temp2_alarm, S_IRUGO, show_alarm, NULL, 17); static SENSOR_DEVICE_ATTR(temp3_alarm, S_IRUGO, show_alarm, NULL, 18); +static SENSOR_DEVICE_ATTR(temp4_alarm, S_IRUGO, show_alarm, NULL, 19); +static SENSOR_DEVICE_ATTR(temp5_alarm, S_IRUGO, show_alarm, NULL, 20); +static SENSOR_DEVICE_ATTR(temp6_alarm, S_IRUGO, show_alarm, NULL, 21); static SENSOR_DEVICE_ATTR(intrusion0_alarm, S_IRUGO | S_IWUSR, show_alarm, clear_intrusion, 4); =20 @@ -2350,6 +2377,9 @@ static SENSOR_DEVICE_ATTR(temp1_beep, S_IRUGO | S_IWU= SR, show_beep, set_beep, 2); static SENSOR_DEVICE_ATTR(temp2_beep, S_IRUGO, show_beep, NULL, 2); static SENSOR_DEVICE_ATTR(temp3_beep, S_IRUGO, show_beep, NULL, 2); +static SENSOR_DEVICE_ATTR(temp4_beep, S_IRUGO, show_beep, NULL, 2); +static SENSOR_DEVICE_ATTR(temp5_beep, S_IRUGO, show_beep, NULL, 2); +static SENSOR_DEVICE_ATTR(temp6_beep, S_IRUGO, show_beep, NULL, 2); =20 static ssize_t vrm_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -2512,14 +2542,12 @@ static umode_t it87_temp_is_visible(struct kobject = *kobj, int i =3D index / 7; /* temperature index */ int a =3D index % 7; /* attribute index */ =20 - if (index >=3D 21) { - i =3D index - 21 + 3; - a =3D 0; - } - if (!(data->has_temp & BIT(i))) return 0; =20 + if (a && i >=3D data->num_temp_limit) + return 0; + if (a =3D=3D 3) { if (get_temp_type(data, i) =3D=3D 0) return 0; @@ -2561,8 +2589,28 @@ static struct attribute *it87_attributes_temp[] =3D { &sensor_dev_attr_temp3_beep.dev_attr.attr, =20 &sensor_dev_attr_temp4_input.dev_attr.attr, /* 21 */ + &sensor_dev_attr_temp4_max.dev_attr.attr, + &sensor_dev_attr_temp4_min.dev_attr.attr, + &sensor_dev_attr_temp4_type.dev_attr.attr, + &sensor_dev_attr_temp4_alarm.dev_attr.attr, + &sensor_dev_attr_temp4_offset.dev_attr.attr, + &sensor_dev_attr_temp4_beep.dev_attr.attr, + &sensor_dev_attr_temp5_input.dev_attr.attr, + &sensor_dev_attr_temp5_max.dev_attr.attr, + &sensor_dev_attr_temp5_min.dev_attr.attr, + &sensor_dev_attr_temp5_type.dev_attr.attr, + &sensor_dev_attr_temp5_alarm.dev_attr.attr, + &sensor_dev_attr_temp5_offset.dev_attr.attr, + &sensor_dev_attr_temp5_beep.dev_attr.attr, + &sensor_dev_attr_temp6_input.dev_attr.attr, + &sensor_dev_attr_temp6_max.dev_attr.attr, + &sensor_dev_attr_temp6_min.dev_attr.attr, + &sensor_dev_attr_temp6_type.dev_attr.attr, + &sensor_dev_attr_temp6_alarm.dev_attr.attr, + &sensor_dev_attr_temp6_offset.dev_attr.attr, + &sensor_dev_attr_temp6_beep.dev_attr.attr, NULL }; =20 --=20 2.50.1 (Apple Git-155)