* [PATCH v2] hwmon: (it87) Add support for IT8607E
@ 2026-11-02 0:11 Ismael Ojeda Perez
2026-11-02 0:15 ` sashiko-bot
2026-11-02 15:12 ` Guenter Roeck
0 siblings, 2 replies; 3+ messages in thread
From: Ismael Ojeda Perez @ 2026-11-02 0:11 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck
Cc: Jonathan Corbet, linux-hwmon, linux-doc, linux-kernel
The IT8607E is the Super I/O of the Intel NUC6i3SYB and, according to
Intel's product specification, the NUC6i5SYB (BIOS SYSKLi35.86A). Its
environment controller is hidden from ACPI (HHMD._STA returns 0), so the
chip is only reachable through the LPC configuration ports, and the ACPI
resource check must be bypassed with ignore_resource_conflict=1.
No datasheet is available. The register layout was compared against the
IT8603E, and the BIOS fan setup (IT8607PeiInit and FanPei PEI modules of
SYSKLi35.86A.0071) was disassembled to confirm it programs the same
"newer autopwm" registers (0x68-0x6d for pwm2). Features are therefore
copied from the IT8603E.
Tested on a NUC6i3SYB (BIOS SYSKLi35.86A.0042, chip ID 0x8607, rev 2):
temperatures agree with coretemp, +3.3V reads 3.31 V, the 3VSB and VBAT
inputs read plausible values, fan2 tach and pwm2 respond to the
automatic-curve registers (start 74 C, full speed 92 C, as programmed by
the BIOS) and to manual mode, and the original values are restored.
The tachometer was not compared with an external tachometer and the
voltage scaling was not compared with a multimeter; the values above are
only cross-checked against coretemp and the expected rail voltages.
Signed-off-by: Ismael Ojeda Perez <iojedaperez@proton.me>
---
Changes in v2:
- Add .reg_pwm = IT87_REG_PWM and .num_temp_map = 4 to the it8607 entry,
copied from it8603. v1 left them out, which would dereference a NULL
reg_pwm on hwmon-next (reported by sashiko-bot, thank you).
- v1 had only been run-tested with the it87.c of 6.18. This version was
built from hwmon-next and run on the NUC6i3SYB: all 87 sysfs attributes
read without error, pwm2_enable and pwm2_auto_channels_temp written and
restored, no oops.
v1: https://lore.kernel.org/all/179357707375.834227.595814448085536071@proton.me/
Observation, no change needed: on this BIOS the registers 0x68-0x6d of
pwm2 read 81 4a 5c 59 06 02. With the newer-autopwm layout of it87
(base+0 fan off temperature, +1 start, +2 max, +3 start pwm, +4 slope,
+5 hysteresis) that is: fan off temperature -127 C (0x81, the lowest
value, so the fan is never switched off), start 74 C, max 92 C, start
pwm 89, slope 6, hysteresis 2. pwm2_auto_point1_temp therefore reads
-127000 and pwm2 reads 89, matching the registers.
Based on the hwmon-next branch of groeck/linux-staging.git (file contents
as of 2026-11-01). The Super I/O is found at 0x2e, chip ID 0x8607,
revision 2, hardware monitor at 0xa40; ACPI reserves that range, hence
ignore_resource_conflict=1. Is that acceptable, or would you prefer a DMI
quirk for the NUC6 boards?
Documentation/hwmon/it87.rst | 16 +++++++++++++++-
drivers/hwmon/Kconfig | 4 ++--
drivers/hwmon/it87.c | 19 +++++++++++++++++--
3 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/Documentation/hwmon/it87.rst b/Documentation/hwmon/it87.rst
index c33ba8a..17bfffb 100644
--- a/Documentation/hwmon/it87.rst
+++ b/Documentation/hwmon/it87.rst
@@ -19,6 +19,14 @@ Supported chips:
Datasheet: Not publicly available
+ * IT8607E
+
+ Prefix: 'it8607'
+
+ Addresses scanned: from Super I/O config space (8 I/O ports)
+
+ Datasheet: Not publicly available
+
* IT8620E
Prefix: 'it8620'
@@ -243,7 +251,7 @@ motherboard models.
Description
-----------
-This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E,
+This driver implements support for the IT8603E, IT8607E, IT8620E, IT8623E, IT8628E,
IT8689E, IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F,
IT8728F, IT8732F, IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F,
IT8786E, IT8790E, IT8792E/IT8795E, IT87952E and SiS950 chips.
@@ -287,6 +295,12 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode
of the fan is not supported (value 0 of pwmX_enable).
+The IT8607E is found on the Intel NUC6i3SYB and NUC6i5SYB boards. The hardware
+monitoring part is treated as compatible with the IT8603E (16-bit fans, newer
+autopwm registers) because no datasheet is available. The BIOS keeps the
+environment controller hidden from ACPI, so the driver can only be loaded
+with ``ignore_resource_conflict=1``.
+
The IT8620E and IT8628E are custom designs, hardware monitoring part is similar
to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans.
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 18c682e..bc6ddff 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -952,8 +952,8 @@ config SENSORS_IT87
If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F,
IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8758E,
IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E,
- IT8603E, IT8620E, IT8623E, IT8628E, and IT8689E sensor chips, and
- the SiS950 clone.
+ IT8603E, IT8607E, IT8620E, IT8623E, IT8628E, and IT8689E sensor chips,
+ and the SiS950 clone.
This driver can also be built as a module. If so, the module
will be called it87.
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 2757d42..14800a5 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -12,6 +12,7 @@
* similar parts. The other devices are supported by different drivers.
*
* Supports: IT8603E Super I/O chip w/LPC interface
+ * IT8607E Super I/O chip w/LPC interface
* IT8620E Super I/O chip w/LPC interface
* IT8622E Super I/O chip w/LPC interface
* IT8623E Super I/O chip w/LPC interface
@@ -66,7 +67,7 @@
enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732,
it8771, it8772, it8781, it8782, it8783, it8786, it8790,
- it8792, it8603, it8613, it8620, it8622, it8628, it8689, it87952 };
+ it8792, it8603, it8607, it8613, it8620, it8622, it8628, it8689, it87952 };
static struct platform_device *it87_pdev[2];
@@ -160,6 +161,7 @@ static inline void superio_exit(int ioreg, bool noexit)
#define IT8786E_DEVID 0x8786
#define IT8790E_DEVID 0x8790
#define IT8603E_DEVID 0x8603
+#define IT8607E_DEVID 0x8607
#define IT8613E_DEVID 0x8613
#define IT8620E_DEVID 0x8620
#define IT8622E_DEVID 0x8622
@@ -530,6 +532,16 @@ static const struct it87_devices it87_devices[] = {
.num_temp_map = 6,
.peci_mask = 0x07,
},
+ [it8607] = {
+ .name = "it8607",
+ .model = "IT8607E",
+ .features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
+ | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_IN7_INTERNAL
+ | FEAT_AVCC3 | FEAT_PWM_FREQ2,
+ .reg_pwm = IT87_REG_PWM,
+ .num_temp_map = 4,
+ .peci_mask = 0x07,
+ },
[it8620] = {
.name = "it8620",
.model = "IT8620E",
@@ -2941,6 +2953,9 @@ static int __init it87_find(int sioaddr, unsigned short *address,
case IT8613E_DEVID:
sio_data->type = it8613;
break;
+ case IT8607E_DEVID:
+ sio_data->type = it8607;
+ break;
case IT8620E_DEVID:
sio_data->type = it8620;
break;
@@ -3095,7 +3110,7 @@ static int __init it87_find(int sioaddr, unsigned short *address,
sio_data->beep_pin = superio_inb(sioaddr,
IT87_SIO_BEEP_PIN_REG) & 0x3f;
- } else if (sio_data->type == it8603) {
+ } else if (sio_data->type == it8603 || sio_data->type == it8607) {
int reg27, reg29;
superio_select(sioaddr, GPIO);
--
2.56.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] hwmon: (it87) Add support for IT8607E
2026-11-02 0:11 [PATCH v2] hwmon: (it87) Add support for IT8607E Ismael Ojeda Perez
@ 2026-11-02 0:15 ` sashiko-bot
2026-11-02 15:12 ` Guenter Roeck
1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-11-02 0:15 UTC (permalink / raw)
To: Ismael Ojeda Perez; +Cc: linux-hwmon
> The IT8607E is the Super I/O of the Intel NUC6i3SYB and, according to
> Intel's product specification, the NUC6i5SYB (BIOS SYSKLi35.86A). Its
> environment controller is hidden from ACPI (HHMD._STA returns 0), so the
> chip is only reachable through the LPC configuration ports, and the ACPI
> resource check must be bypassed with ignore_resource_conflict=1.
>
> No datasheet is available. The register layout was compared against the
> IT8603E, and the BIOS fan setup (IT8607PeiInit and FanPei PEI modules of
> SYSKLi35.86A.0071) was disassembled to confirm it programs the same
> "newer autopwm" registers (0x68-0x6d for pwm2). Features are therefore
> copied from the IT8603E.
>
> Tested on a NUC6i3SYB (BIOS SYSKLi35.86A.0042, chip ID 0x8607, rev 2):
> temperatures agree with coretemp, +3.3V reads 3.31 V, the 3VSB and VBAT
> inputs read plausible values, fan2 tach and pwm2 respond to the
> automatic-curve registers (start 74 C, full speed 92 C, as programmed by
> the BIOS) and to manual mode, and the original values are restored.
>
> The tachometer was not compared with an external tachometer and the
> voltage scaling was not compared with a multimeter; the values above are
> only cross-checked against coretemp and the expected rail voltages.
>
> Signed-off-by: Ismael Ojeda Perez <iojedaperez@proton.me>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/179357826986.881874.2370184949108951928@proton.me?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] hwmon: (it87) Add support for IT8607E
2026-11-02 0:11 [PATCH v2] hwmon: (it87) Add support for IT8607E Ismael Ojeda Perez
2026-11-02 0:15 ` sashiko-bot
@ 2026-11-02 15:12 ` Guenter Roeck
1 sibling, 0 replies; 3+ messages in thread
From: Guenter Roeck @ 2026-11-02 15:12 UTC (permalink / raw)
To: Ismael Ojeda Perez
Cc: Jean Delvare, Jonathan Corbet, linux-hwmon, linux-doc,
linux-kernel
On Mon, Nov 02, 2026 at 12:11:12AM +0000, Ismael Ojeda Perez wrote:
> The IT8607E is the Super I/O of the Intel NUC6i3SYB and, according to
> Intel's product specification, the NUC6i5SYB (BIOS SYSKLi35.86A). Its
> environment controller is hidden from ACPI (HHMD._STA returns 0), so the
> chip is only reachable through the LPC configuration ports, and the ACPI
> resource check must be bypassed with ignore_resource_conflict=1.
>
> No datasheet is available. The register layout was compared against the
> IT8603E, and the BIOS fan setup (IT8607PeiInit and FanPei PEI modules of
> SYSKLi35.86A.0071) was disassembled to confirm it programs the same
> "newer autopwm" registers (0x68-0x6d for pwm2). Features are therefore
> copied from the IT8603E.
>
> Tested on a NUC6i3SYB (BIOS SYSKLi35.86A.0042, chip ID 0x8607, rev 2):
> temperatures agree with coretemp, +3.3V reads 3.31 V, the 3VSB and VBAT
> inputs read plausible values, fan2 tach and pwm2 respond to the
> automatic-curve registers (start 74 C, full speed 92 C, as programmed by
> the BIOS) and to manual mode, and the original values are restored.
>
> The tachometer was not compared with an external tachometer and the
> voltage scaling was not compared with a multimeter; the values above are
> only cross-checked against coretemp and the expected rail voltages.
>
> Signed-off-by: Ismael Ojeda Perez <iojedaperez@proton.me>
Applied.
> ---
> Changes in v2:
> - Add .reg_pwm = IT87_REG_PWM and .num_temp_map = 4 to the it8607 entry,
> copied from it8603. v1 left them out, which would dereference a NULL
> reg_pwm on hwmon-next (reported by sashiko-bot, thank you).
> - v1 had only been run-tested with the it87.c of 6.18. This version was
> built from hwmon-next and run on the NUC6i3SYB: all 87 sysfs attributes
> read without error, pwm2_enable and pwm2_auto_channels_temp written and
> restored, no oops.
>
> v1: https://lore.kernel.org/all/179357707375.834227.595814448085536071@proton.me/
>
> Observation, no change needed: on this BIOS the registers 0x68-0x6d of
> pwm2 read 81 4a 5c 59 06 02. With the newer-autopwm layout of it87
> (base+0 fan off temperature, +1 start, +2 max, +3 start pwm, +4 slope,
> +5 hysteresis) that is: fan off temperature -127 C (0x81, the lowest
> value, so the fan is never switched off), start 74 C, max 92 C, start
> pwm 89, slope 6, hysteresis 2. pwm2_auto_point1_temp therefore reads
> -127000 and pwm2 reads 89, matching the registers.
>
> Based on the hwmon-next branch of groeck/linux-staging.git (file contents
> as of 2026-11-01). The Super I/O is found at 0x2e, chip ID 0x8607,
> revision 2, hardware monitor at 0xa40; ACPI reserves that range, hence
> ignore_resource_conflict=1. Is that acceptable, or would you prefer a DMI
> quirk for the NUC6 boards?
No quirk needed, it is up to the user to accept the risk.
Guenter
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-02 15:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 0:11 [PATCH v2] hwmon: (it87) Add support for IT8607E Ismael Ojeda Perez
2026-11-02 0:15 ` sashiko-bot
2026-11-02 15:12 ` Guenter Roeck
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.