drm/i915: Replace tmds_clock_speed and link_rate with just ls_clock
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 27 Apr 2017 16:02:24 +0000 (19:02 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 3 May 2017 13:20:26 +0000 (16:20 +0300)
There's no need to distinguish between the DP link rate and HDMI TMDS
clock for the purposes of the LPE audio. Both are actually the same
thing more or less, which is the link symbol clock. So let's just
call the thing ls_clock and simplify the code.

Cc: Takashi Iwai <tiwai@suse.de>
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170427160231.13337-6-ville.syrjala@linux.intel.com
Reviewed-by: Takashi Iwai <tiwai@suse.de>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/intel_audio.c
drivers/gpu/drm/i915/intel_lpe_audio.c
include/drm/intel_lpe_audio.h
sound/x86/intel_hdmi_audio.c

index 271a04c59247814b3e7c361e3cec7376f928a60c..38b6bf9f4dc222aa9bb09cae27e115a6bc73ed1a 100644 (file)
@@ -3721,8 +3721,8 @@ int  intel_lpe_audio_init(struct drm_i915_private *dev_priv);
 void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv);
 void intel_lpe_audio_irq_handler(struct drm_i915_private *dev_priv);
 void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
-                           void *eld, int port, int pipe, int tmds_clk_speed,
-                           bool dp_output, int link_rate);
+                           void *eld, int port, int pipe, int ls_clock,
+                           bool dp_output);
 
 /* intel_i2c.c */
 extern int intel_setup_gmbus(struct drm_i915_private *dev_priv);
index 52c207e81f413a4465bec60098fedf09efea59cb..79eeef25321f415456b9adadadf598d4fa982ebb 100644 (file)
@@ -632,20 +632,9 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder,
                                                 (int) port, (int) pipe);
        }
 
-       switch (intel_encoder->type) {
-       case INTEL_OUTPUT_HDMI:
-               intel_lpe_audio_notify(dev_priv, connector->eld, port, pipe,
-                                      crtc_state->port_clock,
-                                      false, 0);
-               break;
-       case INTEL_OUTPUT_DP:
-               intel_lpe_audio_notify(dev_priv, connector->eld, port, pipe,
-                                      adjusted_mode->crtc_clock,
-                                      true, crtc_state->port_clock);
-               break;
-       default:
-               break;
-       }
+       intel_lpe_audio_notify(dev_priv, connector->eld, port, pipe,
+                              crtc_state->port_clock,
+                              intel_encoder->type == INTEL_OUTPUT_DP);
 }
 
 /**
@@ -680,7 +669,7 @@ void intel_audio_codec_disable(struct intel_encoder *intel_encoder)
                                                 (int) port, (int) pipe);
        }
 
-       intel_lpe_audio_notify(dev_priv, NULL, port, pipe, 0, false, 0);
+       intel_lpe_audio_notify(dev_priv, NULL, port, pipe, 0, false);
 }
 
 /**
index 79b9dca985ff67c9fd7d25181a0f481e00259d83..5a1a37e963f13c1001ca8f8b3f7a2f21539d7ee3 100644 (file)
@@ -309,13 +309,14 @@ void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv)
  * @eld : ELD data
  * @pipe: pipe id
  * @port: port id
- * @tmds_clk_speed: tmds clock frequency in Hz
+ * @ls_clock: Link symbol clock in kHz
+ * @dp_output: Driving a DP output?
  *
  * Notify lpe audio driver of eld change.
  */
 void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
-                           void *eld, int port, int pipe, int tmds_clk_speed,
-                           bool dp_output, int link_rate)
+                           void *eld, int port, int pipe, int ls_clock,
+                           bool dp_output)
 {
        unsigned long irq_flags;
        struct intel_hdmi_lpe_audio_pdata *pdata = NULL;
@@ -337,12 +338,8 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
                pdata->eld.port_id = port;
                pdata->eld.pipe_id = pipe;
                pdata->hdmi_connected = true;
-
+               pdata->ls_clock = ls_clock;
                pdata->dp_output = dp_output;
-               if (tmds_clk_speed)
-                       pdata->tmds_clock_speed = tmds_clk_speed;
-               if (link_rate)
-                       pdata->link_rate = link_rate;
 
                /* Unmute the amp for both DP and HDMI */
                I915_WRITE(VLV_AUD_PORT_EN_DBG(port),
@@ -352,6 +349,7 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
                memset(pdata->eld.eld_data, 0,
                        HDMI_MAX_ELD_BYTES);
                pdata->hdmi_connected = false;
+               pdata->ls_clock = 0;
                pdata->dp_output = false;
 
                /* Mute the amp for both DP and HDMI */
index c201d39cdfea914c8d72fb3f2cd2a78f141b9df7..8bf804ce8905f3265d47f2aa02ab5e712a4b9858 100644 (file)
@@ -38,10 +38,9 @@ struct intel_hdmi_lpe_audio_eld {
 };
 
 struct intel_hdmi_lpe_audio_pdata {
-       int tmds_clock_speed;
+       int ls_clock;
        bool hdmi_connected;
        bool dp_output;
-       int link_rate;
        struct intel_hdmi_lpe_audio_eld eld;
        void (*notify_audio_lpe)(struct platform_device *pdev);
        spinlock_t lpe_audio_slock;
index cbba4a78afb5660fbebcd4b32aefa92d7671302b..4eaf5de54f61fdef81d7375e158021f3624fc1d0 100644 (file)
@@ -1568,7 +1568,7 @@ static void had_audio_wq(struct work_struct *work)
                struct intel_hdmi_lpe_audio_eld *eld = &pdata->eld;
 
                dev_dbg(ctx->dev, "%s: HAD_NOTIFY_ELD : port = %d, tmds = %d\n",
-                       __func__, eld->port_id, pdata->tmds_clock_speed);
+                       __func__, eld->port_id, pdata->ls_clock);
 
                switch (eld->pipe_id) {
                case 0:
@@ -1589,8 +1589,13 @@ static void had_audio_wq(struct work_struct *work)
                memcpy(ctx->eld, eld->eld_data, sizeof(ctx->eld));
 
                ctx->dp_output = pdata->dp_output;
-               ctx->tmds_clock_speed = pdata->tmds_clock_speed;
-               ctx->link_rate = pdata->link_rate;
+               if (ctx->dp_output) {
+                       ctx->tmds_clock_speed = 0;
+                       ctx->link_rate = pdata->ls_clock;
+               } else {
+                       ctx->tmds_clock_speed = pdata->ls_clock;
+                       ctx->link_rate = 0;
+               }
 
                had_process_hot_plug(ctx);