ESS Maestro3 no sound

Pyun YongHyeon pyunyh at gmail.com
Wed Jul 13 01:11:34 GMT 2005


On Wed, Jul 13, 2005 at 08:47:00AM +0800, Muzaffar Ariff wrote:
 > > Hmm, I'm afraid you loaded old module again. Please let me know which
 > > FreeBSD version you used. I can make a patch for the specific FreeBSD
 > > version.
 > 
 > I'm using FreeBSD 5.3-release. Are you saying that I did the patching
 > and loading of the patch correctly, its just you gave the wrong one?
 > (need to know either my methods were right)
 > 
I can't sure but your dmeseg output says it was not patched.
Try attached patch on your system.

1. Save attached patch file to your system(e.g. /tmp).
2. Patch and build.
        #cd /usr/src
        #patch -p0 < /path/to/patchfile
        #cd /usr/src/sys/modules/sound/driver/maestro3
        #make
3. Load built module and experiment it.
        #kldload ./snd_maestro3.ko

4. It the driver works then install it.
        #make install

Please let me know how it goes on your system.

-- 
Regards,
Pyun YongHyeon
-------------- next part --------------
--- sys/dev/sound/pci/maestro3.c.orig	Fri Jul 16 12:59:27 2004
+++ sys/dev/sound/pci/maestro3.c	Wed Jul 13 10:02:46 2005
@@ -1105,19 +1105,21 @@
 		}
 	}
 
+	pci_enable_busmaster(dev);
 	data = pci_read_config(dev, PCIR_COMMAND, 2);
-	data |= (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN);
+	data |= (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN);
 	pci_write_config(dev, PCIR_COMMAND, data, 2);
 
 	sc->regid = PCIR_BAR(0);
-	sc->regtype = SYS_RES_MEMORY;
+	data = pci_read_config(dev, PCIR_COMMAND, 2);
+	device_printf(dev,"PCIR_COMMAND = 0x%x\n", data);
+	sc->regtype = SYS_RES_IOPORT;
+	if ((data & PCIM_CMD_PORTEN) == 0) {
+		sc->regtype = SYS_RES_MEMORY;
+		device_printf(dev,"using memory mapped I/O\n");
+	}
 	sc->reg = bus_alloc_resource_any(dev, sc->regtype, &sc->regid,
 					 RF_ACTIVE);
-	if (!sc->reg) {
-		sc->regtype = SYS_RES_IOPORT;
-		sc->reg = bus_alloc_resource_any(dev, sc->regtype, &sc->regid,
-						 RF_ACTIVE);
-	}
 	if (!sc->reg) {
 		device_printf(dev, "unable to allocate register space\n");
 		goto bad;


More information about the freebsd-multimedia mailing list