aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2016-01-18 03:35:58 -0500
committerGuenter Roeck <linux@roeck-us.net>2016-04-19 09:32:38 -0400
commit71a9c23246fe68954f87787a4e6c1aa22565c326 (patch)
treef5c4b049c13a7019caa6f71ebb443058e2d694d5
parent0624d861983c2cb1884ea3bafc1c534c7d2348b8 (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/it8715
-rw-r--r--drivers/hwmon/Kconfig3
-rw-r--r--drivers/hwmon/it87.c18
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.
114Description 117Description
115----------- 118-----------
116 119
117This driver implements support for the IT8603E, IT8620E, IT8623E, IT8705F, 120This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E,
118IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, 121IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F,
119IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and 122IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and
120SiS950 chips. 123SiS950 chips.
121 124
@@ -158,8 +161,8 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
158IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode 161IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode
159of the fan is not supported (value 0 of pwmX_enable). 162of the fan is not supported (value 0 of pwmX_enable).
160 163
161The IT8620E is another custom design, hardware monitoring part is similar to 164The IT8620E and IT8628E are custom designs, hardware monitoring part is similar
162IT8728F. It only supports 16-bit fan mode. 165to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans.
163 166
164The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled. 167The 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
1872.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not 1902.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not
188have limit registers. 191have limit registers.
189 192
190On the IT8603E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, and IT8783E/F, some 193On the IT8603E, IT8620E, IT8628E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F,
191voltage inputs are internal and scaled inside the chip: 194and 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
70enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732, 71enum 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
74static unsigned short force_id; 75static unsigned short force_id;
75module_param(force_id, ushort, 0); 76module_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);