aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/hwmon/it8716
-rw-r--r--drivers/hwmon/Kconfig3
-rw-r--r--drivers/hwmon/it87.c39
3 files changed, 49 insertions, 9 deletions
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index 8386aadc0a82..c263740f0cba 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -30,6 +30,14 @@ Supported chips:
30 Prefix: 'it8728' 30 Prefix: 'it8728'
31 Addresses scanned: from Super I/O config space (8 I/O ports) 31 Addresses scanned: from Super I/O config space (8 I/O ports)
32 Datasheet: Not publicly available 32 Datasheet: Not publicly available
33 * IT8771E
34 Prefix: 'it8771'
35 Addresses scanned: from Super I/O config space (8 I/O ports)
36 Datasheet: Not publicly available
37 * IT8772E
38 Prefix: 'it8772'
39 Addresses scanned: from Super I/O config space (8 I/O ports)
40 Datasheet: Not publicly available
33 * IT8782F 41 * IT8782F
34 Prefix: 'it8782' 42 Prefix: 'it8782'
35 Addresses scanned: from Super I/O config space (8 I/O ports) 43 Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -83,8 +91,8 @@ Description
83----------- 91-----------
84 92
85This driver implements support for the IT8705F, IT8712F, IT8716F, 93This driver implements support for the IT8705F, IT8712F, IT8716F,
86IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8781F, IT8782F, 94IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, IT8772E,
87IT8783E/F, and SiS950 chips. 95IT8782F, IT8783E/F, and SiS950 chips.
88 96
89These chips are 'Super I/O chips', supporting floppy disks, infrared ports, 97These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
90joysticks and other miscellaneous stuff. For hardware monitoring, they 98joysticks and other miscellaneous stuff. For hardware monitoring, they
@@ -118,8 +126,8 @@ The IT8726F is just bit enhanced IT8716F with additional hardware
118for AMD power sequencing. Therefore the chip will appear as IT8716F 126for AMD power sequencing. Therefore the chip will appear as IT8716F
119to userspace applications. 127to userspace applications.
120 128
121The IT8728F is considered compatible with the IT8721F, until a datasheet 129The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F,
122becomes available (hopefully.) 130until a datasheet becomes available (hopefully.)
123 131
124Temperatures are measured in degrees Celsius. An alarm is triggered once 132Temperatures are measured in degrees Celsius. An alarm is triggered once
125when the Overtemperature Shutdown limit is crossed. 133when the Overtemperature Shutdown limit is crossed.
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index ef5757265f78..3588b2a0915c 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -506,7 +506,8 @@ config SENSORS_IT87
506 help 506 help
507 If you say yes here you get support for ITE IT8705F, IT8712F, 507 If you say yes here you get support for ITE IT8705F, IT8712F,
508 IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, 508 IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E,
509 IT8782F, and IT8783E/F sensor chips, and the SiS950 clone. 509 IT8771E, IT8772E, IT8782F, and IT8783E/F sensor chips, and the
510 SiS950 clone.
510 511
511 This driver can also be built as a module. If so, the module 512 This driver can also be built as a module. If so, the module
512 will be called it87. 513 will be called it87.
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 29632e849285..37fc980fde24 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -19,6 +19,8 @@
19 * IT8726F Super I/O chip w/LPC interface 19 * IT8726F Super I/O chip w/LPC interface
20 * IT8728F Super I/O chip w/LPC interface 20 * IT8728F Super I/O chip w/LPC interface
21 * IT8758E Super I/O chip w/LPC interface 21 * IT8758E Super I/O chip w/LPC interface
22 * IT8771E Super I/O chip w/LPC interface
23 * IT8772E Super I/O chip w/LPC interface
22 * IT8782F Super I/O chip w/LPC interface 24 * IT8782F Super I/O chip w/LPC interface
23 * IT8783E/F Super I/O chip w/LPC interface 25 * IT8783E/F Super I/O chip w/LPC interface
24 * Sis950 A clone of the IT8705F 26 * Sis950 A clone of the IT8705F
@@ -61,8 +63,8 @@
61 63
62#define DRVNAME "it87" 64#define DRVNAME "it87"
63 65
64enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8782, 66enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771,
65 it8783 }; 67 it8772, it8782, it8783 };
66 68
67static unsigned short force_id; 69static unsigned short force_id;
68module_param(force_id, ushort, 0); 70module_param(force_id, ushort, 0);
@@ -140,6 +142,8 @@ static inline void superio_exit(void)
140#define IT8721F_DEVID 0x8721 142#define IT8721F_DEVID 0x8721
141#define IT8726F_DEVID 0x8726 143#define IT8726F_DEVID 0x8726
142#define IT8728F_DEVID 0x8728 144#define IT8728F_DEVID 0x8728
145#define IT8771E_DEVID 0x8771
146#define IT8772E_DEVID 0x8772
143#define IT8782F_DEVID 0x8782 147#define IT8782F_DEVID 0x8782
144#define IT8783E_DEVID 0x8783 148#define IT8783E_DEVID 0x8783
145#define IT87_ACT_REG 0x30 149#define IT87_ACT_REG 0x30
@@ -281,6 +285,24 @@ static const struct it87_devices it87_devices[] = {
281 | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI, 285 | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI,
282 .peci_mask = 0x07, 286 .peci_mask = 0x07,
283 }, 287 },
288 [it8771] = {
289 .name = "it8771",
290 .features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
291 | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI,
292 /* PECI: guesswork */
293 /* 12mV ADC (OHM) */
294 /* 16 bit fans (OHM) */
295 .peci_mask = 0x07,
296 },
297 [it8772] = {
298 .name = "it8772",
299 .features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
300 | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI,
301 /* PECI (coreboot) */
302 /* 12mV ADC (HWSensors4, OHM) */
303 /* 16 bit fans (HWSensors4, OHM) */
304 .peci_mask = 0x07,
305 },
284 [it8782] = { 306 [it8782] = {
285 .name = "it8782", 307 .name = "it8782",
286 .features = FEAT_16BIT_FANS | FEAT_TEMP_OFFSET 308 .features = FEAT_16BIT_FANS | FEAT_TEMP_OFFSET
@@ -1708,6 +1730,12 @@ static int __init it87_find(unsigned short *address,
1708 case IT8728F_DEVID: 1730 case IT8728F_DEVID:
1709 sio_data->type = it8728; 1731 sio_data->type = it8728;
1710 break; 1732 break;
1733 case IT8771E_DEVID:
1734 sio_data->type = it8771;
1735 break;
1736 case IT8772E_DEVID:
1737 sio_data->type = it8772;
1738 break;
1711 case IT8782F_DEVID: 1739 case IT8782F_DEVID:
1712 sio_data->type = it8782; 1740 sio_data->type = it8782;
1713 break; 1741 break;
@@ -1825,10 +1853,11 @@ static int __init it87_find(unsigned short *address,
1825 1853
1826 reg = superio_inb(IT87_SIO_GPIO3_REG); 1854 reg = superio_inb(IT87_SIO_GPIO3_REG);
1827 if (sio_data->type == it8721 || sio_data->type == it8728 || 1855 if (sio_data->type == it8721 || sio_data->type == it8728 ||
1856 sio_data->type == it8771 || sio_data->type == it8772 ||
1828 sio_data->type == it8782) { 1857 sio_data->type == it8782) {
1829 /* 1858 /*
1830 * IT8721F/IT8758E, and IT8782F don't have VID pins 1859 * IT8721F/IT8758E, and IT8782F don't have VID pins
1831 * at all, not sure about the IT8728F. 1860 * at all, not sure about the IT8728F and compatibles.
1832 */ 1861 */
1833 sio_data->skip_vid = 1; 1862 sio_data->skip_vid = 1;
1834 } else { 1863 } else {
@@ -1882,7 +1911,9 @@ static int __init it87_find(unsigned short *address,
1882 if (reg & (1 << 0)) 1911 if (reg & (1 << 0))
1883 sio_data->internal |= (1 << 0); 1912 sio_data->internal |= (1 << 0);
1884 if ((reg & (1 << 1)) || sio_data->type == it8721 || 1913 if ((reg & (1 << 1)) || sio_data->type == it8721 ||
1885 sio_data->type == it8728) 1914 sio_data->type == it8728 ||
1915 sio_data->type == it8771 ||
1916 sio_data->type == it8772)
1886 sio_data->internal |= (1 << 1); 1917 sio_data->internal |= (1 << 1);
1887 1918
1888 /* 1919 /*