diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-01-03 12:02:00 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-01-03 12:02:00 -0800 | 
| commit | 61441ed4e498f8f74f25116a465a73ca7fa2ac72 (patch) | |
| tree | e20d77c97ae33e010436f0392431ee66d1b0b00d | |
| parent | 39cd72de49032f1d9cd9166241ff4854a2cbb56b (diff) | |
| parent | 58e6e78119da2bdade9f6f588155f0320072b76b (diff) | |
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
| -rw-r--r-- | drivers/hwmon/w83627ehf.c | 36 | 
1 files changed, 22 insertions, 14 deletions
| diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c index b15c6a998b72..d5aa25ce5dbd 100644 --- a/drivers/hwmon/w83627ehf.c +++ b/drivers/hwmon/w83627ehf.c @@ -1276,23 +1276,31 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)  	data->vrm = vid_which_vrm();  	superio_enter(sio_data->sioreg); -	/* Set VID input sensibility if needed. In theory the BIOS should -	   have set it, but in practice it's not always the case. */ -	en_vrm10 = superio_inb(sio_data->sioreg, SIO_REG_EN_VRM10); -	if ((en_vrm10 & 0x08) && data->vrm != 100) { -		dev_warn(dev, "Setting VID input voltage to TTL\n"); -		superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10, -			     en_vrm10 & ~0x08); -	} else if (!(en_vrm10 & 0x08) && data->vrm == 100) { -		dev_warn(dev, "Setting VID input voltage to VRM10\n"); -		superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10, -			     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) +	if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) { +		/* Set VID input sensibility if needed. In theory the BIOS +		   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, +					     en_vrm10 & ~0x08); +			} else if (!(en_vrm10 & 0x08) && data->vrm == 100) { +				dev_warn(dev, "Setting VID input voltage to " +					 "VRM10\n"); +				superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10, +					     en_vrm10 | 0x08); +			} +		} +  		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 "  			 "available\n");  		data->vid = 0x3f; | 
