diff options
author | Guenter Roeck <linux@roeck-us.net> | 2016-01-18 03:35:58 -0500 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2016-04-19 09:32:38 -0400 |
commit | 71a9c23246fe68954f87787a4e6c1aa22565c326 (patch) | |
tree | f5c4b049c13a7019caa6f71ebb443058e2d694d5 | |
parent | 0624d861983c2cb1884ea3bafc1c534c7d2348b8 (diff) |
hwmon: (it87) Add support for IT8628E
IT8628E is functionally identical to IT8620E.
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r-- | Documentation/hwmon/it87 | 15 | ||||
-rw-r--r-- | drivers/hwmon/Kconfig | 3 | ||||
-rw-r--r-- | drivers/hwmon/it87.c | 18 |
3 files changed, 27 insertions, 9 deletions
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index 733296d65449..fff6f6bf55bc 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 | |||
@@ -9,6 +9,9 @@ Supported chips: | |||
9 | * IT8620E | 9 | * IT8620E |
10 | Prefix: 'it8620' | 10 | Prefix: 'it8620' |
11 | Addresses scanned: from Super I/O config space (8 I/O ports) | 11 | Addresses scanned: from Super I/O config space (8 I/O ports) |
12 | * IT8628E | ||
13 | Prefix: 'it8628' | ||
14 | Addresses scanned: from Super I/O config space (8 I/O ports) | ||
12 | Datasheet: Not publicly available | 15 | Datasheet: Not publicly available |
13 | * IT8705F | 16 | * IT8705F |
14 | Prefix: 'it87' | 17 | Prefix: 'it87' |
@@ -114,8 +117,8 @@ motherboard models. | |||
114 | Description | 117 | Description |
115 | ----------- | 118 | ----------- |
116 | 119 | ||
117 | This driver implements support for the IT8603E, IT8620E, IT8623E, IT8705F, | 120 | This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E, |
118 | IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, | 121 | IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, |
119 | IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and | 122 | IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and |
120 | SiS950 chips. | 123 | SiS950 chips. |
121 | 124 | ||
@@ -158,8 +161,8 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to | |||
158 | IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode | 161 | IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode |
159 | of the fan is not supported (value 0 of pwmX_enable). | 162 | of the fan is not supported (value 0 of pwmX_enable). |
160 | 163 | ||
161 | The IT8620E is another custom design, hardware monitoring part is similar to | 164 | The IT8620E and IT8628E are custom designs, hardware monitoring part is similar |
162 | IT8728F. It only supports 16-bit fan mode. | 165 | to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans. |
163 | 166 | ||
164 | The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled. | 167 | The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled. |
165 | 168 | ||
@@ -187,8 +190,8 @@ of 0.016 volt. IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and | |||
187 | 2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not | 190 | 2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not |
188 | have limit registers. | 191 | have limit registers. |
189 | 192 | ||
190 | On the IT8603E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, and IT8783E/F, some | 193 | On the IT8603E, IT8620E, IT8628E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, |
191 | voltage inputs are internal and scaled inside the chip: | 194 | and IT8783E/F, some voltage inputs are internal and scaled inside the chip: |
192 | * in3 (optional) | 195 | * in3 (optional) |
193 | * in7 (optional for IT8781F, IT8782F, and IT8783E/F) | 196 | * in7 (optional for IT8781F, IT8782F, and IT8783E/F) |
194 | * in8 (always) | 197 | * in8 (always) |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 1b5b500ede07..ff940075bb90 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
@@ -621,7 +621,8 @@ config SENSORS_IT87 | |||
621 | If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F, | 621 | If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F, |
622 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8758E, | 622 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8758E, |
623 | IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, | 623 | IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, |
624 | IT8603E, IT8620E, and IT8623E sensor chips, and the SiS950 clone. | 624 | IT8603E, IT8620E, IT8623E, and IT8628E sensor chips, and the SiS950 |
625 | clone. | ||
625 | 626 | ||
626 | This driver can also be built as a module. If so, the module | 627 | This driver can also be built as a module. If so, the module |
627 | will be called it87. | 628 | will be called it87. |
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index cde53c1109ea..730d84028260 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
@@ -13,6 +13,7 @@ | |||
13 | * Supports: IT8603E Super I/O chip w/LPC interface | 13 | * Supports: IT8603E Super I/O chip w/LPC interface |
14 | * IT8620E Super I/O chip w/LPC interface | 14 | * IT8620E Super I/O chip w/LPC interface |
15 | * IT8623E Super I/O chip w/LPC interface | 15 | * IT8623E Super I/O chip w/LPC interface |
16 | * IT8628E Super I/O chip w/LPC interface | ||
16 | * IT8705F Super I/O chip w/LPC interface | 17 | * IT8705F Super I/O chip w/LPC interface |
17 | * IT8712F Super I/O chip w/LPC interface | 18 | * IT8712F Super I/O chip w/LPC interface |
18 | * IT8716F Super I/O chip w/LPC interface | 19 | * IT8716F Super I/O chip w/LPC interface |
@@ -69,7 +70,7 @@ | |||
69 | 70 | ||
70 | enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732, | 71 | enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732, |
71 | it8771, it8772, it8781, it8782, it8783, it8786, it8790, it8603, | 72 | it8771, it8772, it8781, it8782, it8783, it8786, it8790, it8603, |
72 | it8620 }; | 73 | it8620, it8628 }; |
73 | 74 | ||
74 | static unsigned short force_id; | 75 | static unsigned short force_id; |
75 | module_param(force_id, ushort, 0); | 76 | module_param(force_id, ushort, 0); |
@@ -160,6 +161,7 @@ static inline void superio_exit(int ioreg) | |||
160 | #define IT8603E_DEVID 0x8603 | 161 | #define IT8603E_DEVID 0x8603 |
161 | #define IT8620E_DEVID 0x8620 | 162 | #define IT8620E_DEVID 0x8620 |
162 | #define IT8623E_DEVID 0x8623 | 163 | #define IT8623E_DEVID 0x8623 |
164 | #define IT8628E_DEVID 0x8628 | ||
163 | #define IT87_ACT_REG 0x30 | 165 | #define IT87_ACT_REG 0x30 |
164 | #define IT87_BASE_REG 0x60 | 166 | #define IT87_BASE_REG 0x60 |
165 | 167 | ||
@@ -434,6 +436,15 @@ static const struct it87_devices it87_devices[] = { | |||
434 | | FEAT_SIX_TEMP, | 436 | | FEAT_SIX_TEMP, |
435 | .peci_mask = 0x07, | 437 | .peci_mask = 0x07, |
436 | }, | 438 | }, |
439 | [it8628] = { | ||
440 | .name = "it8628", | ||
441 | .suffix = "E", | ||
442 | .features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS | ||
443 | | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_SIX_FANS | ||
444 | | FEAT_IN7_INTERNAL | FEAT_SIX_PWM | FEAT_PWM_FREQ2 | ||
445 | | FEAT_SIX_TEMP, | ||
446 | .peci_mask = 0x07, | ||
447 | }, | ||
437 | }; | 448 | }; |
438 | 449 | ||
439 | #define has_16bit_fans(data) ((data)->features & FEAT_16BIT_FANS) | 450 | #define has_16bit_fans(data) ((data)->features & FEAT_16BIT_FANS) |
@@ -2402,6 +2413,9 @@ static int __init it87_find(int sioaddr, unsigned short *address, | |||
2402 | case IT8620E_DEVID: | 2413 | case IT8620E_DEVID: |
2403 | sio_data->type = it8620; | 2414 | sio_data->type = it8620; |
2404 | break; | 2415 | break; |
2416 | case IT8628E_DEVID: | ||
2417 | sio_data->type = it8628; | ||
2418 | break; | ||
2405 | case 0xffff: /* No device at all */ | 2419 | case 0xffff: /* No device at all */ |
2406 | goto exit; | 2420 | goto exit; |
2407 | default: | 2421 | default: |
@@ -2546,7 +2560,7 @@ static int __init it87_find(int sioaddr, unsigned short *address, | |||
2546 | 2560 | ||
2547 | sio_data->beep_pin = superio_inb(sioaddr, | 2561 | sio_data->beep_pin = superio_inb(sioaddr, |
2548 | IT87_SIO_BEEP_PIN_REG) & 0x3f; | 2562 | IT87_SIO_BEEP_PIN_REG) & 0x3f; |
2549 | } else if (sio_data->type == it8620) { | 2563 | } else if (sio_data->type == it8620 || sio_data->type == it8628) { |
2550 | int reg; | 2564 | int reg; |
2551 | 2565 | ||
2552 | superio_select(sioaddr, GPIO); | 2566 | superio_select(sioaddr, GPIO); |