Subject: Re: sound blaster / vibra16x PnP
To: Tracy J. Di Marco White <gendalia@iastate.edu>
From: David Stanhope <dms@celtech.com>
List: current-users
Date: 11/12/1997 00:03:23
> 
> 
> <This is a repeat, since my previous post probably got caught by the
> list filters... it hasn't show up in the last couple days, anyway.
> Apologies if you've seen it already.>
> 
> I'm running NetBSD/i386, current as of Friday.  I have a sound blaster 16 PNP
> that is actually a Vibra16X.  It originally came up:
> Nov  7 14:33:47 solstice /netbsd: isapnp0: <Creative ViBRA16X PnP, CTL0043, , Au
> dio> port 0x220/16,0x330/2,0x388/4 irq 5 drq 1,3 not configured
> 
> I edited sys/dev/isapnp/sb_isapnp.c to recognize the CTL0043, and now I
> get this:
> sb0 at isapnp0 port 0x220/16,0x330/2,0x388/4 irq 5 drq 1,3
> sb0: setting drq mask 0a failed, got 02
> sb0: sbmatch failed
> 
> Would someone familiar with the sound blaster code care to guide me
> through getting this recognized properly?
> 
> Tracy J. Di Marco White
> Project Vincent Systems Manager
> gendalia@iastate.edu
> 
I have one of these cards and while the box says it is a SB16 it is not
one in the traditional sense, main difference seems to be that it does not
have or allow a 16bit dma channel to be used, it instead uses two 8bit dma
channels as can be seen in the pnp output. Also the 2nd 8bit channel does not
work using the normal commands, that is why the drq mask set fails, it would
fail anyway since it can't be written on pnp SB cards, but if you set both
dma channels to the same one then the driver will work ok since it will write
what is already there and the check for setting the drq mask will appear to
work. Anyway to get this card to work here is a simple hack to sb_isapnp.c:

In 'sb_isapnp.c' around line 120 change:

	sc->sc_irq = ipa->ipa_irq[0].num;
	sc->sc_drq8 = ipa->ipa_drq[0].num;
	sc->sc_drq16 = ipa->ipa_drq[1].num;
To:
	sc->sc_irq = ipa->ipa_irq[0].num;
	sc->sc_drq8 = ipa->ipa_drq[0].num;
	sc->sc_drq16 = ipa->ipa_drq[0].num; /* HACK */

And as you mentioned you must add "CTL0043" to 'sb_isapnp_match()' in
'sb_isapnp.c'.

With these changes the card should probe and work ok, it won't however do
simultaneous record and playback but 'audio.c' seems to disable it anyway.

P.S. anyone know how to use the second 8bit channel on this card, as said
     above the normal SB16 methods for it don't work, as can be see from
     the DRQ mask it doesn't have the second channel in it, and the two
     reserved bits are 1 (mean anything?), any info would be appreciated.

     I have a more general change to 'sb_isapnp.c' than the above hack, but
     this should work, if you want the more general version let me know.

			    David Stanhope
			    dms@celtech.com