Skip to contentSkip to conversation

sensors-detect: Fix the driver for Nuvoton W83677HG-I

PATCH Applied Jean Delvare 2 participants 2 messages May 12, 2020 – May 13, 2020

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 sensors-detect: Fix the driver for Nuvoton W83677HG-I

Originally, support for the Nuvoton W83677HG-I and derivatives was first added to the w83627ehf driver, so that's the driver recommended by sensors-detect. Later, support for the same device was added to the nct6775 driver. In kernel v5.6, support was removed from the w83627ehf driver to get rid of the duplicate code.

So sensors-detect should now point users of this device to the nct6775 driver. We can't do that for very old kernels though, as this driver did not exist back then. I chose v3.10 for the cut-over, as this is when support for the Nuvoton W83677HG-I was finalized in the nct6775 driver, at least according to git log.

---
Changes since v1:
* Enable run-time driver decision for Super-I/O devices

 prog/detect/sensors-detect |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
prog/detect/sensors-detect +4 -2
@@ -2273,7 +2273,7 @@ use constant FEAT_SMBUS	=> (1 << 7);
 		features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
 	}, {
 		name => "Nuvoton W83677HG-I (NCT5572D/NCT6771F/NCT6772F/NCT6775F) Super IO Sensors",
-		driver => "w83627ehf",
+		driver => sub { kernel_version_at_least(3, 10, 0) ? "nct6775" : "w83627ehf" },
 		devid => 0xB470,
 		devid_mask => 0xFFF0,
 		logdev => 0x0b,
@@ -4574,7 +4574,9 @@ sub scan_cpu
 sub chip_special_cases
 {
 	# Some chip to driver mappings depend on the environment
-	foreach my $chip (@chip_ids) {
+	foreach my $chip (@chip_ids, @superio_ids_natsemi, @superio_ids_smsc,
+			  @superio_ids_smsc_ns, @superio_ids_winbond,
+			  @superio_ids_ite) {
 		if (ref($chip->{driver}) eq 'CODE') {
 			$chip->{driver} = $chip->{driver}->();
 		}
Signature · 2 lines
Jean Delvare
SUSE L3 Support
#1 lore raw
Quoted 46 lines · Jean Delvare

Originally, support for the Nuvoton W83677HG-I and derivatives was first added to the w83627ehf driver, so that's the driver recommended by sensors-detect. Later, support for the same device was added to the nct6775 driver. In kernel v5.6, support was removed from the w83627ehf driver to get rid of the duplicate code.

So sensors-detect should now point users of this device to the nct6775 driver. We can't do that for very old kernels though, as this driver did not exist back then. I chose v3.10 for the cut-over, as this is when support for the Nuvoton W83677HG-I was finalized in the nct6775 driver, at least according to git log.

---
Changes since v1:
* Enable run-time driver decision for Super-I/O devices

 prog/detect/sensors-detect |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
prog/detect/sensors-detect +4 -2
@@ -2273,7 +2273,7 @@ use constant FEAT_SMBUS	=> (1 << 7);
 		features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
 	}, {
 		name => "Nuvoton W83677HG-I (NCT5572D/NCT6771F/NCT6772F/NCT6775F) Super IO Sensors",
-		driver => "w83627ehf",
+		driver => sub { kernel_version_at_least(3, 10, 0) ? "nct6775" : "w83627ehf" },
 		devid => 0xB470,
 		devid_mask => 0xFFF0,
 		logdev => 0x0b,
@@ -4574,7 +4574,9 @@ sub scan_cpu
 sub chip_special_cases
 {
 	# Some chip to driver mappings depend on the environment
-	foreach my $chip (@chip_ids) {
+	foreach my $chip (@chip_ids, @superio_ids_natsemi, @superio_ids_smsc,
+			  @superio_ids_smsc_ns, @superio_ids_winbond,
+			  @superio_ids_ite) {
 		if (ref($chip->{driver}) eq 'CODE') {
 			$chip->{driver} = $chip->{driver}->();
 		}
Signature · 3 lines
-- 
Jean Delvare
SUSE L3 Support

Hi,

applied. Thanks!

Ondřej Lysoněk