ALSA: hda - Assign proper digital I/O type for STAC/IDT
authorTakashi Iwai <tiwai@suse.de>
Tue, 20 Jan 2009 17:30:20 +0000 (18:30 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Jan 2009 17:30:20 +0000 (18:30 +0100)
Assign the proper PCM digital I/O type (HDA_PCM_TYPE_*) for the digital
I/O on STAC/IDT codecs.  HDA_PCM_TYPE_HDMI is assigned for the HDMI I/O.

A similar framework is implemented to patch_realtek.c, but it's not
set up and still using only HDA_PCM_TYPE_SPDIF yet.

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

index 5d249a547fbf69642ebf25a3ddf935f124bbcbc6..4fdae06162ed608ece0b3815c8b0b5ee9cfe27de 100644 (file)
@@ -269,6 +269,7 @@ struct alc_spec {
                                         * dig_out_nid and hp_nid are optional
                                         */
        hda_nid_t alt_dac_nid;
+       int dig_out_type;
 
        /* capture */
        unsigned int num_adc_nids;
@@ -3087,7 +3088,10 @@ static int alc_build_pcms(struct hda_codec *codec)
                codec->num_pcms = 2;
                info = spec->pcm_rec + 1;
                info->name = spec->stream_name_digital;
-               info->pcm_type = HDA_PCM_TYPE_SPDIF;
+               if (spec->dig_out_type)
+                       info->pcm_type = spec->dig_out_type;
+               else
+                       info->pcm_type = HDA_PCM_TYPE_SPDIF;
                if (spec->multiout.dig_out_nid &&
                    spec->stream_digital_playback) {
                        info->stream[SNDRV_PCM_STREAM_PLAYBACK] = *(spec->stream_digital_playback);
index b6e797d1c2185ac68cfe754d620af4f959b0ace8..1dd448e85bc1254bfc9f7d7615be2f0e145f95cf 100644 (file)
@@ -2553,7 +2553,7 @@ static int stac92xx_build_pcms(struct hda_codec *codec)
                codec->num_pcms++;
                info++;
                info->name = "STAC92xx Digital";
-               info->pcm_type = HDA_PCM_TYPE_SPDIF;
+               info->pcm_type = spec->autocfg.dig_out_type;
                if (spec->multiout.dig_out_nid) {
                        info->stream[SNDRV_PCM_STREAM_PLAYBACK] = stac92xx_pcm_digital_playback;
                        info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->multiout.dig_out_nid;