summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2008-09-13 16:54:58 -0700
committerJaroslav Kysela <perex@perex.cz>2008-09-23 08:18:03 +0200
commit9cae0c63785d7e1ee1c97ca75148174d483f5200 (patch)
tree5024d042cf96b8163b27c903ae5efff8455e8da7 /sound
parent0481f4534910e644626a3607b2a1a979420a2d05 (diff)
downloadkernel-crypto-9cae0c63785d7e1ee1c97ca75148174d483f5200.tar.gz
kernel-crypto-9cae0c63785d7e1ee1c97ca75148174d483f5200.tar.xz
kernel-crypto-9cae0c63785d7e1ee1c97ca75148174d483f5200.zip
ALSA: HDA: patch_analog: Implement multiple outputs for AD1988
Implement the slave_dig_outs for AD1989 cards. Untested due to lack of hardware. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_analog.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 03b9d3df4eb..42b1a231347 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -1826,9 +1826,14 @@ static hda_nid_t ad1988_capsrc_nids[3] = {
0x0c, 0x0d, 0x0e
};
-#define AD1988_SPDIF_OUT 0x02
+#define AD1988_SPDIF_OUT 0x02
+#define AD1988_SPDIF_OUT_HDMI 0x0b
#define AD1988_SPDIF_IN 0x07
+static hda_nid_t ad1989b_slave_dig_outs[2] = {
+ AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI
+};
+
static struct hda_input_mux ad1988_6stack_capture_source = {
.num_items = 5,
.items = {
@@ -2143,6 +2148,7 @@ static struct snd_kcontrol_new ad1988_spdif_in_mixers[] = {
static struct snd_kcontrol_new ad1989_spdif_out_mixers[] = {
HDA_CODEC_VOLUME("IEC958 Playback Volume", 0x1b, 0x0, HDA_OUTPUT),
+ HDA_CODEC_VOLUME("HDMI Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
{ } /* end */
};
@@ -2985,6 +2991,7 @@ static int patch_ad1988(struct hda_codec *codec)
ad1989_spdif_out_mixers;
spec->init_verbs[spec->num_init_verbs++] =
ad1989_spdif_init_verbs;
+ codec->slave_dig_outs = ad1989b_slave_dig_outs;
} else {
spec->mixers[spec->num_mixers++] =
ad1988_spdif_out_mixers;