aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/hwmon/it8722
-rw-r--r--drivers/hwmon/Kconfig4
-rw-r--r--drivers/hwmon/it87.c32
3 files changed, 39 insertions, 19 deletions
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index fe80e9adebfa..8e192fff10f4 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -42,6 +42,10 @@ Supported chips:
42 Prefix: 'it8772' 42 Prefix: 'it8772'
43 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)
44 Datasheet: Not publicly available 44 Datasheet: Not publicly available
45 * IT8781F
46 Prefix: 'it8781'
47 Addresses scanned: from Super I/O config space (8 I/O ports)
48 Datasheet: Not publicly available
45 * IT8782F 49 * IT8782F
46 Prefix: 'it8782' 50 Prefix: 'it8782'
47 Addresses scanned: from Super I/O config space (8 I/O ports) 51 Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -96,7 +100,7 @@ Description
96 100
97This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F, 101This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F,
98IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, 102IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E,
99IT8772E, IT8782F, IT8783E/F, and SiS950 chips. 103IT8772E, IT8781F, IT8782F, IT8783E/F, and SiS950 chips.
100 104
101These chips are 'Super I/O chips', supporting floppy disks, infrared ports, 105These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
102joysticks and other miscellaneous stuff. For hardware monitoring, they 106joysticks and other miscellaneous stuff. For hardware monitoring, they
@@ -120,11 +124,11 @@ The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions
120have support for 2 additional fans. The additional fans are supported by the 124have support for 2 additional fans. The additional fans are supported by the
121driver. 125driver.
122 126
123The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8782F, IT8783E/F, and late 127The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8781F, IT8782F, IT8783E/F,
124IT8712F and IT8705F also have optional 16-bit tachometer counters for fans 1 to 128and late IT8712F and IT8705F also have optional 16-bit tachometer counters
1253. This is better (no more fan clock divider mess) but not compatible with the 129for fans 1 to 3. This is better (no more fan clock divider mess) but not
126older chips and revisions. The 16-bit tachometer mode is enabled by the driver 130compatible with the older chips and revisions. The 16-bit tachometer mode
127when one of the above chips is detected. 131is enabled by the driver when one of the above chips is detected.
128 132
129The IT8726F is just bit enhanced IT8716F with additional hardware 133The IT8726F is just bit enhanced IT8716F with additional hardware
130for AMD power sequencing. Therefore the chip will appear as IT8716F 134for AMD power sequencing. Therefore the chip will appear as IT8716F
@@ -156,10 +160,10 @@ inputs can measure voltages between 0 and 4.08 volts, with a resolution of
1560.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The 1600.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The
157battery voltage in8 does not have limit registers. 161battery voltage in8 does not have limit registers.
158 162
159On the IT8603E, IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs 163On the IT8603E, IT8721F/IT8758E, IT8781F, IT8782F, and IT8783E/F, some
160are internal and scaled inside the chip: 164voltage inputs are internal and scaled inside the chip:
161* in3 (optional) 165* in3 (optional)
162* in7 (optional for IT8782F and IT8783E/F) 166* in7 (optional for IT8781F, IT8782F, and IT8783E/F)
163* in8 (always) 167* in8 (always)
164* in9 (relevant for IT8603E only) 168* in9 (relevant for IT8603E only)
165The driver handles this transparently so user-space doesn't have to care. 169The driver handles this transparently so user-space doesn't have to care.
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 110fade9cb74..f5fc54e24fea 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -599,8 +599,8 @@ config SENSORS_IT87
599 help 599 help
600 If you say yes here you get support for ITE IT8705F, IT8712F, 600 If you say yes here you get support for ITE IT8705F, IT8712F,
601 IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, 601 IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E,
602 IT8771E, IT8772E, IT8782F, IT8783E/F and IT8603E sensor chips, 602 IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F and IT8603E
603 and the SiS950 clone. 603 sensor chips, and the SiS950 clone.
604 604
605 This driver can also be built as a module. If so, the module 605 This driver can also be built as a module. If so, the module
606 will be called it87. 606 will be called it87.
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 409116c52cc5..ed25e4bab978 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -23,6 +23,7 @@
23 * IT8758E Super I/O chip w/LPC interface 23 * IT8758E Super I/O chip w/LPC interface
24 * IT8771E Super I/O chip w/LPC interface 24 * IT8771E Super I/O chip w/LPC interface
25 * IT8772E Super I/O chip w/LPC interface 25 * IT8772E Super I/O chip w/LPC interface
26 * IT8781F Super I/O chip w/LPC interface
26 * IT8782F Super I/O chip w/LPC interface 27 * IT8782F Super I/O chip w/LPC interface
27 * IT8783E/F Super I/O chip w/LPC interface 28 * IT8783E/F Super I/O chip w/LPC interface
28 * Sis950 A clone of the IT8705F 29 * Sis950 A clone of the IT8705F
@@ -66,7 +67,7 @@
66#define DRVNAME "it87" 67#define DRVNAME "it87"
67 68
68enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, 69enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771,
69 it8772, it8782, it8783, it8603 }; 70 it8772, it8781, it8782, it8783, it8603 };
70 71
71static unsigned short force_id; 72static unsigned short force_id;
72module_param(force_id, ushort, 0); 73module_param(force_id, ushort, 0);
@@ -146,6 +147,7 @@ static inline void superio_exit(void)
146#define IT8728F_DEVID 0x8728 147#define IT8728F_DEVID 0x8728
147#define IT8771E_DEVID 0x8771 148#define IT8771E_DEVID 0x8771
148#define IT8772E_DEVID 0x8772 149#define IT8772E_DEVID 0x8772
150#define IT8781F_DEVID 0x8781
149#define IT8782F_DEVID 0x8782 151#define IT8782F_DEVID 0x8782
150#define IT8783E_DEVID 0x8783 152#define IT8783E_DEVID 0x8783
151#define IT8603E_DEVID 0x8603 153#define IT8603E_DEVID 0x8603
@@ -307,6 +309,12 @@ static const struct it87_devices it87_devices[] = {
307 /* 16 bit fans (HWSensors4, OHM) */ 309 /* 16 bit fans (HWSensors4, OHM) */
308 .peci_mask = 0x07, 310 .peci_mask = 0x07,
309 }, 311 },
312 [it8781] = {
313 .name = "it8781",
314 .features = FEAT_16BIT_FANS | FEAT_TEMP_OFFSET
315 | FEAT_TEMP_OLD_PECI,
316 .old_peci_mask = 0x4,
317 },
310 [it8782] = { 318 [it8782] = {
311 .name = "it8782", 319 .name = "it8782",
312 .features = FEAT_16BIT_FANS | FEAT_TEMP_OFFSET 320 .features = FEAT_16BIT_FANS | FEAT_TEMP_OFFSET
@@ -1761,6 +1769,9 @@ static int __init it87_find(unsigned short *address,
1761 case IT8772E_DEVID: 1769 case IT8772E_DEVID:
1762 sio_data->type = it8772; 1770 sio_data->type = it8772;
1763 break; 1771 break;
1772 case IT8781F_DEVID:
1773 sio_data->type = it8781;
1774 break;
1764 case IT8782F_DEVID: 1775 case IT8782F_DEVID:
1765 sio_data->type = it8782; 1776 sio_data->type = it8782;
1766 break; 1777 break;
@@ -1919,10 +1930,11 @@ static int __init it87_find(unsigned short *address,
1919 reg = superio_inb(IT87_SIO_GPIO3_REG); 1930 reg = superio_inb(IT87_SIO_GPIO3_REG);
1920 if (sio_data->type == it8721 || sio_data->type == it8728 || 1931 if (sio_data->type == it8721 || sio_data->type == it8728 ||
1921 sio_data->type == it8771 || sio_data->type == it8772 || 1932 sio_data->type == it8771 || sio_data->type == it8772 ||
1922 sio_data->type == it8782) { 1933 sio_data->type == it8781 || sio_data->type == it8782) {
1923 /* 1934 /*
1924 * IT8721F/IT8758E, and IT8782F don't have VID pins 1935 * IT8721F/IT8758E, IT8728F, IT8772F, IT8781F, and
1925 * at all, not sure about the IT8728F and compatibles. 1936 * IT8782F don't have VID pins at all, not sure about
1937 * the IT8771F.
1926 */ 1938 */
1927 sio_data->skip_vid = 1; 1939 sio_data->skip_vid = 1;
1928 } else { 1940 } else {
@@ -2147,7 +2159,8 @@ static int it87_probe(struct platform_device *pdev)
2147 data->in_scaled |= (1 << 8); /* in8 is Vbat */ 2159 data->in_scaled |= (1 << 8); /* in8 is Vbat */
2148 if (sio_data->internal & (1 << 3)) 2160 if (sio_data->internal & (1 << 3))
2149 data->in_scaled |= (1 << 9); /* in9 is AVCC */ 2161 data->in_scaled |= (1 << 9); /* in9 is AVCC */
2150 } else if (sio_data->type == it8782 || sio_data->type == it8783) { 2162 } else if (sio_data->type == it8781 || sio_data->type == it8782 ||
2163 sio_data->type == it8783) {
2151 if (sio_data->internal & (1 << 0)) 2164 if (sio_data->internal & (1 << 0))
2152 data->in_scaled |= (1 << 3); /* in3 is VCC5V */ 2165 data->in_scaled |= (1 << 3); /* in3 is VCC5V */
2153 if (sio_data->internal & (1 << 1)) 2166 if (sio_data->internal & (1 << 1))
@@ -2460,9 +2473,12 @@ static void it87_init_device(struct platform_device *pdev)
2460 it87_write_value(data, IT87_REG_FAN_16BIT, 2473 it87_write_value(data, IT87_REG_FAN_16BIT,
2461 tmp | 0x07); 2474 tmp | 0x07);
2462 } 2475 }
2463 /* IT8705F, IT8782F, and IT8783E/F only support three fans. */ 2476 /*
2464 if (data->type != it87 && data->type != it8782 && 2477 * IT8705F, IT8781F, IT8782F, and IT8783E/F only support
2465 data->type != it8783) { 2478 * three fans.
2479 */
2480 if (data->type != it87 && data->type != it8781 &&
2481 data->type != it8782 && data->type != it8783) {
2466 if (tmp & (1 << 4)) 2482 if (tmp & (1 << 4))
2467 data->has_fan |= (1 << 3); /* fan4 enabled */ 2483 data->has_fan |= (1 << 3); /* fan4 enabled */
2468 if (tmp & (1 << 5)) 2484 if (tmp & (1 << 5))