Commit 71a9c232 authored by Guenter Roeck's avatar Guenter Roeck

hwmon: (it87) Add support for IT8628E

IT8628E is functionally identical to IT8620E.
Tested-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 0624d861
...@@ -9,6 +9,9 @@ Supported chips: ...@@ -9,6 +9,9 @@ Supported chips:
* IT8620E * IT8620E
Prefix: 'it8620' Prefix: 'it8620'
Addresses scanned: from Super I/O config space (8 I/O ports) Addresses scanned: from Super I/O config space (8 I/O ports)
* IT8628E
Prefix: 'it8628'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available Datasheet: Not publicly available
* IT8705F * IT8705F
Prefix: 'it87' Prefix: 'it87'
...@@ -114,8 +117,8 @@ motherboard models. ...@@ -114,8 +117,8 @@ motherboard models.
Description Description
----------- -----------
This driver implements support for the IT8603E, IT8620E, IT8623E, IT8705F, This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E,
IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F,
IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and
SiS950 chips. SiS950 chips.
...@@ -158,8 +161,8 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to ...@@ -158,8 +161,8 @@ The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode
of the fan is not supported (value 0 of pwmX_enable). of the fan is not supported (value 0 of pwmX_enable).
The IT8620E is another custom design, hardware monitoring part is similar to The IT8620E and IT8628E are custom designs, hardware monitoring part is similar
IT8728F. It only supports 16-bit fan mode. to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans.
The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled. The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled.
...@@ -187,8 +190,8 @@ of 0.016 volt. IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and ...@@ -187,8 +190,8 @@ of 0.016 volt. IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and
2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not 2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not
have limit registers. have limit registers.
On the IT8603E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, and IT8783E/F, some On the IT8603E, IT8620E, IT8628E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F,
voltage inputs are internal and scaled inside the chip: and IT8783E/F, some voltage inputs are internal and scaled inside the chip:
* in3 (optional) * in3 (optional)
* in7 (optional for IT8781F, IT8782F, and IT8783E/F) * in7 (optional for IT8781F, IT8782F, and IT8783E/F)
* in8 (always) * in8 (always)
......
...@@ -621,7 +621,8 @@ config SENSORS_IT87 ...@@ -621,7 +621,8 @@ config SENSORS_IT87
If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F, If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F,
IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8758E, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, IT8758E,
IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E,
IT8603E, IT8620E, and IT8623E sensor chips, and the SiS950 clone. IT8603E, IT8620E, IT8623E, and IT8628E sensor chips, and the SiS950
clone.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called it87. will be called it87.
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
* Supports: IT8603E Super I/O chip w/LPC interface * Supports: IT8603E Super I/O chip w/LPC interface
* IT8620E Super I/O chip w/LPC interface * IT8620E Super I/O chip w/LPC interface
* IT8623E Super I/O chip w/LPC interface * IT8623E Super I/O chip w/LPC interface
* IT8628E Super I/O chip w/LPC interface
* IT8705F Super I/O chip w/LPC interface * IT8705F Super I/O chip w/LPC interface
* IT8712F Super I/O chip w/LPC interface * IT8712F Super I/O chip w/LPC interface
* IT8716F Super I/O chip w/LPC interface * IT8716F Super I/O chip w/LPC interface
...@@ -69,7 +70,7 @@ ...@@ -69,7 +70,7 @@
enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732, enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732,
it8771, it8772, it8781, it8782, it8783, it8786, it8790, it8603, it8771, it8772, it8781, it8782, it8783, it8786, it8790, it8603,
it8620 }; it8620, it8628 };
static unsigned short force_id; static unsigned short force_id;
module_param(force_id, ushort, 0); module_param(force_id, ushort, 0);
...@@ -160,6 +161,7 @@ static inline void superio_exit(int ioreg) ...@@ -160,6 +161,7 @@ static inline void superio_exit(int ioreg)
#define IT8603E_DEVID 0x8603 #define IT8603E_DEVID 0x8603
#define IT8620E_DEVID 0x8620 #define IT8620E_DEVID 0x8620
#define IT8623E_DEVID 0x8623 #define IT8623E_DEVID 0x8623
#define IT8628E_DEVID 0x8628
#define IT87_ACT_REG 0x30 #define IT87_ACT_REG 0x30
#define IT87_BASE_REG 0x60 #define IT87_BASE_REG 0x60
...@@ -434,6 +436,15 @@ static const struct it87_devices it87_devices[] = { ...@@ -434,6 +436,15 @@ static const struct it87_devices it87_devices[] = {
| FEAT_SIX_TEMP, | FEAT_SIX_TEMP,
.peci_mask = 0x07, .peci_mask = 0x07,
}, },
[it8628] = {
.name = "it8628",
.suffix = "E",
.features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
| FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_SIX_FANS
| FEAT_IN7_INTERNAL | FEAT_SIX_PWM | FEAT_PWM_FREQ2
| FEAT_SIX_TEMP,
.peci_mask = 0x07,
},
}; };
#define has_16bit_fans(data) ((data)->features & FEAT_16BIT_FANS) #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,6 +2413,9 @@ static int __init it87_find(int sioaddr, unsigned short *address,
case IT8620E_DEVID: case IT8620E_DEVID:
sio_data->type = it8620; sio_data->type = it8620;
break; break;
case IT8628E_DEVID:
sio_data->type = it8628;
break;
case 0xffff: /* No device at all */ case 0xffff: /* No device at all */
goto exit; goto exit;
default: default:
...@@ -2546,7 +2560,7 @@ static int __init it87_find(int sioaddr, unsigned short *address, ...@@ -2546,7 +2560,7 @@ static int __init it87_find(int sioaddr, unsigned short *address,
sio_data->beep_pin = superio_inb(sioaddr, sio_data->beep_pin = superio_inb(sioaddr,
IT87_SIO_BEEP_PIN_REG) & 0x3f; IT87_SIO_BEEP_PIN_REG) & 0x3f;
} else if (sio_data->type == it8620) { } else if (sio_data->type == it8620 || sio_data->type == it8628) {
int reg; int reg;
superio_select(sioaddr, GPIO); superio_select(sioaddr, GPIO);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment