aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2017-10-27 15:31:26 -0400
committerVille Syrjälä <ville.syrjala@linux.intel.com>2017-10-30 13:56:51 -0400
commitbb911536f07e5ed9147e3acf55a2cd72dffff70d (patch)
treee8fa39016cfa32d87d6cd8cfb22ac8c4b88fca71
parent0fce04c8764bd0d6ef9b4488460a5a880afb1c73 (diff)
drm/i915: Eliminate pll->state usage from bxt_calc_pll_link()
We should be using the DPLL hw state we got from the current crtc state to determine the corresponding port clock frequency rather than getting it via the current state programmed into the DPLL. v2: Rebase due to intel_dpll_id changes Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171027193128.14483-5-ville.syrjala@linux.intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index aaaca906c97f..8183304c7d34 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1423,19 +1423,16 @@ static void hsw_ddi_clock_get(struct intel_encoder *encoder,
1423 ddi_dotclock_get(pipe_config); 1423 ddi_dotclock_get(pipe_config);
1424} 1424}
1425 1425
1426static int bxt_calc_pll_link(struct drm_i915_private *dev_priv, 1426static int bxt_calc_pll_link(struct intel_crtc_state *crtc_state)
1427 enum intel_dpll_id pll_id)
1428{ 1427{
1429 struct intel_shared_dpll *pll;
1430 struct intel_dpll_hw_state *state; 1428 struct intel_dpll_hw_state *state;
1431 struct dpll clock; 1429 struct dpll clock;
1432 1430
1433 /* For DDI ports we always use a shared PLL. */ 1431 /* For DDI ports we always use a shared PLL. */
1434 if (WARN_ON(pll_id == DPLL_ID_PRIVATE)) 1432 if (WARN_ON(!crtc_state->shared_dpll))
1435 return 0; 1433 return 0;
1436 1434
1437 pll = &dev_priv->shared_dplls[pll_id]; 1435 state = &crtc_state->dpll_hw_state;
1438 state = &pll->state.hw_state;
1439 1436
1440 clock.m1 = 2; 1437 clock.m1 = 2;
1441 clock.m2 = (state->pll0 & PORT_PLL_M2_MASK) << 22; 1438 clock.m2 = (state->pll0 & PORT_PLL_M2_MASK) << 22;
@@ -1449,13 +1446,9 @@ static int bxt_calc_pll_link(struct drm_i915_private *dev_priv,
1449} 1446}
1450 1447
1451static void bxt_ddi_clock_get(struct intel_encoder *encoder, 1448static void bxt_ddi_clock_get(struct intel_encoder *encoder,
1452 struct intel_crtc_state *pipe_config) 1449 struct intel_crtc_state *pipe_config)
1453{ 1450{
1454 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1451 pipe_config->port_clock = bxt_calc_pll_link(pipe_config);
1455 enum port port = encoder->port;
1456 enum intel_dpll_id pll_id = port;
1457
1458 pipe_config->port_clock = bxt_calc_pll_link(dev_priv, pll_id);
1459 1452
1460 ddi_dotclock_get(pipe_config); 1453 ddi_dotclock_get(pipe_config);
1461} 1454}