kern/87782: [sound] snd_t4dwave and pcm0:record:0: record interrupt timeout, channel dead

Pyun YongHyeon pyunyh at gmail.com
Tue Oct 10 18:18:30 PDT 2006


On Tue, Oct 10, 2006 at 03:59:20PM -0400, Anish Mistry wrote:
 > On Tuesday 10 October 2006 03:16, Pyun YongHyeon wrote:
 > > On Sat, Oct 07, 2006 at 04:52:02PM -0400, Anish Mistry wrote:
 > >  > On Monday 21 November 2005 10:30, Marian Cerny wrote:
 > >  > > The following reply was made to PR kern/87782; it has been
 > >  > > noted by GNATS.
 > >  > >
 > >  > > From: Marian Cerny <jojo at matfyz.cz>
 > >  > > To: bug-followup at FreeBSD.org, freebsd at fadesa.es
 > >  > > Cc:
 > >  > > Subject: Re: kern/87782: [sound] snd_t4dwave and
 > >  > > pcm0:record:0: record interrupt timeout, channel dead Date:
 > >  > > Mon, 21 Nov 2005 16:29:00 +0100
 > >  > >
 > >  > >  I have the same problem on FreeBSD 5.4-RELEASE-p1.
 > >  > >
 > >  > >  # dmesg | grep pcm
 > >  > >  pcm0: <Acer Labs M5451> port 0x8400-0x84ff mem
 > >  > > 0xf0011000-0xf0011fff irq 5 at device 8.0 on pci0 pcm0:
 > >  > > <Analog Devices AD1886A AC97 Codec>
 > >  > >  pcm0:record:0: record interrupt timeout, channel dead
 > >  >
 > >  > pcm0: <Acer Labs M5451> port 0x1000-0x10ff mem
 > >  > 0xfc101000-0xfc101fff irq 9 at device 4.0 on pci0
 > >  > pcm0: <SigmaTel STAC9756/57 AC97 Codec>
 > >  > pcm0: <Acer Labs M5451> at io 0x1000 irq 9 kld snd_t4dwave
 > >  > (4p/1r/1v channels duplex default)
 > >  >
 > >  > I'm still seeing this with -CURRENT.  I can give access to
 > >  > someone if they need access.
 > >
 > > Hmm... I think I've posted a possible fix log time ago but got no
 > > reply. Would you please try attached patch?
 > > If it work for you I'll make complete patch.
 > The patch does not work.  I don't see the channel dead message when 
 > using wmrecord, but the app sort of hangs (I can stop the recording, 
 > but the timer doesn't advance) and doesn't record anything.  There 
 > seems to be data in the wav file but it isn't playable.  Attached.
 > 

Did recording ever work on your M5451?
I have no idea why t4dwave(4) still uses legacy capturing mode(Sound
Blaster compatible mode). It seems that M5451 support code lacks codec
initialization. So I guess its ADC part was not activated.
Try attached patch and let me know the result.

-- 
Regards,
Pyun YongHyeon
-------------- next part --------------
--- t4dwave.c.orig	Tue Mar  1 17:58:05 2005
+++ t4dwave.c	Wed Oct 11 09:57:42 2006
@@ -93,6 +93,7 @@
 
 	struct mtx *lock;
 
+	u_int32_t numchans;
 	u_int32_t playchns;
 	unsigned int bufsz;
 
@@ -725,7 +726,7 @@
 	intsrc = tr_rd(tr, TR_REG_MISCINT, 4);
 	if (intsrc & TR_INT_ADDR) {
 		chnum = 0;
-		while (chnum < 64) {
+		while (chnum < tr->numchans) {
 			mask = 0x00000001;
 			active = tr_rd(tr, (chnum < 32)? TR_REG_ADDRINTA : TR_REG_ADDRINTB, 4);
 			bufhalf = tr_rd(tr, (chnum < 32)? TR_REG_CSPF_A : TR_REG_CSPF_B, 4);
@@ -773,6 +774,7 @@
 		tr_wr(tr, SPA_REG_CODECST, SPA_RST_OFF, 4);
 		break;
 	case TDX_PCI_ID:
+	case ALI_PCI_ID:
 		tr_wr(tr, TDX_REG_CODECST, TDX_CDC_ON, 4);
 		break;
 	case TNX_PCI_ID:
@@ -846,6 +848,10 @@
 		device_printf(dev, "unable to initialize the card\n");
 		goto bad;
 	}
+	if (tr->type == ALI_PCI_ID)
+		tr->numchans = 32;
+	else
+		tr->numchans = 64;
 	tr->playchns = 0;
 
 	codec = AC97_CREATE(dev, tr, tr_ac97);


More information about the freebsd-multimedia mailing list