[lm-sensors] [PATCH 2/3] hwmon: (it87) Verify the VID pin usage
Jean Delvare
khali at linux-fr.org
Thu Oct 22 15:20:27 CEST 2009
The VID input pins can alternatively be used as GPIOs. Make sure we
have at least 4 pins used for VID, otherwise don't bother reading and
exposing VID.
Signed-off-by: Jean Delvare <khali at linux-fr.org>
---
Documentation/hwmon/it87 | 1 -
drivers/hwmon/it87.c | 18 ++++++++++++++----
2 files changed, 14 insertions(+), 5 deletions(-)
--- linux-2.6.32-rc5.orig/drivers/hwmon/it87.c 2009-10-22 14:44:20.000000000 +0200
+++ linux-2.6.32-rc5/drivers/hwmon/it87.c 2009-10-22 14:54:17.000000000 +0200
@@ -124,6 +124,7 @@ superio_exit(void)
#define IT87_BASE_REG 0x60
/* Logical device 7 registers (IT8712F and later) */
+#define IT87_SIO_GPIO3_REG 0x27
#define IT87_SIO_PINX2_REG 0x2c /* Pin selection */
#define IT87_SIO_VID_REG 0xfc /* VID value */
@@ -244,6 +245,7 @@ struct it87_sio_data {
/* Values read from Super-I/O config space */
u8 revision;
u8 vid_value;
+ u8 skip_vid;
/* Values set based on DMI strings */
u8 skip_pwm;
};
@@ -1028,11 +1030,20 @@ static int __init it87_find(unsigned sho
chip_type, *address, sio_data->revision);
/* Read GPIO config and VID value from LDN 7 (GPIO) */
- if (sio_data->type != it87) {
+ if (sio_data->type == it87) {
+ /* The IT8705F doesn't have VID pins at all */
+ sio_data->skip_vid = 1;
+ } else {
int reg;
superio_select(GPIO);
- if (sio_data->type == it8718 || sio_data->type == it8720)
+ /* We need at least 4 VID pins */
+ reg = superio_inb(IT87_SIO_GPIO3_REG);
+ if (reg & 0x0f)
+ sio_data->skip_vid = 1;
+
+ if ((sio_data->type == it8718 || sio_data->type == it8720)
+ && !(sio_data->skip_vid))
sio_data->vid_value = superio_inb(IT87_SIO_VID_REG);
reg = superio_inb(IT87_SIO_PINX2_REG);
@@ -1236,8 +1247,7 @@ static int __devinit it87_probe(struct p
}
}
- if (data->type == it8712 || data->type == it8716
- || data->type == it8718 || data->type == it8720) {
+ if (!sio_data->skip_vid) {
data->vrm = vid_which_vrm();
/* VID reading from Super-I/O config space if available */
data->vid = sio_data->vid_value;
--- linux-2.6.32-rc5.orig/Documentation/hwmon/it87 2009-10-22 15:07:15.000000000 +0200
+++ linux-2.6.32-rc5/Documentation/hwmon/it87 2009-10-22 15:07:28.000000000 +0200
@@ -86,7 +86,6 @@ The IT8712F and IT8716F additionally fea
the Vcore voltage of the processor. The early IT8712F have 5 VID pins,
the IT8716F and late IT8712F have 6. They are shared with other functions
though, so the functionality may not be available on a given system.
-The driver dumbly assume it is there.
The IT8718F and IT8720F also features VID inputs (up to 8 pins) but the value
is stored in the Super-I/O configuration space. Due to technical limitations,
--
Jean Delvare
More information about the lm-sensors
mailing list