Subject: Re: Aureal sound cards support
To: Pierre Pronchery <khorben@defora.org>
From: Jared D. McNeill <jmcneill@invisible.ca>
List: current-users
Date: 06/07/2007 21:34:39
On 7-Jun-07, at 8:41 PM, Pierre Pronchery wrote:
> I got this far:
> vortex0 at pci0 dev 12 function 0: Aureal Semiconductor AU8830  
> Vortex 3D
> Digital Audio Processor (audio multimedia, revision 0xfe)
> vortex0: interrupting at irq 11
> vortex0: ac97: SigmaTel STAC9704 codec; 18 bit DAC, 18 bit ADC,  
> SigmaTel 3D
> vortex0: ac97: ext id
> ffff<SECONDARY10,SECONDARY01,AC97_23,AC97_22,AMAP,LDAC,SDAC,CDAC,VRM,S 
> PDIF,DRA,VRA>
> vortex0: ac97: Slot assignment: 10&11, 3&4, 7&8.
> vortex0: Ignore these capabilities.
>
> I get a working mixer, I attached the output of "mixerctl -av" here.

Very nice!

> Sound playback still triggers an uvm_fault() though (invalid address 0
> in the process accessing the card). Since I am not sure of what I am
> doing, I attach the current version of my sources here as well. Please
> let me know if you see anything that might help the inclusion of this
> driver in -current.

You are missing quite a few function callbacks required by the NetBSD  
audio framework. trigger_output and trigger_input are very important,  
for example :-) A kernel built with the DIAGNOSTIC option would catch  
this. From audio.c:

#ifdef DIAGNOSTIC
	if (hwp == 0 ||
	    hwp->query_encoding == 0 ||
	    hwp->set_params == 0 ||
	    (hwp->start_output == 0 && hwp->trigger_output == 0) ||
	    (hwp->start_input == 0 && hwp->trigger_input == 0) ||
	    hwp->halt_output == 0 ||
	    hwp->halt_input == 0 ||
	    hwp->getdev == 0 ||
	    hwp->set_port == 0 ||
	    hwp->get_port == 0 ||
	    hwp->query_devinfo == 0 ||
	    hwp->get_props == 0) {
		printf(": missing method\n");
		sc->hw_if = 0;
		return;
	}
#endif

Hope this helps,
Jared