Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 177d165d authored by Rudolf Marek's avatar Rudolf Marek Committed by Greg Kroah-Hartman
Browse files

[PATCH] HWMON: Trim VID values to correct number of bits



Following patch trims the VID value to correct number of bits
for each VRM.

Signed-off-by: default avatarRudolf Marek <r.marek@sh.cvut.cz>
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0d0001dd
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -70,6 +70,7 @@ int vid_from_reg(int val, u8 vrm)
	switch(vrm) {
	switch(vrm) {


	case 100:               /* VRD 10.0 */
	case 100:               /* VRD 10.0 */
		val &= 0x3f;
		if((val & 0x1f) == 0x1f)
		if((val & 0x1f) == 0x1f)
			return 0;
			return 0;
		if((val & 0x1f) <= 0x09 || val == 0x0a)
		if((val & 0x1f) <= 0x09 || val == 0x0a)
@@ -82,14 +83,17 @@ int vid_from_reg(int val, u8 vrm)
		return vid;
		return vid;


	case 24:                /* Opteron processor */
	case 24:                /* Opteron processor */
		val &= 0x1f;
		return(val == 0x1f ? 0 : 1550 - val * 25);
		return(val == 0x1f ? 0 : 1550 - val * 25);


	case 91:		/* VRM 9.1 */
	case 91:		/* VRM 9.1 */
	case 90:		/* VRM 9.0 */
	case 90:		/* VRM 9.0 */
		val &= 0x1f;
		return(val == 0x1f ? 0 :
		return(val == 0x1f ? 0 :
		                       1850 - val * 25);
		                       1850 - val * 25);


	case 85:		/* VRM 8.5 */
	case 85:		/* VRM 8.5 */
		val &= 0x1f;
		return((val & 0x10  ? 25 : 0) +
		return((val & 0x10  ? 25 : 0) +
		       ((val & 0x0f) > 0x04 ? 2050 : 1250) -
		       ((val & 0x0f) > 0x04 ? 2050 : 1250) -
		       ((val & 0x0f) * 50));
		       ((val & 0x0f) * 50));
@@ -98,14 +102,17 @@ int vid_from_reg(int val, u8 vrm)
		val &= 0x0f;
		val &= 0x0f;
				/* fall through */
				/* fall through */
	case 82:		/* VRM 8.2 */
	case 82:		/* VRM 8.2 */
		val &= 0x1f;
		return(val == 0x1f ? 0 :
		return(val == 0x1f ? 0 :
		       val & 0x10  ? 5100 - (val) * 100 :
		       val & 0x10  ? 5100 - (val) * 100 :
		                     2050 - (val) * 50);
		                     2050 - (val) * 50);
	case 17:		/* Intel IMVP-II */
	case 17:		/* Intel IMVP-II */
		val &= 0x1f;
		return(val & 0x10 ? 975 - (val & 0xF) * 25 :
		return(val & 0x10 ? 975 - (val & 0xF) * 25 :
				    1750 - val * 50);
				    1750 - val * 50);
	case 13:
	case 13:
		return(1708 - (val & 0x3f) * 16);
		val &= 0x3f;
		return(1708 - val * 16);
	default:		/* report 0 for unknown */
	default:		/* report 0 for unknown */
		printk(KERN_INFO "hwmon-vid: requested unknown VRM version\n");
		printk(KERN_INFO "hwmon-vid: requested unknown VRM version\n");
		return 0;
		return 0;