freebsd-nq/sys/dev
Alexander Motin 3d741b14a7 Complete rewrite of the snd_hda(4) volume control.
Previous code was relatively dumb. During CODEC probe it was tracing signals
and statically binding amplifier controls to the OSS mixer controls. To set
volume it just set all bound amplifier controls proportionally to mixer
level, not looking on their hierarchy and amplification levels/offsets.

New code is much smarter. It also traces signals during probe, but mostly
to find out possible amplification control rages in dB for each specific
signal. To set volume it retraces each affected signal again and sets
amplifiers controls recursively to reach desired amplification level in dB.
It would be nice to export values in dB to user, but unluckily our OSS mixer
API is too simple for that.

As result of this change:
 - cascaded amplifiers will work together to reach maximal precision.
If some input has 0/+40dB preamplifier with 10dB step and -10/+10dB mixer
with 1dB step after it, new code will use both to provide 0/+40dB control
with 1dB step! We could even get -10/+50dB range there, but that is
intentionally blocked for now.
 - different channels of multichannel associations on non-uniform CODECs
such as VIA VT1708S will have the same volume, not looking that control
ranges are different. It was not good when fronts were 12dB louder.
 - for multiplexed recording, when we can record from only one source at
a time, we can now use recording amplifier controls to set different
volume levels for different inputs if they have no own controls of they
are less precise. If recording source change, amplifiers will be
reconfigured.

To improve out-of-the-box behavior, ignore default volume levels set by
sound(4) and use own, more reasonable: +20dB for mics, -10dB for analog
output volume and 0dB for the rest of controls. sound(4) defaults of 75%
mean absolutely random things for different controls of different CODECs
because of very different control ranges.
Together with further planned automatic recording source selection this
should allow users to get fine playback and recording without touching
mixer first.
Note that existing users should delete /var/db/mixer*-state and reboot
or trigger CODEC reconfiguration to get new default values.

MFC after:	2 months
Sponsored by:	iXsystems, Inc.
2012-01-22 10:24:12 +00:00
..
aac - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpi_support - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpica Further relax the strictness of enforcing allocations to only come from 2011-12-29 16:23:14 +00:00
adb
adlink
advansys
ae
age
agp
aha
ahb
ahci Convert files to UTF-8 2012-01-15 13:23:18 +00:00
aic
aic7xxx Add "%option noinput" to aicasm_scan.l and aicasm_macro_scan.l, so no 2011-12-16 00:04:28 +00:00
alc
ale
amdsbwd
amdtemp
amr - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
an ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
arcmsr - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
asmc
asr
ata Convert files to UTF-8 2012-01-15 13:23:18 +00:00
ath Break out the "memory" EEPROM data read method from being AR9130 specific 2012-01-15 19:22:34 +00:00
atkbdc
auxio
bce Rework link state tracking and remove superfluous link UP/DOWN 2011-12-13 18:11:25 +00:00
bfe ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
bge Oops, fix logic error introduced in r230337. 2012-01-19 20:28:58 +00:00
bktr
bm ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
buslogic
bwi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
bwn Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
bxe Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
cardbus
cas - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ce Fix clang warnings in sys/dev/ce/if_ce.c and sys/dev/cp/if_cp.c, 2011-12-29 17:46:24 +00:00
cesa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
cfe kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
cfi
ciss Add support for HP P420 to ciss(4) 2012-01-18 19:35:16 +00:00
cm Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
cmx
coretemp
cp Fix clang warnings in sys/dev/ce/if_ce.c and sys/dev/cp/if_cp.c, 2011-12-29 17:46:24 +00:00
cpuctl Add VIA microde update support to cpuctl(4) and cpucontrol(8). 2011-12-12 12:30:44 +00:00
cpufreq
cs
ct
ctau
cx
cxgb Fix return value of function. 2011-12-23 01:39:10 +00:00
cxgbe Many updates to cxgbe(4) 2011-12-16 02:09:51 +00:00
cy
dc Use DEVMETHOD_END. 2011-11-23 20:27:26 +00:00
dcons kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
de Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
digi
dpms
dpt
drm In sys/dev/drm/radeon_state.c, use the correct printf length modifiers 2011-12-30 02:07:50 +00:00
e1000 clear the pointer after freeing the mbuf. Without that, we 2012-01-12 17:30:44 +00:00
ed Fix off by one error in mbuf access. Previously it caused panic. 2011-12-05 18:10:43 +00:00
eisa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
en
ep ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
esp s/timout/timeout 2011-12-15 06:29:13 +00:00
et style. No functional changes. 2012-01-10 20:52:02 +00:00
ex Convert files to UTF-8 2012-01-15 13:23:18 +00:00
exca
fatm
fb Convert files to UTF-8 2012-01-15 13:23:43 +00:00
fdc Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
fdt DEBUG is a kernel option. Don't define it here, as it breaks LINT. 2011-12-30 04:00:31 +00:00
fe
firewire ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
flash Add a couple more SPI flash device IDs found in commercial 2012-01-04 04:17:03 +00:00
fxp TCP header size is represented by number of 32bits words. 2011-12-19 19:00:34 +00:00
gem - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
glxiic
glxsb
gpio Fix broken locking that I introduced in the previous commit. 2011-12-20 03:25:11 +00:00
hatm
hifn - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
hme - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
hpt27xx Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
hptiop - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
hptmv Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
hptrr - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
hwpmc Clean up a switch statement for uncore events on Westmere processors. 2012-01-13 17:13:46 +00:00
ic
ichsmb - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ichwd Remove use of explicit bus space tags and handles and use methods that 2012-01-05 16:27:32 +00:00
ida - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ie ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
ieee488 Convert files to UTF-8 2012-01-15 13:23:43 +00:00
if_ndis ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
iicbus IIC bitbang changes - prepare to make the bit delay configurable; debug print changes. 2011-12-20 02:49:01 +00:00
iir
io
ipmi
ips
ipw Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
iscsi/initiator
isp Fix target mode compilation issues that arose after a change 2011-12-27 14:59:24 +00:00
ispfw
iwi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
iwn Don't rely on MCS7 being at index 7 while determining the amount 2012-01-03 09:42:31 +00:00
ixgb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
ixgbe netmap-related changes: 2012-01-19 09:36:19 +00:00
jme
joy
kbd
kbdmux
ksyms
le
led
lge ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
lindev
lmc
malo Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
mc146818
mca - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mcd
md Document a large number of currently undocumented sysctls. While here 2011-12-13 00:38:50 +00:00
mem
mfi - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mge
mii - In mii_attach(9) just set the driver for a newly added miibus(4) instance 2011-12-05 21:38:45 +00:00
mk48txx
mlx - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mly
mmc
mn
mps Set maximum I/O size for mps(4) to MAXPHYS. Looking into the code, I see 2011-12-28 22:49:28 +00:00
mpt
mse
msk ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
mvs Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
mwl Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
mxge Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
my ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
ncv
netmap indentation and whitespace fixes 2012-01-13 11:58:06 +00:00
nfe ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
nge - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
nmdm
nsp
null Fix for PR 138526. 2012-01-11 15:00:16 +00:00
nve ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
nvram
nvram2env
nxge Convert files to UTF-8 2012-01-15 13:23:43 +00:00
ofw kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
patm
pbio
pccard Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
pccbb - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
pcf
pci Properly return success once a matching VPD entry is found in 2012-01-19 21:38:19 +00:00
pcn - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
pdq
powermac_nvram
ppbus Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
ppc Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
pst Convert files to UTF-8 2012-01-15 13:23:18 +00:00
pty
puc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
qlxgb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
quicc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ral Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
random Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
rc
re Fix a logic error which resulted in putting PHY into sleep when WOL 2012-01-19 20:13:16 +00:00
rndtest
rp
rt ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
safe - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sbni
scc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
scd
sdhci
sec - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sf - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sfxge Update recently added drivers to use the if_*addr_r*lock() wrapper 2012-01-05 18:32:37 +00:00
sge - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
si
siba Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
siis Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
sio kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
sis ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
sk ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
smbus - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
smc
sn ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
snc ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
snp
sound Complete rewrite of the snd_hda(4) volume control. 2012-01-22 10:24:12 +00:00
speaker Do not define bool/true/false if the symbols already exist. 2011-12-12 18:43:24 +00:00
spibus Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
ste - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
stg
stge ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
streams
sym
syscons Convert files to UTF-8 2012-01-15 13:23:18 +00:00
tdfx
ti Eliminate vestiges of page coloring. 2011-12-15 05:07:16 +00:00
tl ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
tpm
trm
tsec ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
twa s/timout/timeout 2011-12-15 06:29:13 +00:00
twe - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
tws Match surrounding style. 2012-01-16 06:00:44 +00:00
tx
txp
uart Add support for Sony Ericsson GC89 EDGE/Wirelles LAN PC Card 2012-01-19 02:47:11 +00:00
ubsec - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
usb Add support for the DesignWare USB 2.0 OTG controller chipset. 2012-01-21 13:31:38 +00:00
utopia
vge - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
viawd Correctly spell my email address. 2011-12-22 15:13:32 +00:00
virtio Catch up with Bryan Venteicher's virtio Hg repo: 2011-12-06 06:28:32 +00:00
vkbd
vr Announce flow control capability to PHY drivers and enable flow 2011-11-28 19:03:59 +00:00
vte Remove unused variable mii. 2011-11-23 05:34:01 +00:00
vx ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
vxge Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:54 +00:00
watchdog
wb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
wds
wi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
wl
wpi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
wtap Introduce wtap, the beginnings of a net80211 wlan simulator. 2012-01-11 17:41:14 +00:00
xe
xen Make XENHVM work on i386. The __ffs() function counts bits starting from 2012-01-16 02:38:45 +00:00
xl Use DEVMETHOD_END. 2011-11-23 20:27:26 +00:00