ALSA: HDA: set max_channel only based on LPCM capability
Sumit Bhattacharya [Thu, 5 Apr 2012 12:31:40 +0000 (17:31 +0530)]
Set maximum supported channels of HDA driver based on the LPCM channel
capability of the HDMI device. This is needed because user space
decides number of PCM channels to be sent to kernel based on this
information.

Bug 960940

Change-Id: I59ae3b7d47dcf26f697bfb0877ca24556f0ab1fa
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/94831
Reviewed-on: http://git-master/r/98783
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>

sound/pci/hda/hda_eld.c

index 64d7c64..92ba186 100644 (file)
@@ -747,10 +747,11 @@ void snd_hdmi_eld_update_pcm_info(struct hdmi_eld *eld,
        channels_max = 2;
        for (i = 0; i < eld->sad_count; i++) {
                struct cea_sad *a = &eld->sad[i];
+
                rates |= a->rates;
-               if (a->channels > channels_max)
-                       channels_max = a->channels;
                if (a->format == AUDIO_CODING_TYPE_LPCM) {
+                       if (a->channels > channels_max)
+                               channels_max = a->channels;
                        if (a->sample_bits & AC_SUPPCM_BITS_20) {
                                formats |= SNDRV_PCM_FMTBIT_S32_LE;
                                if (maxbps < 20)