Subject: Understanding HDA/azalia mixer classes+names
To: None <port-i386@netbsd.org>
From: Scott Presnell <srp@tworoads.net>
List: port-i386
Date: 11/29/2005 08:56:36
Hi,
	I have a Dell with a Intel HDA under NetBSD/i386 3.0_RC4:

azalia0 at pci0 dev 27 function 0: Generic High Definition Audio Controller
azalia0: interrupting at ioapic0 pin 16 (irq 11)
azalia0: host: 82801GB/GR High Definition Audio Controller (rev. 1)
azalia0: host: High Definition Audio rev. 1.0
azalia0: codec: 0x8384/0x7690 (rev. 34.1)
azalia0: codec: High Definition Audio rev. 1.0
azalia0: playback: encodings=1<PCM>
azalia0: playback: PCM formats=e07e0<24bit,20bit,16bit,192kHz,176.4kHz,96kHz,88.2kHz,48kHz,44.1kHz>
azalia0: playback: max channels=2
azalia0: recording: encodings=1<PCM>
azalia0: recording: PCM formats=e07e0<24bit,20bit,16bit,192kHz,176.4kHz,96kHz,88.2kHz,48kHz,44.1kHz>
azalia0: recording: max channels=2
audio0 at azalia0: full duplex, independent

It seems to perform the basic functions (audio is emitted via amarok, xmms),
however many applications, and all mixers I've tested don't seem to understand how
to interact with it.  From mixerctl -a I get classes I can't immediately understand
(snippet):

inputs.mix0b.pink18=137,137
inputs.mix0b.green19=137,137
inputs.mix0b.blue1a=137,137
inputs.mix0b.pink1b=137,137
inputs.mix0b.black1c=137,137
...

outputs.pink18.mute=off
outputs.pink18.dir=input
outputs.pink18.boost=off
outputs.green19.mute=off
outputs.green19.dir=output
outputs.green19.boost=off
outputs.blue1a.mute=off
outputs.blue1a.dir=input
outputs.blue1a.boost=off
outputs.pink1b.mute=off
outputs.pink1b.dir=input
outputs.pink1b.boost=off
inputs.usingdac=03

vs. more understandable from an eap device:

inputs.speaker=143
inputs.speaker.mute=off
inputs.phone=191
inputs.phone.mute=on
inputs.mic=215
inputs.mic.mute=on
inputs.mic.preamp=off
inputs.mic.source=mic0
inputs.line=167,167
inputs.line.mute=off
inputs.cd=199,199
inputs.cd.mute=off
inputs.video=191,191
inputs.video.mute=off
inputs.aux=191,191
inputs.aux.mute=off
inputs.dac=151,151
inputs.dac.mute=off

Is it the driver's responsiblity to name the mixer classes in human readable form (as in the eap driver).

Or is it a software design issue; apps and mixers are looking for hard coded "inputs.dac" instead of
reading/asking the driver for available classes?

Obviously I don't really know what I'm talking about.  A clue, just for basic understanding,
would be greatly appreciated.

	Thanks.

	- Scott