ESS Maestro3 no sound
mus.bsd at gmail.com
Mon Jul 11 09:03:21 GMT 2005
After much searching on how to do the patching I think i got it right,
but it still does not solve my problem. Here is what I did:
1. Tired to use the patch command and didn't work, because it can't
find line 1023 in the original maestro3.c (on my machine). I knew
about this but just gave it a try, hoping that I don't have to go the
long way :-)
2. Went to locate my sound driver modules and found it in
/usr/src/sys/modules/sound/driver/maestro3. Use to the make command to
see what it does.
*Q1: Is this the source code for the maestro3?
3. I then located and modified my maestro3.c file in
/usr/src/sys/dev/sound/pci/maestro3.c (before that made a copy of the
old one). Add and commenting out the stuff that you suggested.
4. went back to ~/sound/driver/maestro3 and recompiled it again. It
compiled without a problem and I then loaded the module by using
#kldload snd_driver. Look up /dev/sndstat and it showed the same thing
pcm0: <ESS Technology Maestro3> at io 0xd800 irq 5 kld snd_maestro3
(4p/1r/0v channels duplex default)
5. Restarted my machine by having snd_maestro3_load="YES" loaded into
6. Tried using xmms and the same problem happened, the xmms plays the
song but with no sound. Looked at /var/run/dmesg.boot to see what went
wrong and it output the same problem:
pci0: <bridge, PCI-unknown> at device 7.3 (no driver attached)
pcm0: <ESS Technology Maestro3> port 0xd800-0xd8ff mem
0xf3ffe000-0xf3ffffff irq 5 at device 8.0 on pci0
pcm0: failed: rid 0x10 is ioport, requested 3
Q2: Now I might have compiled the code right but did I load the module
correctly? (i seem to be at the same conclusion, so I'm guessing it
Q3: If this does not work do I need to tweek the source to make my
card work? If so
looking at the code I don't know where to begin :(
Hopeless and confuse
On 7/1/05, Pyun YongHyeon <yongari at rndsoft.co.kr> wrote:
> On Wed, Jun 29, 2005 at 09:07:59AM -0600, Scott Long wrote:
> > It looks like yet more decay in the driver. When I wrote it, I was lazy
> > and didn't want to figure out which chip versions preferred IOPORT
> > mapping and which ones preferred MEMIO, so I just had it try MEMIO first
> > (since that is a better choice) and then fail back to IOPORT. The
> > resource manager seemed to tolerate this back then, but apparently it
> > doesn't now. My guess is that the first call to bus_alloc_resource
> > returns success but actually fails, and in the process it leaks the
> > resource out of the resource manager. Then when you unload and load
> > again, the resource is unavailable (since it was leaked) so the first
> > call to fails, prompting it to go to the second call which succeeds
> > fully. This would mean that there are now a number of bugs in the
> > resource manager which need to be fixed.
> > Based on what I've seen over the years, it might be safe to assume that
> > BAR0 on both the meastro3 and allegro1 is IOPORT and that BAR1 on the
> > maestro3 is MEMIO. Thus, the easiest change might be to just remove
> > the first bus_alloc_resource call and force the driver to always use
> > IOPORT. I'd still like to use this as a test case for fixing the deeper
> > bugs in the resource manager, though.
> Thanks for detailed explanation. :-)
> Here is patch. Muzaffar, does the patch change your situation?
> Btw, I encountered dreasful message "play interrupt timeout, channel dead"
> again. Unloading the driver and then reloading the driver fixed it.
> Since I see "pci_link2: Unable to choose an IRQ" during driver load
> I can't sure it's fault of maestro3(4) driver.
> Pyun YongHyeon
> http://www.kr.freebsd.org/~yongari | yongari at freebsd.org
mus.bsd at gmail.com
More information about the freebsd-multimedia