Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Apr 2006 20:28:29 -0700
From:      George Hartzell <hartzell@alerce.com>
To:        freebsd-multimedia@freebsd.org
Subject:   Odd code in sound/pcm/channel.c, help with PR?
Message-ID:  <17477.44637.316536.583639@satchel.alerce.com>

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

I'm trying to get some traction and get sound to work on my ASUS
A8V-MX.  I keep ending up with

  pcm0:play:0::dsp0.0: play interrupt timeout, channel dead

on my console.

I've filed a PR with more details:

  http://www.freebsd.org/cgi/query-pr.cgi?pr=95949

I've been looking around, trying to understand what might be going on.
I came across the following piece of code in
/usr/src/sys/device/sound/pcm/channel.com, around line 320

timeout = (hz * sndbuf_getblksz(bs)) / (sndbuf_getspd(bs) * sndbuf_getbps(bs));
if (timeout < 1)
        timeout = 1;
timeout = 1;
ret = chn_sleep(c, "pcmwr", timeout);
if (ret == EWOULDBLOCK) {
        count -= timeout;
        ret = 0;
} else if (ret == 0)
        count = hz;

It's funny that it goes to the trouble to figure out a timeout value
then seems to unconditionally set it to 1.

Removing that line doesn't seem to fix my problem, but it still seems
weird.


And, while I've got your attention, can anyone suggest where I might
look to understand why the buffer doesn't seem to be being emptied?

Thanks,

g.



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