From owner-freebsd-stable Sun Nov 12 10:23:16 2000 Delivered-To: freebsd-stable@freebsd.org Received: from arg1.demon.co.uk (arg1.demon.co.uk [194.222.34.166]) by hub.freebsd.org (Postfix) with ESMTP id B62E937B479; Sun, 12 Nov 2000 10:23:09 -0800 (PST) Received: by arg1.demon.co.uk (Postfix, from userid 300) id C67369B10; Sun, 12 Nov 2000 18:23:07 +0000 (GMT) Received: from localhost (localhost [127.0.0.1]) by arg1.demon.co.uk (Postfix) with ESMTP id C35285D07; Sun, 12 Nov 2000 18:23:07 +0000 (GMT) Date: Sun, 12 Nov 2000 18:23:07 +0000 (GMT) From: Andrew Gordon X-Sender: arg@server.arg.sj.co.uk To: Cameron Grant Cc: j mckitrick , stable@freebsd.org, multimedia@freebsd.org Subject: RE: continuing sound problems with 4.2-beta In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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: 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: 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