Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jan 2012 11:18:21 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r230331 - head/sys/dev/sound/pci/hda
Message-ID:  <201201191118.q0JBILYA088275@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Thu Jan 19 11:18:21 2012
New Revision: 230331
URL: http://svn.freebsd.org/changeset/base/230331

Log:
  Print controller/codec IDs for unknown chips instead of useless and
  frightening "unknown" word. In most cases we don't need to know chips
  to properly handle them, but having IDs in logs may simplify debugging.
  
  MFC after:	2 weeks
  Sponsored by:	iXsystems, Inc.

Modified:
  head/sys/dev/sound/pci/hda/hdac.c
  head/sys/dev/sound/pci/hda/hdacc.c

Modified: head/sys/dev/sound/pci/hda/hdac.c
==============================================================================
--- head/sys/dev/sound/pci/hda/hdac.c	Thu Jan 19 09:51:07 2012	(r230330)
+++ head/sys/dev/sound/pci/hda/hdac.c	Thu Jan 19 11:18:21 2012	(r230331)
@@ -124,9 +124,9 @@ static const struct {
 	{ HDA_NVIDIA_MCP89_2, "NVIDIA MCP89",	0, 0 },
 	{ HDA_NVIDIA_MCP89_3, "NVIDIA MCP89",	0, 0 },
 	{ HDA_NVIDIA_MCP89_4, "NVIDIA MCP89",	0, 0 },
-	{ HDA_NVIDIA_0BE2,   "NVIDIA 0x0be2",	0, HDAC_QUIRK_MSI },
-	{ HDA_NVIDIA_0BE3,   "NVIDIA 0x0be3",	0, HDAC_QUIRK_MSI },
-	{ HDA_NVIDIA_0BE4,   "NVIDIA 0x0be4",	0, HDAC_QUIRK_MSI },
+	{ HDA_NVIDIA_0BE2,   "NVIDIA (0x0be2)",	0, HDAC_QUIRK_MSI },
+	{ HDA_NVIDIA_0BE3,   "NVIDIA (0x0be3)",	0, HDAC_QUIRK_MSI },
+	{ HDA_NVIDIA_0BE4,   "NVIDIA (0x0be4)",	0, HDAC_QUIRK_MSI },
 	{ HDA_NVIDIA_GT100,  "NVIDIA GT100",	0, HDAC_QUIRK_MSI },
 	{ HDA_NVIDIA_GT104,  "NVIDIA GT104",	0, HDAC_QUIRK_MSI },
 	{ HDA_NVIDIA_GT106,  "NVIDIA GT106",	0, HDAC_QUIRK_MSI },
@@ -154,12 +154,12 @@ static const struct {
 	{ HDA_SIS_966,       "SiS 966",		0, 0 },
 	{ HDA_ULI_M5461,     "ULI M5461",	0, 0 },
 	/* Unknown */
-	{ HDA_INTEL_ALL,  "Intel (Unknown)",	0, 0 },
-	{ HDA_NVIDIA_ALL, "NVIDIA (Unknown)",	0, 0 },
-	{ HDA_ATI_ALL,    "ATI (Unknown)",	0, 0 },
-	{ HDA_VIA_ALL,    "VIA (Unknown)",	0, 0 },
-	{ HDA_SIS_ALL,    "SiS (Unknown)",	0, 0 },
-	{ HDA_ULI_ALL,    "ULI (Unknown)",	0, 0 },
+	{ HDA_INTEL_ALL,  "Intel",		0, 0 },
+	{ HDA_NVIDIA_ALL, "NVIDIA",		0, 0 },
+	{ HDA_ATI_ALL,    "ATI",		0, 0 },
+	{ HDA_VIA_ALL,    "VIA",		0, 0 },
+	{ HDA_SIS_ALL,    "SiS",		0, 0 },
+	{ HDA_ULI_ALL,    "ULI",		0, 0 },
 };
 #define HDAC_DEVICES_LEN (sizeof(hdac_devices) / sizeof(hdac_devices[0]))
 
@@ -1017,26 +1017,27 @@ hdac_probe(device_t dev)
 	result = ENXIO;
 	for (i = 0; i < HDAC_DEVICES_LEN; i++) {
 		if (hdac_devices[i].model == model) {
-		    	strlcpy(desc, hdac_devices[i].desc, sizeof(desc));
-		    	result = BUS_PROBE_DEFAULT;
+			strlcpy(desc, hdac_devices[i].desc, sizeof(desc));
+			result = BUS_PROBE_DEFAULT;
 			break;
 		}
 		if (HDA_DEV_MATCH(hdac_devices[i].model, model) &&
 		    class == PCIC_MULTIMEDIA &&
 		    subclass == PCIS_MULTIMEDIA_HDA) {
-		    	strlcpy(desc, hdac_devices[i].desc, sizeof(desc));
-		    	result = BUS_PROBE_GENERIC;
+			snprintf(desc, sizeof(desc),
+			    "%s (0x%04x)",
+			    hdac_devices[i].desc, pci_get_device(dev));
+			result = BUS_PROBE_GENERIC;
 			break;
 		}
 	}
 	if (result == ENXIO && class == PCIC_MULTIMEDIA &&
 	    subclass == PCIS_MULTIMEDIA_HDA) {
-		strlcpy(desc, "Generic", sizeof(desc));
-	    	result = BUS_PROBE_GENERIC;
+		snprintf(desc, sizeof(desc), "Generic (0x%08x)", model);
+		result = BUS_PROBE_GENERIC;
 	}
 	if (result != ENXIO) {
-		strlcat(desc, " HDA Controller",
-		    sizeof(desc));
+		strlcat(desc, " HDA Controller", sizeof(desc));
 		device_set_desc_copy(dev, desc);
 	}
 

Modified: head/sys/dev/sound/pci/hda/hdacc.c
==============================================================================
--- head/sys/dev/sound/pci/hda/hdacc.c	Thu Jan 19 09:51:07 2012	(r230330)
+++ head/sys/dev/sound/pci/hda/hdacc.c	Thu Jan 19 11:18:21 2012	(r230331)
@@ -266,44 +266,22 @@ static const struct {
 	{ HDA_CODEC_SII1390, 0,		"Silicon Image SiI1390" },
 	{ HDA_CODEC_SII1392, 0,		"Silicon Image SiI1392" },
 	/* Unknown CODECs */
-	{ HDA_CODEC_ALCXXXX, 0,		"Realtek (Unknown)" },
-	{ HDA_CODEC_ADXXXX, 0,		"Analog Devices (Unknown)" },
-	{ HDA_CODEC_CSXXXX, 0,		"Cirrus Logic (Unknown)" },
-	{ HDA_CODEC_CMIXXXX, 0,		"CMedia (Unknown)" },
-	{ HDA_CODEC_STACXXXX, 0,	"Sigmatel (Unknown)" },
-	{ HDA_CODEC_SIIXXXX, 0,		"Silicon Image (Unknown)" },
-	{ HDA_CODEC_AGEREXXXX, 0,	"Lucent/Agere Systems (Unknown)" },
-	{ HDA_CODEC_CXXXXX, 0,		"Conexant (Unknown)" },
-	{ HDA_CODEC_VTXXXX, 0,		"VIA (Unknown)" },
-	{ HDA_CODEC_ATIXXXX, 0,		"ATI (Unknown)" },
-	{ HDA_CODEC_NVIDIAXXXX, 0,	"NVIDIA (Unknown)" },
-	{ HDA_CODEC_INTELXXXX, 0,	"Intel (Unknown)" },
-	{ HDA_CODEC_IDTXXXX, 0,		"IDT (Unknown)" },
+	{ HDA_CODEC_ALCXXXX, 0,		"Realtek" },
+	{ HDA_CODEC_ADXXXX, 0,		"Analog Devices" },
+	{ HDA_CODEC_CSXXXX, 0,		"Cirrus Logic" },
+	{ HDA_CODEC_CMIXXXX, 0,		"CMedia" },
+	{ HDA_CODEC_STACXXXX, 0,	"Sigmatel" },
+	{ HDA_CODEC_SIIXXXX, 0,		"Silicon Image" },
+	{ HDA_CODEC_AGEREXXXX, 0,	"Lucent/Agere Systems" },
+	{ HDA_CODEC_CXXXXX, 0,		"Conexant" },
+	{ HDA_CODEC_VTXXXX, 0,		"VIA" },
+	{ HDA_CODEC_ATIXXXX, 0,		"ATI" },
+	{ HDA_CODEC_NVIDIAXXXX, 0,	"NVIDIA" },
+	{ HDA_CODEC_INTELXXXX, 0,	"Intel" },
+	{ HDA_CODEC_IDTXXXX, 0,		"IDT" },
 };
 #define HDACC_CODECS_LEN	(sizeof(hdacc_codecs) / sizeof(hdacc_codecs[0]))
 
-
-/****************************************************************************
- * Function prototypes
- ****************************************************************************/
-
-static char *
-hdacc_codec_name(uint32_t id, uint16_t revid)
-{
-	int i;
-
-	for (i = 0; i < HDACC_CODECS_LEN; i++) {
-		if (!HDA_DEV_MATCH(hdacc_codecs[i].id, id))
-			continue;
-		if (hdacc_codecs[i].revid != 0 &&
-		    hdacc_codecs[i].revid != revid)
-			continue;
-		return (hdacc_codecs[i].name);
-	}
-
-	return ((id == 0x00000000) ? "NULL CODEC" : "Unknown CODEC");
-}
-
 static int
 hdacc_suspend(device_t dev)
 {
@@ -337,10 +315,28 @@ hdacc_probe(device_t dev)
 {
 	uint32_t id, revid;
 	char buf[128];
+	int i;
 
 	id = ((uint32_t)hda_get_vendor_id(dev) << 16) + hda_get_device_id(dev);
 	revid = ((uint32_t)hda_get_revision_id(dev) << 8) + hda_get_stepping_id(dev);
-	snprintf(buf, sizeof(buf), "%s HDA CODEC", hdacc_codec_name(id, revid));
+
+	for (i = 0; i < HDACC_CODECS_LEN; i++) {
+		if (!HDA_DEV_MATCH(hdacc_codecs[i].id, id))
+			continue;
+		if (hdacc_codecs[i].revid != 0 &&
+		    hdacc_codecs[i].revid != revid)
+			continue;
+		break;
+	}
+	if (i < HDACC_CODECS_LEN) {
+		if ((hdacc_codecs[i].id & 0xffff) != 0xffff)
+			strlcpy(buf, hdacc_codecs[i].name, sizeof(buf));
+		else
+			snprintf(buf, sizeof(buf), "%s (0x%04x)",
+			    hdacc_codecs[i].name, hda_get_device_id(dev));
+	} else
+		snprintf(buf, sizeof(buf), "Generic (0x%04x)", id);
+	strlcat(buf, " HDA CODEC", sizeof(buf));
 	device_set_desc_copy(dev, buf);
 	return (BUS_PROBE_DEFAULT);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201191118.q0JBILYA088275>