All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Mark <android606@gmail.com>
To: pali@kernel.org
Cc: linux@roeck-us.net, linux-hwmon@vger.kernel.org,
	linux-kernel@vger.kernel.org, Andrew Mark <android606@gmail.com>
Subject: [PATCH] hwmon: (dell-smm) Extend fan support to 5 fans
Date: Sat, 10 Jan 2026 03:47:32 +0000	[thread overview]
Message-ID: <20260110034732.236285-1-android606@gmail.com> (raw)

Dell Precision Tower workstations have 5 fan connectors, but the
driver was limited to 4 fans after commit dbcfcb239b3b ("hwmon:
(dell-smm) Increment the number of fans").

This patch increases DELL_SMM_NO_FANS to 5 and adds the necessary
hwmon channel info for the fifth fan and its PWM control.

Without this patch, the PCIe/GPU cooling fan (fan 5) is not
controllable, which can lead to overheating on systems with
high-power fanless GPUs that depend on chassis cooling.

Also adds a DMI quirk for Precision Tower 5810 to provide accurate
fan labels, as the BIOS reports generic types for these fans.

Tested on Dell Precision Tower 5810 (BIOS A34) with all 5 fans
responding correctly to PWM control.

Fan mapping for Precision Tower 5810:
- fan0: CPU heatsink
- fan1: Second CPU (dual-CPU systems only)
- fan2: Right DIMM bank
- fan3: Left DIMM bank
- fan4: PCIe/GPU cooling

Signed-off-by: Andrew Mark <android606@gmail.com>
---
 drivers/hwmon/dell-smm-hwmon.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
index 6040a8940..b112e6fbc 100644
--- a/drivers/hwmon/dell-smm-hwmon.c
+++ b/drivers/hwmon/dell-smm-hwmon.c
@@ -74,7 +74,7 @@
 #define DELL_SMM_LEGACY_EXECUTE	0x1
 
 #define DELL_SMM_NO_TEMP	10
-#define DELL_SMM_NO_FANS	4
+#define DELL_SMM_NO_FANS	5
 
 /* limit fan multiplier to avoid overflow */
 #define DELL_SMM_MAX_FAN_MULT (INT_MAX / U16_MAX)
@@ -175,6 +175,14 @@ static const char * const docking_labels[] = {
 	"Docking Other Fan",
 };
 
+static const char * const precision_tower_5810_labels[] = {
+	"CPU Fan",
+	"CPU Fan 2",
+	"Right DIMM Fan",
+	"Left DIMM Fan",
+	"PCIe Fan",
+};
+
 static inline const char __init *i8k_get_dmi_data(int field)
 {
 	const char *dmi_data = dmi_get_system_info(field);
@@ -991,6 +999,12 @@ static const char *dell_smm_fan_label(struct dell_smm_data *data, int channel)
 	if (type < 0)
 		return ERR_PTR(type);
 
+	if (dmi_match(DMI_PRODUCT_NAME, "Precision Tower 5810")) {
+		if (channel < ARRAY_SIZE(precision_tower_5810_labels))
+			return precision_tower_5810_labels[channel];
+		return "Unknown Fan";
+	}
+
 	if (type & 0x10) {
 		dock = true;
 		type &= 0x0F;
@@ -1129,12 +1143,15 @@ static const struct hwmon_channel_info * const dell_smm_info[] = {
 			   HWMON_F_INPUT | HWMON_F_LABEL | HWMON_F_MIN | HWMON_F_MAX |
 			   HWMON_F_TARGET,
 			   HWMON_F_INPUT | HWMON_F_LABEL | HWMON_F_MIN | HWMON_F_MAX |
+			   HWMON_F_TARGET,
+			   HWMON_F_INPUT | HWMON_F_LABEL | HWMON_F_MIN | HWMON_F_MAX |
 			   HWMON_F_TARGET
 			   ),
 	HWMON_CHANNEL_INFO(pwm,
 			   HWMON_PWM_INPUT | HWMON_PWM_ENABLE,
 			   HWMON_PWM_INPUT | HWMON_PWM_ENABLE,
 			   HWMON_PWM_INPUT | HWMON_PWM_ENABLE,
+			   HWMON_PWM_INPUT | HWMON_PWM_ENABLE,
 			   HWMON_PWM_INPUT | HWMON_PWM_ENABLE
 			   ),
 	NULL
-- 
2.43.0


             reply	other threads:[~2026-01-10  3:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-10  3:47 Andrew Mark [this message]
2026-01-10 12:14 ` [PATCH] hwmon: (dell-smm) Extend fan support to 5 fans Armin Wolf
2026-01-14  2:54 ` [PATCH v2] " Andrew Mark
2026-01-14  9:49   ` David Laight

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260110034732.236285-1-android606@gmail.com \
    --to=android606@gmail.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=pali@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.