]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
drm/i915/audio: do not mess with audio registers if port is invalid
authorJani Nikula <jani.nikula@intel.com>
Mon, 4 May 2015 14:20:49 +0000 (17:20 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 8 May 2015 11:03:36 +0000 (13:03 +0200)
We should no longer enter the codec enable/disable functions in question
with port A anyway, but to err on the safe side, keep the warnings. Just
bail out early without messing with the registers.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_audio.c

index f72e93a45e11c5a8eb2d689f2517ed0e4a87e008..c4312177b0eede95d8f08e4ce91dce886adc99a9 100644 (file)
@@ -269,6 +269,9 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
        DRM_DEBUG_KMS("Disable audio codec on port %c, pipe %c\n",
                      port_name(port), pipe_name(pipe));
 
+       if (WARN_ON(port == PORT_A))
+               return;
+
        if (HAS_PCH_IBX(dev_priv->dev)) {
                aud_config = IBX_AUD_CFG(pipe);
                aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
@@ -290,12 +293,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
                tmp |= AUD_CONFIG_N_VALUE_INDEX;
        I915_WRITE(aud_config, tmp);
 
-       if (WARN_ON(!port)) {
-               eldv = IBX_ELD_VALID(PORT_B) | IBX_ELD_VALID(PORT_C) |
-                       IBX_ELD_VALID(PORT_D);
-       } else {
-               eldv = IBX_ELD_VALID(port);
-       }
+       eldv = IBX_ELD_VALID(port);
 
        /* Invalidate ELD */
        tmp = I915_READ(aud_cntrl_st2);
@@ -325,6 +323,9 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
        DRM_DEBUG_KMS("Enable audio codec on port %c, pipe %c, %u bytes ELD\n",
                      port_name(port), pipe_name(pipe), drm_eld_size(eld));
 
+       if (WARN_ON(port == PORT_A))
+               return;
+
        /*
         * FIXME: We're supposed to wait for vblank here, but we have vblanks
         * disabled during the mode set. The proper fix would be to push the
@@ -349,12 +350,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
                aud_cntrl_st2 = CPT_AUD_CNTRL_ST2;
        }
 
-       if (WARN_ON(!port)) {
-               eldv = IBX_ELD_VALID(PORT_B) | IBX_ELD_VALID(PORT_C) |
-                       IBX_ELD_VALID(PORT_D);
-       } else {
-               eldv = IBX_ELD_VALID(port);
-       }
+       eldv = IBX_ELD_VALID(port);
 
        /* Invalidate ELD */
        tmp = I915_READ(aud_cntrl_st2);