Commit 61441ed4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6

* 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6:
  hwmon: (w83627ehf) Be more careful when changing VID input level
parents 39cd72de 58e6e781
...@@ -1276,23 +1276,31 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev) ...@@ -1276,23 +1276,31 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
data->vrm = vid_which_vrm(); data->vrm = vid_which_vrm();
superio_enter(sio_data->sioreg); superio_enter(sio_data->sioreg);
/* Set VID input sensibility if needed. In theory the BIOS should /* Read VID value */
have set it, but in practice it's not always the case. */ superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
en_vrm10 = superio_inb(sio_data->sioreg, SIO_REG_EN_VRM10); if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) {
if ((en_vrm10 & 0x08) && data->vrm != 100) { /* Set VID input sensibility if needed. In theory the BIOS
dev_warn(dev, "Setting VID input voltage to TTL\n"); should have set it, but in practice it's not always the
case. We only do it for the W83627EHF/EHG because the
W83627DHG is more complex in this respect. */
if (sio_data->kind == w83627ehf) {
en_vrm10 = superio_inb(sio_data->sioreg,
SIO_REG_EN_VRM10);
if ((en_vrm10 & 0x08) && data->vrm == 90) {
dev_warn(dev, "Setting VID input voltage to "
"TTL\n");
superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10, superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
en_vrm10 & ~0x08); en_vrm10 & ~0x08);
} else if (!(en_vrm10 & 0x08) && data->vrm == 100) { } else if (!(en_vrm10 & 0x08) && data->vrm == 100) {
dev_warn(dev, "Setting VID input voltage to VRM10\n"); dev_warn(dev, "Setting VID input voltage to "
"VRM10\n");
superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10, superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
en_vrm10 | 0x08); en_vrm10 | 0x08);
} }
/* Read VID value */ }
superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80)
data->vid = superio_inb(sio_data->sioreg, SIO_REG_VID_DATA) & 0x3f; data->vid = superio_inb(sio_data->sioreg, SIO_REG_VID_DATA) & 0x3f;
else { } else {
dev_info(dev, "VID pins in output mode, CPU VID not " dev_info(dev, "VID pins in output mode, CPU VID not "
"available\n"); "available\n");
data->vid = 0x3f; data->vid = 0x3f;
......
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