These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / soc / omap / omap-hdmi-audio.c
index 4775da4..584b237 100644 (file)
@@ -81,7 +81,15 @@ static int hdmi_dai_startup(struct snd_pcm_substream *substream,
        ret = snd_pcm_hw_constraint_step(substream->runtime, 0,
                                         SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 128);
        if (ret < 0) {
-               dev_err(dai->dev, "could not apply constraint\n");
+               dev_err(dai->dev, "Could not apply period constraint: %d\n",
+                       ret);
+               return ret;
+       }
+       ret = snd_pcm_hw_constraint_step(substream->runtime, 0,
+                                        SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 128);
+       if (ret < 0) {
+               dev_err(dai->dev, "Could not apply buffer constraint: %d\n",
+                       ret);
                return ret;
        }
 
@@ -210,16 +218,18 @@ static int hdmi_dai_hw_params(struct snd_pcm_substream *substream,
 
        cea->db3 = 0; /* not used, all zeros */
 
-       /*
-        * The OMAP HDMI IP requires to use the 8-channel channel code when
-        * transmitting more than two channels.
-        */
        if (params_channels(params) == 2)
                cea->db4_ca = 0x0;
+       else if (params_channels(params) == 6)
+               cea->db4_ca = 0xb;
        else
                cea->db4_ca = 0x13;
 
-       cea->db5_dminh_lsv = CEA861_AUDIO_INFOFRAME_DB5_DM_INH_PROHIBITED;
+       if (cea->db4_ca == 0x00)
+               cea->db5_dminh_lsv = CEA861_AUDIO_INFOFRAME_DB5_DM_INH_PERMITTED;
+       else
+               cea->db5_dminh_lsv = CEA861_AUDIO_INFOFRAME_DB5_DM_INH_PROHIBITED;
+
        /* the expression is trivial but makes clear what we are doing */
        cea->db5_dminh_lsv |= (0 & CEA861_AUDIO_INFOFRAME_DB5_LSV);