ALSA: HDA: patch_analog: Implement multiple outputs for AD1988
authorRobin H. Johnson <robbat2@gentoo.org>
Sat, 13 Sep 2008 23:54:58 +0000 (16:54 -0700)
committerJaroslav Kysela <perex@perex.cz>
Tue, 23 Sep 2008 06:18:03 +0000 (08:18 +0200)
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>
sound/pci/hda/patch_analog.c

index 03b9d3df4ebd1b97c847dd8b65a23473bd92ccca..42b1a231347fcdce61c01018df886c2623bd1ba6 100644 (file)
@@ -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;