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