From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 4D185221F12 for ; Sat, 10 Jan 2026 01:26:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768008385; cv=none; b=L+1VPkYgYOaMUAI/2Lqx7ynLs3hwuv3GozuQgouRLG5KzH25t6n7nMWLQoHEzCm4naVI2320fgiaSCuAbL4iBGnSAjIgQsePqdG3IreGzX2z1d98x0FJ4dxfCqnsD+PdaRepLlmzqE4L7aZq997aoZButgR1HwQbJ/Ms6Bj10v8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768008385; c=relaxed/simple; bh=iVsgVxLI6I/9ZTlTWmFplWmWlyfeX/jDoBkCd+nkhDI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gu9qoiQBueYjupP0Yxnt5o4uczhw2IodswisU4gGjZQ0NYoyZM4OLo8PHJpz4X+gTvTiaJN0ZvSK3DFxS13/YhXBThRraDcku8qpl7vKhmQNTan2UAQO5ZLI/17Os5J6ntRXCd6pyjhn6zwRRFTDQS0PCwSw9SHpiLYqPJPkmTg= 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=bkSuLdOH; arc=none smtp.client-ip=209.85.221.41 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="bkSuLdOH" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-432d256c2e6so1700771f8f.3 for ; Fri, 09 Jan 2026 17:26:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=perenite-com.20230601.gappssmtp.com; s=20230601; t=1768008377; x=1768613177; 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=v/0a52ze8ZOTMxC366uco1F4iY4yHWTRg5cfVneeIzw=; b=bkSuLdOHabgN81avy7CibkxQUhf4UI6mj8acKB1uIxLLv4VIXvZsdTZEsizMn6bHzg iji1RL5kd3xMu7YbCfWuEzvmvF/qvI4PL8o60IBnkpc0UH45q110wMaiL725ICZRXMNJ EwH2FCmtWLPVU/uNDPvqND8jVGPV9/7XNakHaft3t0CIOhp7xAkI0wzcnODMJ0ovdNxK R8kSSybxhoHVczSScIF++2o+HMWy6Z5c6QhbBYml++gLONTsQhqsRyQDdm1/RpkRH35h ngxoFVbUl5+6RSIXwqnqUk6P4g/BWKnemPG0KTfM3M0ZCBXZKxKy8yCF1r7NPVGv8Rv4 H4MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768008377; x=1768613177; 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=v/0a52ze8ZOTMxC366uco1F4iY4yHWTRg5cfVneeIzw=; b=U0O8oDd12uOtYcZLmyyZoO+fahmJavV8eLrNeIdXrXbd/3tKyJxLthxewdP468F9DO /pQ+d67fffIcucTnkhMYQIYsu0LErjp8bo1mt1Bdo1RNb/69z/RiGdCX4Dhkd3gDCt56 zysn2Xr+7cZnESMEhTHBdHNhsd1OlHlaOiDdYqgT4lOQ2PxdGja0gb/OikrTX2UmbfmK kw/Cdue74p7WLL5whjUzrgzLRWeJBIfAeL9nXk+w76Ek5+DHg5ipCxYrykciNJFDq4xg yDSc7Gfkrmv2hVMAJZ8HiIQn1Qv4DissYQSLtrlbpc5TheS/n7ArGesrz9vkryMjs3T8 T9zg== X-Forwarded-Encrypted: i=1; AJvYcCVNTNAPqrPDNJwcbwLNRkqd50fCc1EYU2LzgCdBqIVw+dyre6IOpSoKrT3S7jKTrYhypOWtBIFuwHfD3jQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yxy1TPUEDHCGGse41gmhJzXBgCJ789hkozah371Eg+mR1ug6dbB gxk2biiEmFklP51yjRu0GiGGkM9G7stoL/y3IHftd21hJySvcirSAcG8VeBzRvmrQw== X-Gm-Gg: AY/fxX6URspHE492u+WZKkYOMnQpVe3auPCZBjcZbqaBgrN9ViAh4zlbkvvSRJpGKLq pTBzdZ6DHDYjA1uvD2M6pBQmQCjWRkFvu5J5miup5/OXrm33N3v0ZK7SGwPvzeRmii5UGZoqIzI cKTnFrOxzIseqjDXu+XLCdDGTD7K7S3taWtwEFLbUdp6/FtPUsgxJ34BPPdcoi6wbgvmIIaE4NZ U7fHW+mXzrno+h5n/5TlIdfTDva8+eQXNEHTdyaTrFeSCvW3c9aQjDhyyvNmLgZWykp/+KbP3Ny XicQ/Uq2jYXUcP0k3xhhNa9NQANWRMWFmmpgbdQ0puBpqPua0r2wzCMsi8a9NmqJ3p7FCbbvNq9 1iuCfA8M5h3lnser0k2dBnO34atZIdN1D3rZ2u9fY0jKz9Fl/Jc8k3Whv2BA/bT3n4TX7Ugh7SO S0FDnMjZP5vlbhnjKyNdGxlGX7IvLH X-Google-Smtp-Source: AGHT+IGLPUnRkpruevByMVex+ArbD9LeJ1foyACN9GtKOdhYWbeC1JMQnAdw0QatdI1wfN5VEh3dwA== X-Received: by 2002:a05:6000:2584:b0:432:5bf9:cf22 with SMTP id ffacd0b85a97d-432c3760f0amr13003628f8f.3.1768008375918; Fri, 09 Jan 2026 17:26:15 -0800 (PST) Received: from mac.net ([2001:861:8b92:2c50:6cf2:f0aa:7bc6:15fc]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd0e1adbsm25859761f8f.17.2026.01.09.17.26.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 09 Jan 2026 17:26:15 -0800 (PST) From: "benoit.masson" To: Jean Delvare Cc: Guenter Roeck , linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, "benoit.masson" Subject: [PATCH v3 3/5] hwmon: it87: expose additional temperature limits Date: Sat, 10 Jan 2026 02:26:11 +0100 Message-ID: <20260110012613.48150-3-yahoo@perenite.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260110012613.48150-1-yahoo@perenite.com> References: <20260110012613.48150-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: 8bit 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 | 60 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index dfd1e896c1ab..90230e693152 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c @@ -1258,8 +1258,26 @@ static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_IWUSR, 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_temp, + 3, 1); +static SENSOR_DEVICE_ATTR_2(temp4_max, S_IRUGO | S_IWUSR, show_temp, set_temp, + 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_temp, + 4, 1); +static SENSOR_DEVICE_ATTR_2(temp5_max, S_IRUGO | S_IWUSR, show_temp, set_temp, + 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_temp, + 5, 1); +static SENSOR_DEVICE_ATTR_2(temp6_max, S_IRUGO | S_IWUSR, show_temp, set_temp, + 5, 2); +static SENSOR_DEVICE_ATTR_2(temp6_offset, S_IRUGO | S_IWUSR, show_temp, + set_temp, 5, 3); static int get_temp_type(struct it87_data *data, int index) { @@ -1385,6 +1403,12 @@ static SENSOR_DEVICE_ATTR(temp2_type, S_IRUGO | S_IWUSR, 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); /* 6 Fans */ @@ -2214,6 +2238,9 @@ static SENSOR_DEVICE_ATTR(fan6_alarm, S_IRUGO, show_alarm, 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); @@ -2274,6 +2301,9 @@ static SENSOR_DEVICE_ATTR(temp1_beep, S_IRUGO | S_IWUSR, 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); static ssize_t vrm_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -2436,21 +2466,19 @@ static umode_t it87_temp_is_visible(struct kobject *kobj, int i = index / 7; /* temperature index */ int a = index % 7; /* attribute index */ - if (index >= 21) { - i = index - 21 + 3; - a = 0; - } - if (!(data->has_temp & BIT(i))) return 0; + if (a && i >= data->num_temp_limit) + return 0; + if (a == 3) { if (get_temp_type(data, i) == 0) return 0; return attr->mode; } - if (a == 5 && !has_temp_offset(data)) + if (a == 5 && i >= data->num_temp_offset) return 0; if (a == 6 && !data->has_beep) @@ -2485,8 +2513,28 @@ static struct attribute *it87_attributes_temp[] = { &sensor_dev_attr_temp3_beep.dev_attr.attr, &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 }; -- 2.50.1 (Apple Git-155)