Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Jan 2000 19:30:07 -0500 (EST)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        current@freebsd.org
Cc:        cg@freebsd.org
Subject:   newpcm: ESS1688, simplex problems, stuttering
Message-ID:  <14478.15418.821563.496512@grasshopper.cs.duke.edu>

next in thread | raw e-mail | index | archive | help

I've just upgraded my wheezing P120Mhz Dell Lattitude LM to a recent
-current (Jan24 snap) & the sound *almost* works!

The first problem I had was to get the card recognized.  I needed to
patch the sbc bridge driver to recognize the ESS 1688:

Index: sys/dev/sound/isa/sbc.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/isa/sbc.c,v
retrieving revision 1.16
diff -u -r1.16 sbc.c
--- sbc.c	2000/01/12 11:16:23	1.16
+++ sbc.c	2000/01/25 04:29:06
@@ -205,6 +205,7 @@
 	{0x01100000, "Avance Asound 110"},		/* @@@1001 */
 	{0x01200000, "Avance Logic ALS120"},		/* @@@2001 */
 
+	{0x02017316, "ESS ES1688"},			/* ESS1688 */
 	{0x68187316, "ESS ES1868"},			/* ESS1868 */
 	{0x69187316, "ESS ES1869"},			/* ESS1869 */
 	{0xacb0110e, "ESS ES1869 (Compaq OEM)"},	/* CPQb0ac */

The second problem I had was that this laptop gives its sound card
only one DMA channel (drq 1).  Newpcm seems to have horrible problems
on simplex cards:

The sound card is now recognized & when I run amp I don't hear any
output.  If I run ktrace on the amp session, it doesn't look like any
writes are initiated to /dev/dsp from the child process.  I don't see
any interrupts on irq5 nor do I hear any sound.

The problem is that in getchns() (in dsp.c), the channel is set to
fakechan if the channel is simplex (eg, 1 DMA channel) and if the
priority hasn't been set.  It looks like SD_F_PRIO_WR is only set on
the channel in dsp_write().  But apparently dsp_write() never gets
called (or gets called after getchns()), so this prevents newpcm from
working on a simplex channel.  I have the following crude hack in
place:

Index: sys/dev/sound/pcm/dsp.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/dsp.c,v
retrieving revision 1.14
diff -u -r1.14 dsp.c
--- dsp.c	2000/01/10 07:05:15	1.14
+++ dsp.c	2000/01/25 04:27:12
@@ -54,6 +54,8 @@
 	KASSERT((d->flags & SD_F_PRIO_SET) != SD_F_PRIO_SET, \
 		("getchns: read and write both prioritised"));
 
+if(!(d->flags & (SD_F_PRIO_RD | SD_F_PRIO_WR)))   d->flags |= SD_F_PRIO_WR;
+
 	if (d->flags & SD_F_SIMPLEX) {
 		*rdch = (d->flags & SD_F_PRIO_RD)? d->arec[chan] : &d->fakechan;
 		*wrch = (d->flags & SD_F_PRIO_WR)? d->aplay[chan] : &d->fakechan;



This gets me to the point where I can actually hear my laptop make
noise!  Unfortunately, I seem to be having the same symptoms as Nick
Hibma & Donn Miller are reporting in the "pcm - stutters" thread.
Since my box is dog-slow, I only hear stuttering from amp.  It is a
little better with RealPlayerG2, but not great.

Thanks for any help!

Drew

------------------------------------------------------------------------------
Andrew Gallatin, Sr Systems Programmer	http://www.cs.duke.edu/~gallatin
Duke University				Email: gallatin@cs.duke.edu
Department of Computer Science		Phone: (919) 660-6590


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




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