Module Name:    src
Committed By:   msaitoh
Date:           Sun Feb 26 05:41:48 UTC 2017

Modified Files:
        src/sys/dev/pci: pci_subr.c

Log Message:
 - Fix the base power's value in the power budget capability.
 - Fix typo (s/Maximun/Maximum/)


To generate a diff of this commit:
cvs rdiff -u -r1.159 -r1.160 src/sys/dev/pci/pci_subr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/pci_subr.c
diff -u src/sys/dev/pci/pci_subr.c:1.159 src/sys/dev/pci/pci_subr.c:1.160
--- src/sys/dev/pci/pci_subr.c:1.159	Fri Feb 24 06:39:54 2017
+++ src/sys/dev/pci/pci_subr.c	Sun Feb 26 05:41:47 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci_subr.c,v 1.159 2017/02/24 06:39:54 msaitoh Exp $	*/
+/*	$NetBSD: pci_subr.c,v 1.160 2017/02/26 05:41:47 msaitoh Exp $	*/
 
 /*
  * Copyright (c) 1997 Zubin D. Dittia.  All rights reserved.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.159 2017/02/24 06:39:54 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.160 2017/02/26 05:41:47 msaitoh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pci.h"
@@ -2578,42 +2578,38 @@ pci_conf_print_vc_cap(const pcireg_t *re
 		    "  VC", varbsel, varbsize);
 }
 
-static const char *
-pci_conf_print_pwrbdgt_base_power(uint8_t reg)
+static void
+pci_conf_print_pwrbdgt_base_power(uint8_t base, int scale)
 {
-
-	switch (reg) {
+	int sdiv = 1;
+	const char *s;
+	int i;
+	
+	if (base <= 0xef) {
+		for (i = scale; i > 0; i--)
+			sdiv *= 10;
+		printf("%hhu", base / sdiv);
+		if (scale != 0) {
+			printf(".%hhu", base % sdiv);
+		}
+		printf ("W\n");
+		return;
+	}
+	switch (base) {
 	case 0xf0:
-		return "239W < x <= 250W";
+		s = "239W < x <= 250W";
+		break;
 	case 0xf1:
-		return "250W < x <= 275W";
+		s = "250W < x <= 275W";
+		break;
 	case 0xf2:
-		return "275W < x <= 300W";
-	default:
+		s = "275W < x <= 300W";
 		break;
-	}
-	if (reg >= 0xf3)
-		return "reserved for above 300W";
-
-	return "Unknown";
-}
-
-static const char *
-pci_conf_print_pwrbdgt_data_scale(uint8_t reg)
-{
-
-	switch (reg) {
-	case 0x00:
-		return "1.0x";
-	case 0x01:
-		return "0.1x";
-	case 0x02:
-		return "0.01x";
-	case 0x03:
-		return "0.001x";
 	default:
-		return "wrong value!";
+		s = "reserved for above 300W";
+		break;
 	}
+	printf("%s\n", s);
 }
 
 static const char *
@@ -2634,7 +2630,7 @@ pci_conf_print_pwrbdgt_type(uint8_t reg)
 	case 0x05:
 		return "Maximum (Emergency Power Reduction)";
 	case 0x07:
-		return "Maximun";
+		return "Maximum";
 	default:
 		return "Unknown";
 	}
@@ -2662,19 +2658,18 @@ static void
 pci_conf_print_pwrbdgt_cap(const pcireg_t *regs, int capoff, int extcapoff)
 {
 	pcireg_t reg;
+	unsigned int scale;
 
-	printf("\n  Power Budget Register\n");
+	printf("\n  Power Budgeting\n");
 
 	reg = regs[o2i(extcapoff + PCI_PWRBDGT_DSEL)];
 	printf("    Data Select register: 0x%08x\n", reg);
 
 	reg = regs[o2i(extcapoff + PCI_PWRBDGT_DATA)];
 	printf("    Data register: 0x%08x\n", reg);
-	printf("      Base Power: %s\n",
-	    pci_conf_print_pwrbdgt_base_power((uint8_t)reg));
-	printf("      Data Scale: %s\n",
-	    pci_conf_print_pwrbdgt_data_scale(
-		    (uint8_t)(__SHIFTOUT(reg, PCI_PWRBDGT_DATA_SCALE))));
+	scale = __SHIFTOUT(reg, PCI_PWRBDGT_DATA_SCALE);
+	printf("      Base Power: ");
+	pci_conf_print_pwrbdgt_base_power((uint8_t)reg, scale);
 	printf("      PM Sub State: 0x%hhx\n",
 	    (uint8_t)__SHIFTOUT(reg, PCI_PWRBDGT_PM_SUBSTAT));
 	printf("      PM State: D%u\n",

Reply via email to