Module Name:    src
Committed By:   msaitoh
Date:           Tue Mar 14 08:25:35 UTC 2017

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

Log Message:
 Pint PCI Interface name if available.


To generate a diff of this commit:
cvs rdiff -u -r1.164 -r1.165 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.164 src/sys/dev/pci/pci_subr.c:1.165
--- src/sys/dev/pci/pci_subr.c:1.164	Tue Mar 14 08:20:11 2017
+++ src/sys/dev/pci/pci_subr.c	Tue Mar 14 08:25:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci_subr.c,v 1.164 2017/03/14 08:20:11 msaitoh Exp $	*/
+/*	$NetBSD: pci_subr.c,v 1.165 2017/03/14 08:25:35 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.164 2017/03/14 08:20:11 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.165 2017/03/14 08:25:35 msaitoh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pci.h"
@@ -70,6 +70,8 @@ __KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v
 #include <dev/pci/pcidevs_data.h>
 #endif
 
+static int pci_conf_find_cap(const pcireg_t *, int, unsigned int, int *);
+
 /*
  * Descriptions of known PCI classes and subclasses.
  *
@@ -733,7 +735,7 @@ pci_conf_print_common(
 	pci_interface_t interface;
 	pci_revision_t revision;
 	char vendor[PCI_VENDORSTR_LEN], product[PCI_PRODUCTSTR_LEN];
-	const struct pci_class *classp, *subclassp;
+	const struct pci_class *classp, *subclassp, *interfacep;
 	const char *name;
 	pcireg_t rval;
 	unsigned int num;
@@ -823,19 +825,29 @@ pci_conf_print_common(
 			break;
 		subclassp++;
 	}
-	if (classp->name != NULL) {
+	interfacep = (subclassp && subclassp->name != NULL) ?
+	    subclassp->subclasses : NULL;
+	while (interfacep && interfacep->name != NULL) {
+		if (interface == interfacep->val)
+			break;
+		interfacep++;
+	}
+
+	if (classp->name != NULL)
 		printf("    Class Name: %s (0x%02x)\n", classp->name, class);
-		if (subclassp != NULL && subclassp->name != NULL)
-			printf("    Subclass Name: %s (0x%02x)\n",
-			    subclassp->name, PCI_SUBCLASS(rval));
-		else
-			printf("    Subclass ID: 0x%02x\n",
-			    PCI_SUBCLASS(rval));
-	} else {
+	else
 		printf("    Class ID: 0x%02x\n", class);
-		printf("    Subclass ID: 0x%02x\n", subclass);
-	}
-	printf("    Interface: 0x%02x\n", interface);
+	if (subclassp != NULL && subclassp->name != NULL)
+		printf("    Subclass Name: %s (0x%02x)\n",
+		    subclassp->name, PCI_SUBCLASS(rval));
+	else
+		printf("    Subclass ID: 0x%02x\n", PCI_SUBCLASS(rval));
+	if ((interfacep != NULL) && (interfacep->name != NULL)
+	    && (strncmp(interfacep->name, "", 1) != 0))
+		printf("    Interface Name: %s (0x%02x)\n",
+		    interfacep->name, interface);
+	else
+		printf("    Interface: 0x%02x\n", interface);
 	printf("    Revision ID: 0x%02x\n", revision);
 
 	rval = regs[o2i(PCI_BHLC_REG)];

Reply via email to