VID specifications

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the great research and suggestions.
We'll have to think of the best way to incorporate them.

If we brought vrm out to /proc we could have a simple program
that does the following:
# fixvrm
	Which VID is correct:
		1) 3.2V (VRM 8.2) (default)
		2) 2.55V (VRM 8.5)
		3) 1.675V (VRM 9.0)
	Enter number 1-3: 1
	Your VID calculation has been changed to 1.675 V (VRM 9.0)


Trent Piepho wrote:
> 
> I've been getting lm_sensors working with my tyan tiger mp (more on that
> later) and I noticed that the VID was reporting the wrong core voltage.  I
> tracked down the problem and figured out what was going on.
> 
> The w83781d driver, and lots of others (lm87 I know too, because I fixed a vid
> problem with that driver) use a single macro VID_FROM_REG to convert the 4 or
> 5 vid lines into a core voltage, with 10 mV units.  The macro follows a spec
> called the VRM 8.2 DC-DC Converter Specification, you can get a pdf at intel's
> site.  The AthlonXP processor, and I assume all socket A chips, uses a newer
> specification called VRM 9.0.  There is also a VRM 8.1, 8.3, and 8.4, but they
> are all mostly compatible with 8.2.  VRM 9.0 is *not* backward compatible with
> VRM 8.2.  There is also a VRM 8.5, which is used with Pentium III Tualatin
> processors, that isn't compatible with VRM 8.2.
> 
> In order to get proper VID support, the user needs to be able to specify the
> processor's VRM version.  Since the code to do this conversion is the same for
> any sensor chip, it makes sense not to put a separate copy in each driver.  It
> would be nice if it could be specified in the sensors.conf file, e.g. "set vrm
> 9.0".  Most drivers look at the vid setting to set the initial voltage limits
> for the cpu voltage line.  In order to do this correctly, the driver would
> need to know the setting when it initializes the chip.
> 
> There is also a problem with the units.  The newer VRM specifications use
> increments of 25 mV instead of 50 or 100 mV, so the 10mV resolution used in
> the driver isn't enough.  ie. magnitude for vid needs to be 3 instead of 2.
> 
> Here is code to handle the different VRM versions.  I'm not sure if the VRM
> 8.5 code will work, as it's not totally clear how the VID lines will be hooked
> up.
> 
> /* VRM 8.2 - 8.4:  Used for Pentium II-III chips */
> #define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\
>                            205-(val)*5)
> 
> /* VRM 8.5:  Used for Pentium III-S Tualatin chips */
> #define VID_FROM_REG(val) ((val)==0x1f?0:  ((((val)&16)?2.5:0) + \
>                            ((val)>4?205:125) - ((val)&15)*5))
> 
> /* VRM 9.0:  Used for Pentium IV and AMD Socket A */
> #define VID_FROM_REG(val) ((val)==0x1f?0:(185-(val)*2.5))



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux