diff options
-rw-r--r-- | Documentation/hwmon/it87 | 22 | ||||
-rw-r--r-- | drivers/hwmon/Kconfig | 4 | ||||
-rw-r--r-- | drivers/hwmon/it87.c | 32 |
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 | ||
97 | This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F, | 101 | This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F, |
98 | IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, | 102 | IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, |
99 | IT8772E, IT8782F, IT8783E/F, and SiS950 chips. | 103 | IT8772E, IT8781F, IT8782F, IT8783E/F, and SiS950 chips. |
100 | 104 | ||
101 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, | 105 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, |
102 | joysticks and other miscellaneous stuff. For hardware monitoring, they | 106 | joysticks and other miscellaneous stuff. For hardware monitoring, they |
@@ -120,11 +124,11 @@ The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions | |||
120 | have support for 2 additional fans. The additional fans are supported by the | 124 | have support for 2 additional fans. The additional fans are supported by the |
121 | driver. | 125 | driver. |
122 | 126 | ||
123 | The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8782F, IT8783E/F, and late | 127 | The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8781F, IT8782F, IT8783E/F, |
124 | IT8712F and IT8705F also have optional 16-bit tachometer counters for fans 1 to | 128 | and late IT8712F and IT8705F also have optional 16-bit tachometer counters |
125 | 3. This is better (no more fan clock divider mess) but not compatible with the | 129 | for fans 1 to 3. This is better (no more fan clock divider mess) but not |
126 | older chips and revisions. The 16-bit tachometer mode is enabled by the driver | 130 | compatible with the older chips and revisions. The 16-bit tachometer mode |
127 | when one of the above chips is detected. | 131 | is enabled by the driver when one of the above chips is detected. |
128 | 132 | ||
129 | The IT8726F is just bit enhanced IT8716F with additional hardware | 133 | The IT8726F is just bit enhanced IT8716F with additional hardware |
130 | for AMD power sequencing. Therefore the chip will appear as IT8716F | 134 | for 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 | |||
156 | 0.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The | 160 | 0.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The |
157 | battery voltage in8 does not have limit registers. | 161 | battery voltage in8 does not have limit registers. |
158 | 162 | ||
159 | On the IT8603E, IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs | 163 | On the IT8603E, IT8721F/IT8758E, IT8781F, IT8782F, and IT8783E/F, some |
160 | are internal and scaled inside the chip: | 164 | voltage 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) |
165 | The driver handles this transparently so user-space doesn't have to care. | 169 | The 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 | ||
68 | enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, | 69 | enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, |
69 | it8772, it8782, it8783, it8603 }; | 70 | it8772, it8781, it8782, it8783, it8603 }; |
70 | 71 | ||
71 | static unsigned short force_id; | 72 | static unsigned short force_id; |
72 | module_param(force_id, ushort, 0); | 73 | module_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)) |