All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3 07/11] drm/i915: Pass atomic state to intel_audio_codec_enable, v2.
Date: Tue, 8 Nov 2016 16:07:24 +0200	[thread overview]
Message-ID: <20161108140724.GK4617@intel.com> (raw)
In-Reply-To: <1478609742-13603-8-git-send-email-maarten.lankhorst@linux.intel.com>

On Tue, Nov 08, 2016 at 01:55:38PM +0100, Maarten Lankhorst wrote:
> drm_select_eld requires mode_config.mutex and connection_mutex
> because it looks at the connector list and at the legacy encoders.
> 
> This is not required, because when we call audio_codec_enable we know
> which connector it was called for, so pass the state.
> 
> This also removes having to look at crtc->config.
> 
> Changes since v1:
> - Use intel_crtc->pipe instead of drm_crtc_index. (Ville)
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_audio.c | 17 ++++++++++-------
>  drivers/gpu/drm/i915/intel_ddi.c   |  2 +-
>  drivers/gpu/drm/i915/intel_dp.c    | 11 ++++++-----
>  drivers/gpu/drm/i915/intel_drv.h   |  4 +++-
>  drivers/gpu/drm/i915/intel_hdmi.c  |  2 +-
>  5 files changed, 21 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 813fd74d9c8d..1c509f7410f5 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -574,23 +574,26 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>  /**
>   * intel_audio_codec_enable - Enable the audio codec for HD audio
>   * @intel_encoder: encoder on which to enable audio
> + * @crtc_state: pointer to the current crtc state.
> + * @conn_state: pointer to the current connector state.
>   *
>   * The enable sequences may only be performed after enabling the transcoder and
>   * port, and after completed link training.
>   */
> -void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
> +void intel_audio_codec_enable(struct intel_encoder *intel_encoder,
> +			      const struct intel_crtc_state *crtc_state,
> +			      const struct drm_connector_state *conn_state)
>  {
>  	struct drm_encoder *encoder = &intel_encoder->base;
> -	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
> -	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc_state->base.adjusted_mode;
>  	struct drm_connector *connector;
>  	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
>  	struct i915_audio_component *acomp = dev_priv->audio_component;
>  	enum port port = intel_encoder->port;
> -	enum pipe pipe = crtc->pipe;
> +	enum pipe pipe = to_intel_crtc(crtc_state->base.crtc)->pipe;
>  
> -	connector = drm_select_eld(encoder);
> -	if (!connector)
> +	connector = conn_state->connector;
> +	if (!connector || !connector->eld[0])
>  		return;
>  
>  	DRM_DEBUG_DRIVER("ELD on [CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
> @@ -601,7 +604,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  
>  	/* ELD Conn_Type */
>  	connector->eld[5] &= ~(3 << 2);
> -	if (intel_crtc_has_dp_encoder(crtc->config))
> +	if (intel_crtc_has_dp_encoder(crtc_state))
>  		connector->eld[5] |= (1 << 2);
>  
>  	connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 938ac4dbcb45..0ad4e16a639f 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1866,7 +1866,7 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder,
>  
>  	if (intel_crtc->config->has_audio) {
>  		intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO);
> -		intel_audio_codec_enable(intel_encoder);
> +		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
>  	}
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 9df331b3305b..117a71450ec2 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -2735,7 +2735,8 @@ static void intel_dp_enable_port(struct intel_dp *intel_dp,
>  }
>  
>  static void intel_enable_dp(struct intel_encoder *encoder,
> -			    struct intel_crtc_state *pipe_config)
> +			    struct intel_crtc_state *pipe_config,
> +			    struct drm_connector_state *conn_state)
>  {
>  	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>  	struct drm_device *dev = encoder->base.dev;
> @@ -2777,7 +2778,7 @@ static void intel_enable_dp(struct intel_encoder *encoder,
>  	if (pipe_config->has_audio) {
>  		DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n",
>  				 pipe_name(pipe));
> -		intel_audio_codec_enable(encoder);
> +		intel_audio_codec_enable(encoder, pipe_config, conn_state);
>  	}
>  }
>  
> @@ -2787,7 +2788,7 @@ static void g4x_enable_dp(struct intel_encoder *encoder,
>  {
>  	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>  
> -	intel_enable_dp(encoder, pipe_config);
> +	intel_enable_dp(encoder, pipe_config, conn_state);
>  	intel_edp_backlight_on(intel_dp);
>  }
>  
> @@ -2924,7 +2925,7 @@ static void vlv_pre_enable_dp(struct intel_encoder *encoder,
>  {
>  	vlv_phy_pre_encoder_enable(encoder);
>  
> -	intel_enable_dp(encoder, pipe_config);
> +	intel_enable_dp(encoder, pipe_config, conn_state);
>  }
>  
>  static void vlv_dp_pre_pll_enable(struct intel_encoder *encoder,
> @@ -2942,7 +2943,7 @@ static void chv_pre_enable_dp(struct intel_encoder *encoder,
>  {
>  	chv_phy_pre_encoder_enable(encoder);
>  
> -	intel_enable_dp(encoder, pipe_config);
> +	intel_enable_dp(encoder, pipe_config, conn_state);
>  
>  	/* Second common lane will stay alive on its own now */
>  	chv_phy_release_cl2_override(encoder);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 815e8dae3904..3d27e31dcada 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1184,7 +1184,9 @@ u32 intel_fb_stride_alignment(const struct drm_i915_private *dev_priv,
>  
>  /* intel_audio.c */
>  void intel_init_audio_hooks(struct drm_i915_private *dev_priv);
> -void intel_audio_codec_enable(struct intel_encoder *encoder);
> +void intel_audio_codec_enable(struct intel_encoder *encoder,
> +			      const struct intel_crtc_state *crtc_state,
> +			      const struct drm_connector_state *conn_state);
>  void intel_audio_codec_disable(struct intel_encoder *encoder);
>  void i915_audio_component_init(struct drm_i915_private *dev_priv);
>  void i915_audio_component_cleanup(struct drm_i915_private *dev_priv);
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 2218b10fa22a..fb88e32e25a3 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -984,7 +984,7 @@ static void intel_enable_hdmi_audio(struct intel_encoder *encoder,
>  	WARN_ON(!crtc->config->has_hdmi_sink);
>  	DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n",
>  			 pipe_name(crtc->pipe));
> -	intel_audio_codec_enable(encoder);
> +	intel_audio_codec_enable(encoder, pipe_config, conn_state);
>  }
>  
>  static void g4x_enable_hdmi(struct intel_encoder *encoder,
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-11-08 14:07 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08 12:55 [PATCH v3 00/11] Skylake watermark fixes and nonblocking modeset Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 01/11] drm/i915: Add a atomic evasion step to watermark programming, v3 Maarten Lankhorst
2016-11-10  0:14   ` Matt Roper
2016-11-08 12:55 ` [PATCH v3 02/11] drm/i915/gen9+: Program watermarks as a separate step during evasion, v3 Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 03/11] drm/i915/gen9+: Preserve old allocation from crtc_state Maarten Lankhorst
2016-11-10  0:16   ` Matt Roper
2016-11-08 12:55 ` [PATCH v3 04/11] drm/i915/gen9+: Kill off hw_ddb from intel_crtc Maarten Lankhorst
2016-11-10  0:52   ` Matt Roper
2016-11-10  6:59     ` Maarten Lankhorst
2016-11-10 23:08       ` Matt Roper
2016-11-08 12:55 ` [PATCH v3 05/11] drm/i915/gen9+: Do not initialise active_crtcs for !modeset Maarten Lankhorst
2016-11-08 14:11   ` Ville Syrjälä
2016-11-09 12:45     ` Maarten Lankhorst
2016-11-10 10:53       ` Ville Syrjälä
2016-11-10 14:32         ` Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 06/11] drm/i915: Convert intel_hdmi to use atomic state Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 07/11] drm/i915: Pass atomic state to intel_audio_codec_enable, v2 Maarten Lankhorst
2016-11-08 14:07   ` Ville Syrjälä [this message]
2016-11-08 12:55 ` [PATCH v3 08/11] drm/edid: Remove drm_select_eld Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 09/11] drm/i915: Update atomic modeset state synchronously, v2 Maarten Lankhorst
2016-11-08 14:08   ` Ville Syrjälä
2016-11-08 12:55 ` [PATCH v3 10/11] drm/i915: Pass atomic state to verify_connector_state Maarten Lankhorst
2016-11-08 12:55 ` [PATCH v3 11/11] drm/i915: Enable support for nonblocking modeset Maarten Lankhorst
2016-11-08 13:45 ` ✓ Fi.CI.BAT: success for Skylake watermark fixes and " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161108140724.GK4617@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.