hwmon: (it87) Add support for IT8790E

IT8790E is a super-IO chip with three fan tachometers. It is mostly
compatible to IT8728F, but only supports three fan tachometers
instead of five.

Reviewed-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Guenter Roeck 2015-03-25 23:26:28 -07:00
parent 7f5726c39a
commit 4ee07157d6
3 changed files with 25 additions and 6 deletions

View File

@ -58,6 +58,10 @@ Supported chips:
Prefix: 'it8786' Prefix: 'it8786'
Addresses scanned: from Super I/O config space (8 I/O ports) Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available Datasheet: Not publicly available
* IT8790E
Prefix: 'it8790'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* SiS950 [clone of IT8705F] * SiS950 [clone of IT8705F]
Prefix: 'it87' Prefix: 'it87'
Addresses scanned: from Super I/O config space (8 I/O ports) Addresses scanned: from Super I/O config space (8 I/O ports)
@ -102,9 +106,10 @@ motherboard models.
Description Description
----------- -----------
This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F, This driver implements support for the IT8603E, IT8623E, IT8705F,
IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E,
IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, and SiS950 chips. IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and SiS950
chips.
These chips are 'Super I/O chips', supporting floppy disks, infrared ports, These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
joysticks and other miscellaneous stuff. For hardware monitoring, they joysticks and other miscellaneous stuff. For hardware monitoring, they
@ -145,6 +150,8 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
IT8728F. It only supports 16-bit fan mode, the full speed mode of the IT8728F. It only supports 16-bit fan mode, the full speed mode of the
fan is not supported (value 0 of pwmX_enable). fan is not supported (value 0 of pwmX_enable).
The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled.
Temperatures are measured in degrees Celsius. An alarm is triggered once Temperatures are measured in degrees Celsius. An alarm is triggered once
when the Overtemperature Shutdown limit is crossed. when the Overtemperature Shutdown limit is crossed.

View File

@ -600,8 +600,8 @@ config SENSORS_IT87
help help
If you say yes here you get support for ITE IT8705F, IT8712F, If you say yes here you get support for ITE IT8705F, IT8712F,
IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E,
IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E,
and IT8603E sensor chips, and the SiS950 clone. IT8603E, and IT8623E sensor chips, and the SiS950 clone.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called it87. will be called it87.

View File

@ -27,6 +27,7 @@
* IT8782F Super I/O chip w/LPC interface * IT8782F Super I/O chip w/LPC interface
* IT8783E/F Super I/O chip w/LPC interface * IT8783E/F Super I/O chip w/LPC interface
* IT8786E Super I/O chip w/LPC interface * IT8786E Super I/O chip w/LPC interface
* IT8790E Super I/O chip w/LPC interface
* Sis950 A clone of the IT8705F * Sis950 A clone of the IT8705F
* *
* Copyright (C) 2001 Chris Gauthron * Copyright (C) 2001 Chris Gauthron
@ -68,7 +69,7 @@
#define DRVNAME "it87" #define DRVNAME "it87"
enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771,
it8772, it8781, it8782, it8783, it8786, it8603 }; it8772, it8781, it8782, it8783, it8786, it8790, it8603 };
static unsigned short force_id; static unsigned short force_id;
module_param(force_id, ushort, 0); module_param(force_id, ushort, 0);
@ -152,6 +153,7 @@ static inline void superio_exit(void)
#define IT8782F_DEVID 0x8782 #define IT8782F_DEVID 0x8782
#define IT8783E_DEVID 0x8783 #define IT8783E_DEVID 0x8783
#define IT8786E_DEVID 0x8786 #define IT8786E_DEVID 0x8786
#define IT8790E_DEVID 0x8790
#define IT8603E_DEVID 0x8603 #define IT8603E_DEVID 0x8603
#define IT8623E_DEVID 0x8623 #define IT8623E_DEVID 0x8623
#define IT87_ACT_REG 0x30 #define IT87_ACT_REG 0x30
@ -359,6 +361,13 @@ static const struct it87_devices it87_devices[] = {
| FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_IN7_INTERNAL, | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_IN7_INTERNAL,
.peci_mask = 0x07, .peci_mask = 0x07,
}, },
[it8790] = {
.name = "it8790",
.suffix = "E",
.features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
| FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_IN7_INTERNAL,
.peci_mask = 0x07,
},
[it8603] = { [it8603] = {
.name = "it8603", .name = "it8603",
.suffix = "E", .suffix = "E",
@ -1834,6 +1843,9 @@ static int __init it87_find(unsigned short *address,
case IT8786E_DEVID: case IT8786E_DEVID:
sio_data->type = it8786; sio_data->type = it8786;
break; break;
case IT8790E_DEVID:
sio_data->type = it8790;
break;
case IT8603E_DEVID: case IT8603E_DEVID:
case IT8623E_DEVID: case IT8623E_DEVID:
sio_data->type = it8603; sio_data->type = it8603;