ALSA: hda - get intelhdmi max channels from widget caps
authorWu Fengguang <fengguang.wu@intel.com>
Fri, 30 Oct 2009 10:45:04 +0000 (11:45 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 30 Oct 2009 10:45:04 +0000 (11:45 +0100)
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_intelhdmi.c

index 08ea88d..3c68aa9 100644 (file)
@@ -650,7 +650,6 @@ static int intel_hdmi_playback_pcm_cleanup(struct hda_pcm_stream *hinfo,
 static struct hda_pcm_stream intel_hdmi_pcm_playback = {
        .substreams = 1,
        .channels_min = 2,
-       .channels_max = 8,
        .ops = {
                .prepare = intel_hdmi_playback_pcm_prepare,
                .cleanup = intel_hdmi_playback_pcm_cleanup,
@@ -667,11 +666,17 @@ static int intel_hdmi_build_pcms(struct hda_codec *codec)
        codec->pcm_info = info;
 
        for (i = 0; i < codec->num_pcms; i++, info++) {
+               unsigned int chans;
+
+               chans = get_wcaps(codec, spec->cvt[i]);
+               chans = get_wcaps_channels(chans);
+
                info->name = intel_hdmi_pcm_names[i];
                info->pcm_type = HDA_PCM_TYPE_HDMI;
                info->stream[SNDRV_PCM_STREAM_PLAYBACK] =
                                                        intel_hdmi_pcm_playback;
                info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->cvt[i];
+               info->stream[SNDRV_PCM_STREAM_PLAYBACK].channels_max = chans;
        }
 
        return 0;