Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Nov 2000 18:23:07 +0000 (GMT)
From:      Andrew Gordon <arg@arg1.demon.co.uk>
To:        Cameron Grant <gandalf@vilnya.demon.co.uk>
Cc:        j mckitrick <jcm@FreeBSD-uk.eu.org>, stable@freebsd.org, multimedia@freebsd.org
Subject:   RE: continuing sound problems with 4.2-beta
Message-ID:  <Pine.BSF.4.21.0011121754060.11961-100000@server.arg.sj.co.uk>
In-Reply-To: <BDEAILDCDDOFPBENNGFKMEBBCAAA.gandalf@vilnya.demon.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 10 Nov 2000, Cameron Grant wrote:

> > I ran into this the other day; it appears that there has been a change in
> > the sound API recently such that you need to do SNDCTL_DSP_SPEED before
> > SNDCTL_DSP_SETFMT.  I haven't had time to dig into CVS to see when this
> > happened or why.
> 
> this is a bug that i cannot replicate.  can you give me more info on your
> hardware?

pcm0: <VIA VT82C686A AC'97 Audio> port
0xe400-0xe403,0xe000-0xe003,0xdc00-0xdcff irq 10 at device 7.5 on pci0


FreeBSD Audio Driver (newpcm) Nov 12 2000 01:08:07
Installed devices:
pcm0: <VIA VT82C686A AC'97 Audio> at io 0xdc00 irq 10 (1p/1r channels
duplex)

This is now running with -stable from yesterday.

However, I think the real problem relates to the AC'97 codec rather than
the VIA chipset - this codec only supports one speed (44KHz).

I have now traced the problem some way into the driver.  The DSP_SETFMT
call never gets as far as the hardware specific driver - it calls
chn_setformat(), which then calls chn_buildfeeder(), which returns EINVAL
from around line 1430:

        for (type = FEEDER_RATE; type <= FEEDER_LAST; type++) {
                if (flags & (1 << type)) {
                        desc.type = type;
                        desc.in = 0;
                        desc.out = 0;
                        desc.flags = 0;
                        DEB(printf("find feeder type %d, ", type));
                        f = feeder_get(&desc);
                        DEB(printf("got %p\n", f));
                        if (f == NULL)
                                return EINVAL;
  



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0011121754060.11961-100000>