Subject: Re: TC bba audio problem on DEC3000/300
To: None <thorpej@zembu.com>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: port-alpha
Date: 07/14/2000 22:14:59
In <20000713160357.D1144@dr-evil.z.zembu.com>
thorpej@zembu.com wrote:

> Okay, how about the following?  This more correctly shows what is going on,
> per Chris's comments.

This patch fixes the panic, but it seems bba on 3000/300
still has some problems.

When I try to play some au files by audioplay,
the machine plays some sound (maybe correct data) in
very short time (~100ms?), but after that, the kernel
hangs up without any messages. The kernel with AUDIO_DEBUG shows:

[...]
bba_codec_iwrite16(): sc=0xfffffe0000003600, reg=101, val=17183
bba_codec_dwrite(): sc=0xfffffe0000003600, reg=0, val=101
bba_codec_dwrite(): sc=0xfffffe0000003600, reg=1, val=31
bba_codec_dwrite(): sc=0xfffffe0000003600, reg=1, val=67
bba_output_conv(): v=0xfffffe0000003600 p=0xfffffc000094c000 cc=1642
bba_trigger_output: sc=0xfffffe0000003600 start=0xfffffc000094c000 \
end=0xfffffe000095c000 blksize=8192 intr=0xfffffc0000318f40(0xfffffe0000022800)
[..stop after short sound..]

BTW, the attached patch is needed to compile with AUDIO_DEBUG:

--- bba.c.orig	Sat Jul  1 19:28:44 2000
+++ bba.c	Fri Jul 14 21:58:40 2000
@@ -308,7 +308,7 @@
 	int w;
 	int state = 0;
 
-	DPRINTF(("bba_allocm: size = %d\n",size));
+	DPRINTF(("bba_allocm: size = %ld\n", (long)size));
 
 	w = (flags & M_NOWAIT) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK;
 
@@ -382,7 +382,7 @@
 	int direction;
 	size_t size;
 {
-	DPRINTF(("bba_round_buffersize: size=%d\n", size));
+	DPRINTF(("bba_round_buffersize: size=%ld\n", (long)size));
 
 	return  (size > BBA_DMABUF_SIZE ? BBA_DMABUF_SIZE : round_page(size));
 }

---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp