Date: Fri, 13 May 2005 14:50:51 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/80977: panic with the vibra16x when trying to record Message-ID: <200505131450.52312.hselasky@c2i.net> Resent-Message-ID: <200505131300.j4DD0Cwm010096@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 80977 >Category: kern >Synopsis: panic with the vibra16x when trying to record >Confidential: no >Severity: critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri May 13 13:00:12 GMT 2005 >Closed-Date: >Last-Modified: >Originator: HPS >Release: FreeBSD 6.0-CURRENT i386 >Organization: >Environment: System: FreeBSD 6.0-CURRENT FreeBSD 6.0-CURRENT #45: Mon Mar 21 15:40:17 CET 2005 root@:/usr/obj/usr/src/sys/custom i386 >Description: panic with the vibra16x when trying to record >How-To-Repeat: >Fix: *** sys/dev/sound/isa/sb16.c.ref Wed Oct 20 22:10:18 2004 --- sys/dev/sound/isa/sb16.c Mon Nov 22 17:56:05 2004 *************** *** 478,484 **** sb_intr(void *arg) { struct sb_info *sb = (struct sb_info *)arg; ! int reason = 3, c; /* * The Vibra16X has separate flags for 8 and 16 bit transfers, but --- 478,484 ---- sb_intr(void *arg) { struct sb_info *sb = (struct sb_info *)arg; ! int reason, c; /* * The Vibra16X has separate flags for 8 and 16 bit transfers, but *************** *** 554,561 **** sb_reset_dsp(sb); if (sb->bd_flags & BD_F_SB16X) { pprio = sb->pch.run? 1 : 0; ! sndbuf_dmasetup(sb->pch.buffer, pprio? sb->drq1 : NULL); sb->pch.dch = pprio? 1 : 0; sndbuf_dmasetup(sb->rch.buffer, pprio? sb->drq2 : sb->drq1); sb->rch.dch = pprio? 2 : 1; --- 554,562 ---- sb_reset_dsp(sb); if (sb->bd_flags & BD_F_SB16X) { + /* full-duplex doesn't work! */ pprio = sb->pch.run? 1 : 0; ! sndbuf_dmasetup(sb->pch.buffer, pprio? sb->drq1 : sb->drq2); sb->pch.dch = pprio? 1 : 0; sndbuf_dmasetup(sb->rch.buffer, pprio? sb->drq2 : sb->drq1); sb->rch.dch = pprio? 2 : 1; The vibra16X supports full duplex. I traced the Windows driver, and what is does is that it programs one DMA channel 8-bit, and the other 16-bit. There might be some kind of auto detection logic here, because it always uses 8-bit for playback, even if I play 16-bit sound ... >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505131450.52312.hselasky>