All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 22/29] drm/i915: Start using output_types for DPLL selection
Date: Mon, 18 Sep 2017 21:25:57 +0300	[thread overview]
Message-ID: <20170918182604.9519-23-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20170918182604.9519-1-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

encoder->type is not realiable for DP/HDMI so let's switch the DPLL
selection over to using output_types.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_dpll_mgr.c | 36 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dpll_mgr.c b/drivers/gpu/drm/i915/intel_dpll_mgr.c
index a2a3d93d67bd..c03d9ec458e6 100644
--- a/drivers/gpu/drm/i915/intel_dpll_mgr.c
+++ b/drivers/gpu/drm/i915/intel_dpll_mgr.c
@@ -813,15 +813,11 @@ hsw_get_dpll(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state,
 	memset(&crtc_state->dpll_hw_state, 0,
 	       sizeof(crtc_state->dpll_hw_state));
 
-	if (encoder->type == INTEL_OUTPUT_HDMI) {
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
 		pll = hsw_ddi_hdmi_get_dpll(clock, crtc, crtc_state);
-
-	} else if (encoder->type == INTEL_OUTPUT_DP ||
-		   encoder->type == INTEL_OUTPUT_DP_MST ||
-		   encoder->type == INTEL_OUTPUT_EDP) {
+	} else if (intel_crtc_has_dp_encoder(crtc_state)) {
 		pll = hsw_ddi_dp_get_dpll(encoder, clock);
-
-	} else if (encoder->type == INTEL_OUTPUT_ANALOG) {
+	} else if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_ANALOG)) {
 		if (WARN_ON(crtc_state->port_clock / 2 != 135000))
 			return NULL;
 
@@ -1369,15 +1365,13 @@ skl_get_dpll(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state,
 
 	memset(&dpll_hw_state, 0, sizeof(dpll_hw_state));
 
-	if (encoder->type == INTEL_OUTPUT_HDMI) {
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
 		bret = skl_ddi_hdmi_pll_dividers(crtc, crtc_state, clock);
 		if (!bret) {
 			DRM_DEBUG_KMS("Could not get HDMI pll dividers.\n");
 			return NULL;
 		}
-	} else if (encoder->type == INTEL_OUTPUT_DP ||
-		   encoder->type == INTEL_OUTPUT_DP_MST ||
-		   encoder->type == INTEL_OUTPUT_EDP) {
+	} else if (intel_crtc_has_dp_encoder(crtc_state)) {
 		bret = skl_ddi_dp_set_dpll_hw_state(clock, &dpll_hw_state);
 		if (!bret) {
 			DRM_DEBUG_KMS("Could not set DP dpll HW state.\n");
@@ -1388,7 +1382,7 @@ skl_get_dpll(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state,
 		return NULL;
 	}
 
-	if (encoder->type == INTEL_OUTPUT_EDP)
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP))
 		pll = intel_find_shared_dpll(crtc, crtc_state,
 					     DPLL_ID_SKL_DPLL0,
 					     DPLL_ID_SKL_DPLL0);
@@ -1812,14 +1806,12 @@ bxt_get_dpll(struct intel_crtc *crtc,
 	struct intel_shared_dpll *pll;
 	int i, clock = crtc_state->port_clock;
 
-	if (encoder->type == INTEL_OUTPUT_HDMI &&
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) &&
 	    !bxt_ddi_hdmi_set_dpll_hw_state(crtc, crtc_state, clock,
 					    &dpll_hw_state))
 		return NULL;
 
-	if ((encoder->type == INTEL_OUTPUT_DP ||
-	     encoder->type == INTEL_OUTPUT_EDP ||
-	     encoder->type == INTEL_OUTPUT_DP_MST) &&
+	if (intel_crtc_has_dp_encoder(crtc_state) &&
 	    !bxt_ddi_dp_set_dpll_hw_state(clock, &dpll_hw_state))
 		return NULL;
 
@@ -1828,7 +1820,7 @@ bxt_get_dpll(struct intel_crtc *crtc,
 
 	crtc_state->dpll_hw_state = dpll_hw_state;
 
-	if (encoder->type == INTEL_OUTPUT_DP_MST) {
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST)) {
 		struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base);
 
 		intel_dig_port = intel_mst->primary;
@@ -2345,15 +2337,13 @@ cnl_get_dpll(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state,
 
 	memset(&dpll_hw_state, 0, sizeof(dpll_hw_state));
 
-	if (encoder->type == INTEL_OUTPUT_HDMI) {
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
 		bret = cnl_ddi_hdmi_pll_dividers(crtc, crtc_state, clock);
 		if (!bret) {
 			DRM_DEBUG_KMS("Could not get HDMI pll dividers.\n");
 			return NULL;
 		}
-	} else if (encoder->type == INTEL_OUTPUT_DP ||
-		   encoder->type == INTEL_OUTPUT_DP_MST ||
-		   encoder->type == INTEL_OUTPUT_EDP) {
+	} else if (intel_crtc_has_dp_encoder(crtc_state)) {
 		bret = cnl_ddi_dp_set_dpll_hw_state(clock, &dpll_hw_state);
 		if (!bret) {
 			DRM_DEBUG_KMS("Could not set DP dpll HW state.\n");
@@ -2361,8 +2351,8 @@ cnl_get_dpll(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state,
 		}
 		crtc_state->dpll_hw_state = dpll_hw_state;
 	} else {
-		DRM_DEBUG_KMS("Skip DPLL setup for encoder %d\n",
-			      encoder->type);
+		DRM_DEBUG_KMS("Skip DPLL setup for output_types 0x%x\n",
+			      crtc_state->output_types);
 		return NULL;
 	}
 
-- 
2.13.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2017-09-18 18:27 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-18 18:25 [PATCH 00/29] drm/i915: Eliminate DDI encoder->type frobbery redux Ville Syrjala
2017-09-18 18:25 ` [PATCH 01/29] drm/i915: Replace some spaces with tabs Ville Syrjala
2017-09-18 18:38   ` Chris Wilson
2017-09-18 18:53   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 02/29] drm/i915: Shrink bxt_ddi_buf_trans Ville Syrjala
2017-09-18 18:54   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 03/29] drm/i915: Shrink cnl_ddi_buf_trans Ville Syrjala
2017-09-18 18:39   ` Chris Wilson
2017-09-18 18:40   ` Chris Wilson
2017-09-18 19:02     ` Chris Wilson
2017-09-18 18:25 ` [PATCH 04/29] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
2017-09-18 18:43   ` Chris Wilson
2017-09-18 18:56     ` Ville Syrjälä
2017-09-18 18:54   ` Jani Nikula
2017-09-20 14:03   ` [PATCH v2 " Ville Syrjala
2017-09-18 18:25 ` [PATCH 05/29] drm/i915: Extract intel_ddi_clk_disable() Ville Syrjala
2017-09-18 18:45   ` Chris Wilson
2017-09-18 19:09     ` Ville Syrjälä
2017-09-18 18:25 ` [PATCH 06/29] drm/i915: Extract intel_disable_ddi_buf() Ville Syrjala
2017-09-18 18:55   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 07/29] drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable() Ville Syrjala
2017-09-18 18:55   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 08/29] drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants Ville Syrjala
2017-09-18 18:56   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 09/29] drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp() Ville Syrjala
2017-09-18 18:56   ` Jani Nikula
2017-09-18 18:25 ` [PATCH 10/29] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants Ville Syrjala
2017-09-18 18:25 ` [PATCH 11/29] drm/i915: Plump crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}() Ville Syrjala
2017-09-18 18:25 ` [PATCH 12/29] drm/i915: Split intel_enable_ddi() into DP and HDMI variants Ville Syrjala
2017-09-18 18:25 ` [PATCH 13/29] drm/i915: Relocate intel_ddi_get_buf_trans_*() functions Ville Syrjala
2017-09-18 18:25 ` [PATCH 14/29] drm/i915: Extract intel_ddi_get_buf_trans_hdmi() Ville Syrjala
2017-09-18 18:25 ` [PATCH 15/29] drm/i915: Pass the encoder type explicitly to skl_set_iboost() Ville Syrjala
2017-09-18 18:25 ` [PATCH 16/29] drm/i915: Pass the level to intel_prepare_hdmi_ddi_buffers() Ville Syrjala
2017-09-18 18:25 ` [PATCH 17/29] drm/i915: Integrate BXT into intel_ddi_dp_voltage_max() Ville Syrjala
2017-09-18 18:25 ` [PATCH 18/29] drm/i915: Pass encoder type to cnl_ddi_vswing_sequence() explicitly Ville Syrjala
2017-09-18 18:25 ` [PATCH 19/29] drm/i915: Kill off the BXT buf_trans default_index Ville Syrjala
2017-09-18 18:25 ` [PATCH 20/29] drm/i915: Don't use encoder->type in intel_ddi_set_pipe_settings() Ville Syrjala
2017-09-18 18:25 ` [PATCH 21/29] drm/i915: Pass crtc state to intel_prepare_dp_ddi_buffers() Ville Syrjala
2017-09-18 18:25 ` Ville Syrjala [this message]
2017-09-18 18:25 ` [PATCH 23/29] drm/i915: Stop using encoder->type in intel_ddi_enable_transcoder_func() Ville Syrjala
2017-09-18 18:25 ` [PATCH 24/29] drm/i915: Centralize the SKL DDI A/E vs. B/C/D buf trans handling Ville Syrjala
2017-09-18 18:26 ` [PATCH 25/29] drm/i915: Stop frobbing with DDI encoder->type Ville Syrjala
2017-09-21 11:06   ` [PATCH v2 " Ville Syrjala
2017-09-21 14:56   ` [PATCH v3 " Ville Syrjala
2017-09-18 18:26 ` [PATCH 26/29] drm/i915: Unify error handling for missing DDI buf trans tables Ville Syrjala
2017-09-18 18:26 ` [PATCH 27/29] drm/i915: Clear up the types we use for DDI buf trans level/n_entries Ville Syrjala
2017-09-18 18:26 ` [PATCH 28/29] drm/i915: Replace most intel_ddi_get_encoder_port() alls with encoder->port Ville Syrjala
2017-09-18 18:26 ` [PATCH 29/29] drm/i915: Pass a crtc state to ddi post_disable from MST code Ville Syrjala
2017-09-18 19:02   ` Jani Nikula
2017-09-18 19:04 ` [PATCH 00/29] drm/i915: Eliminate DDI encoder->type frobbery redux Jani Nikula
2017-09-18 19:46 ` ✗ Fi.CI.BAT: failure for " Patchwork
2017-09-20 14:26 ` ✗ Fi.CI.BAT: failure for drm/i915: Eliminate DDI encoder->type frobbery redux (rev2) Patchwork
2017-09-20 15:40 ` Patchwork
2017-09-20 15:46   ` Ville Syrjälä
2017-09-25 11:40     ` Jani Nikula
2017-09-21 13:18 ` ✗ Fi.CI.BAT: failure for drm/i915: Eliminate DDI encoder->type frobbery redux (rev3) Patchwork
2017-09-21 15:36 ` ✓ Fi.CI.BAT: success for drm/i915: Eliminate DDI encoder->type frobbery redux (rev4) Patchwork
2017-09-21 18:26 ` ✗ Fi.CI.IGT: failure " 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=20170918182604.9519-23-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.