Subject: Re: A-to-D with SBPRO on 1.0
To: None <chiltj@ois.com>
From: Charles M. Hannum <mycroft@gnu.ai.mit.edu>
List: netbsd-help
Date: 01/14/1995 20:08:53
   I'm wondering if anyone could tell me the secret to reading from the
   /dev/audio device on NetBSD 1.0 with a Soundblaster "Pro" [1] in it.

The `sb' driver was broken for reading in 1.0.  The one in -current
should work better.

Here's the relevant diff:

*** sb.c~	1994/11/18 22:03:38
--- sb.c	1994/12/17 18:45:11
***************
*** 40,43 ****
--- 40,44 ----
  #include <sys/syslog.h>
  #include <sys/device.h>
+ #include <sys/buf.h>
  
  #include <machine/cpu.h>
***************
*** 180,184 ****
  	 * never need the buffer anyway.)
  	 */
! 	at_dma(1, &dmabuf, 1, ia->ia_drq);
  	if (wdsp(iobase, SB_DSP_RDMA) == 0) {
  		(void)wdsp(iobase, 0);
--- 181,185 ----
  	 * never need the buffer anyway.)
  	 */
! 	at_dma(B_READ, &dmabuf, 1, ia->ia_drq);
  	if (wdsp(iobase, SB_DSP_RDMA) == 0) {
  		(void)wdsp(iobase, 0);
***************
*** 525,529 ****
  	register int iobase;
  
! 	at_dma(1, p, cc, sc->sc_dmachan);
  	sc->sc_intr = intr;
  	sc->sc_arg = arg;
--- 536,540 ----
  	register int iobase;
  
! 	at_dma(B_READ, p, cc, sc->sc_dmachan);
  	sc->sc_intr = intr;
  	sc->sc_arg = arg;
***************
*** 560,564 ****
  	register int iobase;
  
! 	at_dma(0, p, cc, sc->sc_dmachan);
  	sc->sc_intr = intr;
  	sc->sc_arg = arg;
--- 571,575 ----
  	register int iobase;
  
! 	at_dma(B_WRITE, p, cc, sc->sc_dmachan);
  	sc->sc_intr = intr;
  	sc->sc_arg = arg;