Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 01 Dec 1999 10:18:26 +0900
From:      Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>
To:        current@freebsd.org
Cc:        Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>
Subject:   Please check missing logical IDs for SB
Message-ID:  <14404.30562.4717.91839F@rina.r.dl.itc.u-tokyo.ac.jp>

index | next in thread | raw e-mail

[-- Attachment #1 --]
If you have an SB card not probed since the import of the bridge
dirvers, could you please apply the following patch, add the logical
ID of your card into sbc_ids[] and see how it works?
(I have asked peter to review the PnP part of the patch)



[-- Attachment #2 --]
Index: sbc.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/isa/sbc.c,v
retrieving revision 1.2
diff -u -r1.2 sbc.c
--- sbc.c	1999/11/27 06:33:27	1.2
+++ sbc.c	1999/11/30 06:28:19
@@ -82,125 +82,42 @@
 
 static devclass_t sbc_devclass;
 
-#if NISA > 0 && NPNP > 0
-static int
-sbc_probe(device_t dev)
-{
-	u_int32_t vend_id, logical_id, vend_id2;
-	char *s;
-	struct sndcard_func *func;
 
-	vend_id = isa_get_vendorid(dev);
-	vend_id2 = vend_id & 0xff00ffff;
-	logical_id = isa_get_logicalid(dev);
-	s = NULL;
+#if NISA > 0 && NPNP > 0
 
-	switch (logical_id) {
+static struct isa_pnp_id sbc_ids[] = {
 #if notdef
-	case 0x0000630e: /* Crystal Semiconductor */
-		if (vend_id2 ==0x3600630e) /* CS4236 */
-			s = "CS4236";
-		else if (vend_id2 ==0x3200630e) /* CS4232 */
-			s = "CS4232";
-		else if (vend_id2 ==0x3500630e) /* CS4236B */
-			s = "CS4236B";
-		break;
-#endif /* notdef */
-	case 0x01008c0e: /* Creative ViBRA16C */
-		if (vend_id2 == 0x70008c0e)
-			s = "Creative ViBRA16C PnP";
-		break;
-	case 0x43008c0e: /* Creative ViBRA16X */
-		if (vend_id2 == 0xf0008c0e)
-			s = "Creative ViBRA16C PnP";
-		break;
-	case 0x31008c0e: /* Creative SB */
-		if (vend_id2 == 0x26008c0e)
-			s = "Creative SB16 PnP";
-		else if (vend_id2 == 0x42008c0e)
-			s = "Creative SB32 (CTL0042)";
-		else if (vend_id2 == 0x44008c0e)
-			s = "Creative SB32 (CTL0044)";
-		else if (vend_id2 == 0x48008c0e)
-			s = "Creative SB32 (CTL0048)";
-		else if (vend_id2 == 0x49008c0e)
-			s = "Creative SB32 (CTL0049)";
-		else if (vend_id2 == 0xf1008c0e)
-			s = "Creative SB32 (CTL00f1)";
-		break;
-	case 0x42008c0e: /* Creative SB AWE64 (CTL00c1) */
-		if (vend_id2 == 0xc1008c0e)
-			s = "Creative SB AWE64 (CTL00c1)";
-		break;
-	case 0x45008c0e: /* Creative SB AWE64 (CTL0045) */
-		if (vend_id2 == 0xe4008c0e)
-			s = "Creative SB AWE64 (CTL0045)";
-		break;
+	{0x0000630e, "CS423x"},
+#endif
+	{0x01008c0e, "Creative ViBRA16C PnP"},
+	{0x43008c0e, "Creative ViBRA16X PnP"},
+	{0x31008c0e, "Creative SB16 PnP/SB32"},
+	{0x42008c0e, "Creative SB AWE64"}, /* CTL00c1 */
+	{0x45008c0e, "Creative SB AWE64"}, /* CTL0045 */
 #if notdef
-	case 0x01200001: /* Avance Logic */
-		if (vend_id2 == 0x20009305)
-			s = "Avance Logic ALS120";
-		break;
-	case 0x01100001: /* Avance Asound */
-		if (vend_id2 == 0x10009305)
-			s = "Avance Asound 110";
-		break;
-	case 0x68187316: /* ESS1868 */
-		if (vend_id2 == 0x68007316)
-			s = "ESS ES1868 Plug and Play AudioDrive";
-		break;
-	case 0x79187316: /* ESS1879 */
-		if (vend_id2 == 0x79007316)
-			s = "ESS ES1879 Plug and Play AudioDrive";
-		break;
-	case 0x2100a865: /* Yamaha */
-		if (vend_id2 == 0x2000a865)
-			s = "Yamaha OPL3-SA2/SAX Sound Board";
-		break;
-	case 0x80719304: /* Terratec */
-		if (vend_id2 == 0x1114b250)
-			s = "Terratec Soundsystem Base 1";
-		break;
-	case 0x0300561e: /* Gravis */
-		if (vend_id2 == 0x0100561e)
-			s = "Gravis UltraSound Plug & Play";
-		break;
-#endif /* notdef */
-	}
-
-	if (s != NULL) {
-		device_set_desc(dev, s);
-
-		/* PCM Audio */
-		func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
-		if (func == NULL)
-			return (ENOMEM);
-		bzero(func, sizeof(*func));
-		func->func = SCF_PCM;
-		device_add_child(dev, "pcm", -1, func);
+	{0x01200001, "Avance Logic ALS120"},
+	{0x01100001, "Avance Asound 110"},
+	{0x68187316, "ESS ES1868 Plug and Play AudioDrive"}, /* ESS1868 */
+	{0x79187316, "ESS ES1879 Plug and Play AudioDrive"}, /* ESS1879 */
+	{0x2100a865, "Yamaha OPL3-SA2/SAX Sound Board"},
+	{0x80719304, "Terratec Soundsystem Base 1"},
+#endif
+	{0}
+};
+	
 
-#if notyet
-		/* Midi Interface */
-		func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
-		if (func == NULL)
-			return (ENOMEM);
-		bzero(func, sizeof(*func));
-		func->func = SCF_MIDI;
-		device_add_child(dev, "midi", -1, func);
-
-		/* OPL FM Synthesizer */
-		func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
-		if (func == NULL)
-			return (ENOMEM);
-		bzero(func, sizeof(*func));
-		func->func = SCF_SYNTH;
-		device_add_child(dev, "midi", -1, func);
-#endif /* notyet */
-
-		return (0);
-	}
+};
+static int
+sbc_probe(device_t dev)
+{
+	int error;
 
-	return (ENXIO);
+	/* Check pnp ids */
+	error = ISA_PNP_PROBE(device_get_parent(dev), dev, sbc_ids);
+	if (error)
+		return error;
+	else
+		return -100;
 }
 
 static int
@@ -208,6 +125,7 @@
 {
 	sc_p scp;
 	int unit;
+	struct sndcard_func *func;
 
 	scp = device_get_softc(dev);
 	unit = device_get_unit(dev);
@@ -219,6 +137,32 @@
 		release_resource(scp);
 		return (ENXIO);
 	}
+
+	/* PCM Audio */
+	func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
+	if (func == NULL)
+		return (ENOMEM);
+	bzero(func, sizeof(*func));
+	func->func = SCF_PCM;
+	device_add_child(dev, "pcm", -1, func);
+
+#if notyet
+	/* Midi Interface */
+	func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
+	if (func == NULL)
+		return (ENOMEM);
+	bzero(func, sizeof(*func));
+	func->func = SCF_MIDI;
+	device_add_child(dev, "midi", -1, func);
+
+	/* OPL FM Synthesizer */
+	func = malloc(sizeof(struct sndcard_func), M_DEVBUF, M_NOWAIT);
+	if (func == NULL)
+		return (ENOMEM);
+	bzero(func, sizeof(*func));
+	func->func = SCF_SYNTH;
+	device_add_child(dev, "midi", -1, func);
+#endif /* notyet */
 
 	bus_generic_attach(dev);
 
help

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