ALSA: hda - Add SPDIF mux control to AD codec auto-parser
authorTakashi Iwai <tiwai@suse.de>
Tue, 22 Jan 2013 14:31:33 +0000 (15:31 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Jan 2013 15:41:56 +0000 (16:41 +0100)
commit272f3ea317762e55740326c01af64052a5fbb819
treed0f13a9efe5a2402a1afab5ac85c9b48ef0a8633
parentdc870f38e9faf7dd89355aae2252126688a1a372
ALSA: hda - Add SPDIF mux control to AD codec auto-parser

AD codecs have strange implementations for choosing the SPDIF-output
mux source: the digital audio out widget may take the sources from
multiple connections, where 0x01 indicates it's a PCM while others
point ADCs.  It's obviously invalid in the HD-audio spec POV, but it's
somehow convincing, too.  And, to make things more complex, AD1988A
and AD1882 have deeper connection routes that aren't expressed
correctly.

In this patch, the SPDIF mux control is implemented in two ways:
- For easier one like AD1981, AD1983, AD1884 and AD1984, where the
  SPDIF audio out widget takes just two or three sources, we can
  simply implement via the normal input_mux and connection verb
  calls.

- For the complex routes like AD1988A (but not AD1988B) or AD1882, we
  prepare "faked" paths represented statically, and switch the paths
  using these static ones, instead of parsing the routes from the
  widget tree.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_analog.c