svn commit: r366330 - head/sys/dev/ichsmb

Emmanuel Vadot manu at FreeBSD.org
Thu Oct 1 16:55:02 UTC 2020


Author: manu
Date: Thu Oct  1 16:55:01 2020
New Revision: 366330
URL: https://svnweb.freebsd.org/changeset/base/366330

Log:
  ichsmb_pci: convert to pci_device_table / add PCI_PNP_INFO
  
  Submitted by:	Greg V <greg at unrelenting.technology>
  Reviewed by:	mav
  Differential Revision:	https://reviews.freebsd.org/D25260

Modified:
  head/sys/dev/ichsmb/ichsmb_pci.c

Modified: head/sys/dev/ichsmb/ichsmb_pci.c
==============================================================================
--- head/sys/dev/ichsmb/ichsmb_pci.c	Thu Oct  1 16:53:16 2020	(r366329)
+++ head/sys/dev/ichsmb/ichsmb_pci.c	Thu Oct  1 16:55:01 2020	(r366330)
@@ -106,51 +106,87 @@ __FBSDID("$FreeBSD$");
 #define	ID_KABYLAKE			0xa2a3
 #define	ID_CANNONLAKE			0xa323
 
-static const struct ichsmb_device {
-	uint16_t	id;
-	const char	*name;
-} ichsmb_devices[] = {
-	{ ID_82801AA,	"Intel 82801AA (ICH) SMBus controller"		},
-	{ ID_82801AB,	"Intel 82801AB (ICH0) SMBus controller"		},
-	{ ID_82801BA,	"Intel 82801BA (ICH2) SMBus controller"		},
-	{ ID_82801CA,	"Intel 82801CA (ICH3) SMBus controller"		},
-	{ ID_82801DC,	"Intel 82801DC (ICH4) SMBus controller"		},
-	{ ID_82801EB,	"Intel 82801EB (ICH5) SMBus controller"		},
-	{ ID_82801FB,	"Intel 82801FB (ICH6) SMBus controller"		},
-	{ ID_82801GB,	"Intel 82801GB (ICH7) SMBus controller"		},
-	{ ID_82801H,	"Intel 82801H (ICH8) SMBus controller"		},
-	{ ID_82801I,	"Intel 82801I (ICH9) SMBus controller"		},
-	{ ID_82801GB,	"Intel 82801GB (ICH7) SMBus controller"		},
-	{ ID_82801H,	"Intel 82801H (ICH8) SMBus controller"		},
-	{ ID_82801I,	"Intel 82801I (ICH9) SMBus controller"		},
-	{ ID_EP80579,	"Intel EP80579 SMBus controller"		},
-	{ ID_82801JI,	"Intel 82801JI (ICH10) SMBus controller"	},
-	{ ID_82801JD,	"Intel 82801JD (ICH10) SMBus controller"	},
-	{ ID_PCH,	"Intel PCH SMBus controller"			},
-	{ ID_6300ESB,	"Intel 6300ESB (ICH) SMBus controller"		},
-	{ ID_631xESB,	"Intel 631xESB/6321ESB (ESB2) SMBus controller"	},
-	{ ID_DH89XXCC,	"Intel DH89xxCC SMBus controller"		},
-	{ ID_PATSBURG,	"Intel Patsburg SMBus controller"		},
-	{ ID_CPT,	"Intel Cougar Point SMBus controller"		},
-	{ ID_PPT,	"Intel Panther Point SMBus controller"		},
-	{ ID_AVOTON,	"Intel Avoton SMBus controller"			},
-	{ ID_LPT,	"Intel Lynx Point SMBus controller"		},
-	{ ID_LPTLP,	"Intel Lynx Point-LP SMBus controller"		},
-	{ ID_WCPT,	"Intel Wildcat Point SMBus controller"		},
-	{ ID_WCPTLP,	"Intel Wildcat Point-LP SMBus controller"	},
-	{ ID_BAYTRAIL,	"Intel Baytrail SMBus controller"		},
-	{ ID_BRASWELL,	"Intel Braswell SMBus controller"		},
-	{ ID_COLETOCRK,	"Intel Coleto Creek SMBus controller"		},
-	{ ID_WELLSBURG,	"Intel Wellsburg SMBus controller"		},
-	{ ID_SRPT,	"Intel Sunrise Point-H SMBus controller"	},
-	{ ID_SRPTLP,	"Intel Sunrise Point-LP SMBus controller"	},
-	{ ID_DENVERTON,	"Intel Denverton SMBus controller"		},
-	{ ID_BROXTON,	"Intel Broxton SMBus controller"		},
-	{ ID_LEWISBURG,	"Intel Lewisburg SMBus controller"		},
-	{ ID_LEWISBURG2,"Intel Lewisburg SMBus controller"		},
-	{ ID_KABYLAKE,	"Intel Kaby Lake SMBus controller"		},
-	{ ID_CANNONLAKE,"Intel Cannon Lake SMBus controller"		},
-	{ 0, NULL },
+static const struct pci_device_table ichsmb_devices[] = {
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801AA),
+	  PCI_DESCR("Intel 82801AA (ICH) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801AB),
+	  PCI_DESCR("Intel 82801AB (ICH0) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801BA),
+	  PCI_DESCR("Intel 82801BA (ICH2) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801CA),
+	  PCI_DESCR("Intel 82801CA (ICH3) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801DC),
+	  PCI_DESCR("Intel 82801DC (ICH4) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801EB),
+	  PCI_DESCR("Intel 82801EB (ICH5) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801FB),
+	  PCI_DESCR("Intel 82801FB (ICH6) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801GB),
+	  PCI_DESCR("Intel 82801GB (ICH7) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801H),
+	  PCI_DESCR("Intel 82801H (ICH8) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801I),
+	  PCI_DESCR("Intel 82801I (ICH9) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801GB),
+	  PCI_DESCR("Intel 82801GB (ICH7) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801H),
+	  PCI_DESCR("Intel 82801H (ICH8) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801I),
+	  PCI_DESCR("Intel 82801I (ICH9) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_EP80579),
+	  PCI_DESCR("Intel EP80579 SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801JI),
+	  PCI_DESCR("Intel 82801JI (ICH10) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801JD),
+	  PCI_DESCR("Intel 82801JD (ICH10) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_PCH),
+	  PCI_DESCR("Intel PCH SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_6300ESB),
+	  PCI_DESCR("Intel 6300ESB (ICH) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_631xESB),
+	  PCI_DESCR("Intel 631xESB/6321ESB (ESB2) SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_DH89XXCC),
+	  PCI_DESCR("Intel DH89xxCC SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_PATSBURG),
+	  PCI_DESCR("Intel Patsburg SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_CPT),
+	  PCI_DESCR("Intel Cougar Point SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_PPT),
+	  PCI_DESCR("Intel Panther Point SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_AVOTON),
+	  PCI_DESCR("Intel Avoton SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_LPT),
+	  PCI_DESCR("Intel Lynx Point SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_LPTLP),
+	  PCI_DESCR("Intel Lynx Point-LP SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_WCPT),
+	  PCI_DESCR("Intel Wildcat Point SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_WCPTLP),
+	  PCI_DESCR("Intel Wildcat Point-LP SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_BAYTRAIL),
+	  PCI_DESCR("Intel Baytrail SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_BRASWELL),
+	  PCI_DESCR("Intel Braswell SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_COLETOCRK),
+	  PCI_DESCR("Intel Coleto Creek SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_WELLSBURG),
+	  PCI_DESCR("Intel Wellsburg SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_SRPT),
+	  PCI_DESCR("Intel Sunrise Point-H SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_SRPTLP),
+	  PCI_DESCR("Intel Sunrise Point-LP SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_DENVERTON),
+	  PCI_DESCR("Intel Denverton SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_BROXTON),
+	  PCI_DESCR("Intel Broxton SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_LEWISBURG),
+	  PCI_DESCR("Intel Lewisburg SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_LEWISBURG2),
+	  PCI_DESCR("Intel Lewisburg SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_KABYLAKE),
+	  PCI_DESCR("Intel Kaby Lake SMBus controller") },
+	{ PCI_DEV(PCI_VENDOR_INTEL, ID_CANNONLAKE),
+	  PCI_DESCR("Intel Cannon Lake SMBus controller") },
 };
 
 /* Internal functions */
@@ -197,19 +233,14 @@ DRIVER_MODULE(ichsmb, pci, ichsmb_pci_driver, ichsmb_p
 static int
 ichsmb_pci_probe(device_t dev)
 {
-	const struct ichsmb_device *device;
+	const struct pci_device_table *tbl;
 
-	if (pci_get_vendor(dev) != PCI_VENDOR_INTEL)
+	tbl = PCI_MATCH(dev, ichsmb_devices);
+	if (tbl == NULL)
 		return (ENXIO);
 
-	for (device = ichsmb_devices; device->name != NULL; device++) {
-		if (pci_get_device(dev) == device->id) {
-			device_set_desc(dev, device->name);
-			return (ichsmb_probe(dev));
-		}
-	}
-
-	return (ENXIO);
+	device_set_desc(dev, tbl->descr);
+	return (ichsmb_probe(dev));
 }
 
 static int
@@ -265,3 +296,4 @@ fail:
 MODULE_DEPEND(ichsmb, pci, 1, 1, 1);
 MODULE_DEPEND(ichsmb, smbus, SMBUS_MINVER, SMBUS_PREFVER, SMBUS_MAXVER);
 MODULE_VERSION(ichsmb, 1);
+PCI_PNP_INFO(ichsmb_devices);


More information about the svn-src-head mailing list