All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manasi Navare <manasi.d.navare@intel.com>
To: Imre Deak <imre.deak@intel.com>
Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH v2 5/8] drm/i915: Enable AUX power earlier
Date: Tue, 30 Oct 2018 14:55:00 -0700	[thread overview]
Message-ID: <20181030215459.GA3481@intel.com> (raw)
In-Reply-To: <20181030190557.9653-1-imre.deak@intel.com>

On Tue, Oct 30, 2018 at 09:05:57PM +0200, Imre Deak wrote:
> For DDI/TypeC ports the AUX power domain needs to be enabled before the
> port's PLL is enabled, so move the enabling earlier accordingly.
> 
> v2:
> - Preserve the pre_pll hook for GEN9_LP. (Ville)
> 
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c     | 60 +++++++++++++++++++++---------------
>  drivers/gpu/drm/i915/intel_display.c |  2 ++
>  2 files changed, 37 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 5bb459011a49..9554da06e19a 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2082,10 +2082,8 @@ bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
>  }
>  
>  static inline enum intel_display_power_domain
> -intel_ddi_main_link_aux_domain(struct intel_dp *intel_dp)
> +intel_ddi_main_link_aux_domain(struct intel_digital_port *dig_port)
>  {
> -	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> -
>  	/* CNL+ HW requires corresponding AUX IOs to be powered up for PSR with
>  	 * DC states enabled at the same time, while for driver initiated AUX
>  	 * transfers we need the same AUX IOs to be powered but with DC states
> @@ -2120,11 +2118,8 @@ static u64 intel_ddi_get_power_domains(struct intel_encoder *encoder,
>  	domains = BIT_ULL(dig_port->ddi_io_power_domain);
>  
>  	/* AUX power is only needed for (e)DP mode, not for HDMI. */
> -	if (intel_crtc_has_dp_encoder(crtc_state)) {
> -		struct intel_dp *intel_dp = &dig_port->dp;
> -
> -		domains |= BIT_ULL(intel_ddi_main_link_aux_domain(intel_dp));
> -	}
> +	if (intel_crtc_has_dp_encoder(crtc_state))
> +		domains |= BIT_ULL(intel_ddi_main_link_aux_domain(dig_port));
>  
>  	return domains;
>  }
> @@ -2891,6 +2886,36 @@ static void intel_ddi_clk_disable(struct intel_encoder *encoder)
>  	}
>  }
>

I just realized while merging that my previous patches that are reviewed-by
add icl_ddi_pre_pll_enable hook for Gen 11. 
Either the below pre_pll_enable should be part of that or I will have to respin those
before merging and call it intel_ddi_pre_pll_enable() hook.
https://patchwork.freedesktop.org/patch/258008/

Manasi

> +static void
> +intel_ddi_pre_pll_enable(struct intel_encoder *encoder,
> +			 const struct intel_crtc_state *crtc_state,
> +			 const struct drm_connector_state *conn_state)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
> +
> +	if (intel_crtc_has_dp_encoder(crtc_state))
> +		intel_display_power_get(dev_priv,
> +					intel_ddi_main_link_aux_domain(dig_port));
> +
> +	if (IS_GEN9_LP(dev_priv))
> +		bxt_ddi_phy_set_lane_optim_mask(encoder,
> +					       crtc_state->lane_lat_optim_mask);
> +}
> +
> +static void
> +intel_ddi_post_pll_disable(struct intel_encoder *encoder,
> +			   const struct intel_crtc_state *crtc_state,
> +			   const struct drm_connector_state *conn_state)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
> +
> +	if (intel_crtc_has_dp_encoder(crtc_state))
> +		intel_display_power_put(dev_priv,
> +					intel_ddi_main_link_aux_domain(dig_port));
> +}
> +
>  static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
>  				    const struct intel_crtc_state *crtc_state,
>  				    const struct drm_connector_state *conn_state)
> @@ -2904,9 +2929,6 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
>  
>  	WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
>  
> -	intel_display_power_get(dev_priv,
> -				intel_ddi_main_link_aux_domain(intel_dp));
> -
>  	intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
>  				 crtc_state->lane_count, is_mst);
>  
> @@ -3071,9 +3093,6 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
>  	intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
>  
>  	intel_ddi_clk_disable(encoder);
> -
> -	intel_display_power_put(dev_priv,
> -				intel_ddi_main_link_aux_domain(intel_dp));
>  }
>  
>  static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder,
> @@ -3304,15 +3323,6 @@ static void intel_disable_ddi(struct intel_encoder *encoder,
>  		intel_disable_ddi_dp(encoder, old_crtc_state, old_conn_state);
>  }
>  
> -static void bxt_ddi_pre_pll_enable(struct intel_encoder *encoder,
> -				   const struct intel_crtc_state *pipe_config,
> -				   const struct drm_connector_state *conn_state)
> -{
> -	uint8_t mask = pipe_config->lane_lat_optim_mask;
> -
> -	bxt_ddi_phy_set_lane_optim_mask(encoder, mask);
> -}
> -
>  void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp)
>  {
>  	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
> @@ -3828,8 +3838,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
>  	intel_encoder->compute_output_type = intel_ddi_compute_output_type;
>  	intel_encoder->compute_config = intel_ddi_compute_config;
>  	intel_encoder->enable = intel_enable_ddi;
> -	if (IS_GEN9_LP(dev_priv))
> -		intel_encoder->pre_pll_enable = bxt_ddi_pre_pll_enable;
> +	intel_encoder->pre_pll_enable = intel_ddi_pre_pll_enable;
> +	intel_encoder->post_pll_disable = intel_ddi_post_pll_disable;
>  	intel_encoder->pre_enable = intel_ddi_pre_enable;
>  	intel_encoder->disable = intel_disable_ddi;
>  	intel_encoder->post_disable = intel_ddi_post_disable;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 36710a30fb37..12ba2b923e6b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5876,6 +5876,8 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state,
>  
>  	if (INTEL_GEN(dev_priv) >= 11)
>  		icl_unmap_plls_to_ports(crtc, old_crtc_state, old_state);
> +
> +	intel_encoders_post_pll_disable(crtc, old_crtc_state, old_state);
>  }
>  
>  static void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state)
> -- 
> 2.13.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-10-30 21:52 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-30 15:40 [PATCH 0/8] drm/i915/icl: Fix HDMI on TypeC static ports Imre Deak
2018-10-30 15:40 ` [PATCH 1/8] drm/i915: Move intel_aux_ch() to intel_bios.c Imre Deak
2018-10-30 22:36   ` Souza, Jose
2018-10-30 15:40 ` [PATCH 2/8] drm/i915: Move aux_ch to intel_digital_port Imre Deak
2018-10-30 22:36   ` Souza, Jose
2018-10-31 13:36     ` Imre Deak
2018-10-30 15:40 ` [PATCH 3/8] drm/i915: Init aux_ch for HDMI ports too Imre Deak
2018-10-30 22:32   ` Souza, Jose
2018-10-30 22:38     ` Imre Deak
2018-10-31  0:03       ` Souza, Jose
2018-10-30 15:40 ` [PATCH 4/8] drm/i915: Use a helper to get the aux power domain Imre Deak
2018-10-30 21:16   ` Lucas De Marchi
2018-10-30 21:31     ` Imre Deak
2018-10-30 15:40 ` [PATCH 5/8] drm/i915: Enable AUX power earlier Imre Deak
2018-10-30 19:05   ` [PATCH v2 " Imre Deak
2018-10-30 21:55     ` Manasi Navare [this message]
2018-10-30 22:04       ` Imre Deak
2018-10-30 23:07   ` [PATCH " Souza, Jose
2018-10-30 23:12     ` Imre Deak
2018-10-30 23:18       ` Souza, Jose
2018-10-30 23:28         ` Imre Deak
2018-10-30 23:52           ` Souza, Jose
2018-10-31  0:04             ` Imre Deak
2018-10-31  0:17               ` Souza, Jose
2018-10-31  0:33                 ` Imre Deak
2018-10-31  0:40                   ` Souza, Jose
2018-10-30 15:40 ` [PATCH 6/8] drm/i915: Enable AUX power for HDMI DDI/TypeC main link too Imre Deak
2018-10-30 23:08   ` Souza, Jose
2018-10-30 15:40 ` [PATCH 7/8] drm/i915: Configure AUX_CH_CTL when enabling the AUX power domain Imre Deak
2018-10-30 21:57   ` Lucas De Marchi
2018-10-31 13:30     ` Imre Deak
2018-10-30 23:28   ` Souza, Jose
2018-10-31 13:34     ` Imre Deak
2018-10-30 15:40 ` [PATCH 8/8] drm/i915/icl+: Sanitize port to PLL mapping Imre Deak
2018-10-30 23:57   ` Souza, Jose
2018-10-30 16:09 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/icl: Fix HDMI on TypeC static ports Patchwork
2018-10-30 16:13 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-10-30 16:28 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-10-30 19:32 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/icl: Fix HDMI on TypeC static ports (rev2) Patchwork
2018-10-30 19:35 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-10-30 19:50 ` ✓ Fi.CI.BAT: success " Patchwork
2018-10-31  0:36 ` ✓ Fi.CI.IGT: " 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=20181030215459.GA3481@intel.com \
    --to=manasi.d.navare@intel.com \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@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.