[RFT] Major snd_hda rewrite

Alexander Motin mav at FreeBSD.org
Sat Jan 21 16:48:14 UTC 2012

On 01/21/12 18:24, Dominic Fandrey wrote:
> Hello,
> On 11/01/2012 20:33, Alexander Motin wrote:
>> I would like request for testing of my work on further HDA sound
>> driver improvement.
>> ...
>> Comments and tests results are welcome!
> I've been testing the first version of your patch on an HP 6510b, since
> the 12th of January.
> hdac0 at pci0:0:27:0: class=0x040300 card=0x30c0103c chip=0x284b8086
> rev=0x03 hdr=0x00
> vendor = 'Intel Corporation'
> device = '82801H (ICH8 Family) HD Audio Controller'
> class = multimedia
> subclass = HDA
>> mixer
> Mixer vol is currently set to 80:80
> Mixer bass is currently set to 75:75
> Mixer treble is currently set to 40:40
> Mixer pcm is currently set to 100:100
> Mixer speaker is currently set to 0:0
> Mixer line is currently set to 0:0
> Mixer mic is currently set to 0:0
> Mixer rec is currently set to 50:50
> Mixer igain is currently set to 0:0
> Mixer ogain is currently set to 0:0
> Mixer monitor is currently set to 0:0
> Recording source: monitor
> So far I haven't encountered any regressions. There are however some small
> issues that also are present with the old driver.
> I have the following selection of recording devices:
> Mixer line is currently set to 0:0
> Mixer mic is currently set to 0:0
> Mixer monitor is currently set to 0:0
> To record from the microphone, I have to use the monitor device:
> Recording source: monitor

monitor is a name used for the second (or built-in) microphone. List of 
names in OSS is quite limited, so I had to choose one and that fit best.

> Physically neither the notebook nor the docking station have a line
> in socket. Of course such a thing might simply be on board and NC.

It is question to vendor, why it haven't disabled it in codec 
configuration if it is not implemented in hardware. If you like, you can 
do it with device hints.

> Setting a volume for line, mic or monitor has no effect. To hear the
> microphone on my speakers/headphones I have to use igain instead.

Difficult to say something without knowing model of codec or having 
verbose dmesg output. Depending on codec model, line, mic and monitor 
input may have or not have much controls. There may be just mutters, or 
may be just their volume in input monitoring.

> Igain sets the microphone volume independent of the recording source.

As written in man page, igain controls "input-to-output monitoring 
loopback level". It is not used for pre-amplification as you may think, 
because there usually more then one input that needs that control.

> There's also ogain, which doesn't seem to do anything either.

ogain is used to control EAPD signal, that on some laptops used to 
control external power amplifier. It is impossible for driver to find 
whether this signal is used, so it is exposed always when present.

> What I expect is that the recording source for the microphone was
> mic and that the monitor recording source could be used to record
> the cumulative output of all channels.

About mic, it is only question of terminology. What's about mixed 
recording, depending on codec it may be possible in two ways: either by 
recording from special device called mix, or by choosing several 
recording sources with `mixer =rec mic ; mixer +rec monitor; mixer +rec 

Just now I am working on complete rewrite of the volumes control in the 
driver. Terminology will remain the same, but number of present controls 
and their functionality/quality should improve.

Alexander Motin

More information about the freebsd-current mailing list