[alsa-devel] [PATCH 05/11] drm/i915: Replace tmds_clock_speed and link_rate with just ls_clock

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Apr 26 15:28:49 CEST 2017


On Tue, Apr 25, 2017 at 08:09:34PM -0500, Pierre-Louis Bossart wrote:
> On 4/25/17 3:27 PM, ville.syrjala at linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >
> > 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.
> 
> there are still occurences of 'tmds' in sound/x86 and there are are 
> couple of debug messages that don't make sense any longer.

I was being a bit lazy and didn't remove the tmds vs. link_rate
distinction from the audio driver side. Not quite sure if we
want to do it not.

> 
> >
> > Cc: Takashi Iwai <tiwai at suse.de>
> > Cc: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_drv.h        |  4 ++--
> >  drivers/gpu/drm/i915/intel_audio.c     | 19 ++++---------------
> >  drivers/gpu/drm/i915/intel_lpe_audio.c | 14 ++++++--------
> >  include/drm/intel_lpe_audio.h          |  3 +--
> >  sound/x86/intel_hdmi_audio.c           | 11 ++++++++---
> >  5 files changed, 21 insertions(+), 30 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> > index 357b6c6c2f04..876eee56a958 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -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);
> > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > index 52c207e81f41..79eeef25321f 100644
> > --- a/drivers/gpu/drm/i915/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > @@ -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);
> >  }
> >
> >  /**
> > diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > index 79b9dca985ff..5a1a37e963f1 100644
> > --- a/drivers/gpu/drm/i915/intel_lpe_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > @@ -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 */
> > diff --git a/include/drm/intel_lpe_audio.h b/include/drm/intel_lpe_audio.h
> > index c201d39cdfea..8bf804ce8905 100644
> > --- a/include/drm/intel_lpe_audio.h
> > +++ b/include/drm/intel_lpe_audio.h
> > @@ -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;
> > diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c
> > index cbba4a78afb5..4eaf5de54f61 100644
> > --- a/sound/x86/intel_hdmi_audio.c
> > +++ b/sound/x86/intel_hdmi_audio.c
> > @@ -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);
> >
> >

-- 
Ville Syrjälä
Intel OTC


More information about the Alsa-devel mailing list