Subject: Re: kern/32473 (GUS PnP audio device seem to be broken in NetBSD 3.0)
To: None <jmcneill@NetBSD.org, gnats-admin@netbsd.org,>
From: Jared D. McNeill <jmcneill@invisible.ca>
List: netbsd-bugs
Date: 09/24/2006 19:20:03
The following reply was made to PR kern/32473; it has been noted by GNATS.

From: "Jared D. McNeill" <jmcneill@invisible.ca>
To: gnats-bugs@NetBSD.org
Cc: netbsd-bugs@netbsd.org, gnats-admin@netbsd.org, zb@ispid.com.pl
Subject: Re: kern/32473 (GUS PnP audio device seem to be broken in NetBSD 3.0)
Date: Sun, 24 Sep 2006 16:18:24 -0300

 --Apple-Mail-1-429677987
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	charset=US-ASCII;
 	delsp=yes;
 	format=flowed
 
 As far as I can tell, the gus_isapnp_attach function never calls  
 isa_drq_alloc. Can you try the attached patch?
 
 Cheers,
 Jared
 
 
 --Apple-Mail-1-429677987
 Content-Transfer-Encoding: 7bit
 Content-Type: application/octet-stream;
 	x-unix-mode=0640;
 	name=gus_isapnp.diff
 Content-Disposition: attachment;
 	filename=gus_isapnp.diff
 
 Index: gus_isapnp.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/isapnp/gus_isapnp.c,v
 retrieving revision 1.27
 diff -u -r1.27 gus_isapnp.c
 --- gus_isapnp.c	30 Aug 2006 02:11:42 -0000	1.27
 +++ gus_isapnp.c	24 Sep 2006 19:14:24 -0000
 @@ -185,6 +185,11 @@
  	if (sc->sc_playdrq != -1) {
  		sc->sc_play_maxsize = isa_dmamaxsize(sc->sc_ic,
  		    sc->sc_playdrq);
 +		if (isa_drq_alloc(sc->sc_ic, sc->sc_playdrq) != 0) {
 +			printf("%s: can't reserve drq %d\n",
 +			    sc->sc_dev.dv_xname, sc->sc_playdrq);
 +			return;
 +		}
  		if (isa_dmamap_create(sc->sc_ic, sc->sc_playdrq,
  		    sc->sc_play_maxsize, BUS_DMA_NOWAIT|BUS_DMA_ALLOCNOW)) {
  			printf("%s: can't create map for drq %d\n",
 @@ -195,6 +200,11 @@
  	if (sc->sc_recdrq != -1) {
  		sc->sc_rec_maxsize = isa_dmamaxsize(sc->sc_ic,
  		    sc->sc_recdrq);
 +		if (isa_drq_alloc(sc->sc_ic, sc->sc_recdrq) != 0) {
 +			printf("%s: can't reserve drq %d\n",
 +			    sc->sc_dev.dv_xname, sc->sc_recdrq);
 +			return;
 +		}
  		if (isa_dmamap_create(sc->sc_ic, sc->sc_recdrq,
  		    sc->sc_rec_maxsize, BUS_DMA_NOWAIT|BUS_DMA_ALLOCNOW)) {
  			printf("%s: can't create map for drq %d\n",
 
 --Apple-Mail-1-429677987--