ALSA: hda - Implement loopback control switch for Realtek and other codecs
authorTakashi Iwai <tiwai@suse.de>
Tue, 8 Dec 2015 16:00:42 +0000 (17:00 +0100)
committerSasha Levin <sasha.levin@oracle.com>
Wed, 6 Apr 2016 15:10:02 +0000 (11:10 -0400)
commit7abe6e3537a321a332dc6320f22f27e3e11db750
tree12a7224810014fe9fcab6c6bb8e345e7c9aff9f3
parentaf24c621219ec87b221c1bbade56a506bf09deb9
ALSA: hda - Implement loopback control switch for Realtek and other codecs

[ Upstream commit e7fdd52779a6c2b49d457f452296a77c8cffef6a ]

Many codecs, typically found on Realtek codecs, have the analog
loopback path merged to the secondary input of the middle of the
output paths.  Currently, we don't offer the dynamic switching in such
configuration but let each loopback path mute by itself.

This should work well in theory, but in reality, we often see that
such a dead loopback path causes some background noises even if all
the elements get muted.  Such a problem has been fixed by adding the
quirk accordingly to disable aamix, and it's the right fix, per se.
The only problem is that it's not so trivial to achieve it; user needs
to pass a hint string via patch module option or sysfs.

This patch gives a bit improvement on the situation: it adds "Loopback
Mixing" control element for such codecs like other codecs (e.g. IDT or
VIA codecs) with the individual loopback paths.  User can turn on/off
the loopback path simply via a mixer app.

For keeping the compatibility, the loopback is still enabled on these
codecs.  But user can try to turn it off if experiencing a suspicious
background or click noise on the fly, then build a static fixup later
once after the problem is addressed.

Other than the addition of the loopback enable/disablement control,
there should be no changes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
sound/pci/hda/hda_generic.c