drm/i915: Simplify ironlake_crtc_compute_clock() CPU eDP case

None of the code in ironlake_crtc_compute_clock() is relevant for CPU
eDP. The CPU eDP PLL is turned on and off in ironlake_edp_pll_{on,off}
from the DP code and that doesn't depend on the crtc_state->dpll values,
so just return early in that case.

v2: Rebase without patch that drops lvds downclock code. (Ville)
Signed-off-by: default avatarAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1458576016-30348-9-git-send-email-ander.conselvan.de.oliveira@intel.com
parent fade85ae
...@@ -8800,13 +8800,16 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc, ...@@ -8800,13 +8800,16 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
intel_clock_t clock, reduced_clock; intel_clock_t clock, reduced_clock;
u32 dpll = 0, fp = 0, fp2 = 0; u32 dpll = 0, fp = 0, fp2 = 0;
bool has_reduced_clock = false; bool has_reduced_clock = false;
bool is_lvds = false;
struct intel_shared_dpll *pll; struct intel_shared_dpll *pll;
memset(&crtc_state->dpll_hw_state, 0, memset(&crtc_state->dpll_hw_state, 0,
sizeof(crtc_state->dpll_hw_state)); sizeof(crtc_state->dpll_hw_state));
is_lvds = intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS); crtc->lowfreq_avail = false;
/* CPU eDP is the only output that doesn't need a PCH PLL of its own. */
if (!crtc_state->has_pch_encoder)
return 0;
if (!crtc_state->clock_set) { if (!crtc_state->clock_set) {
if (!ironlake_compute_clocks(&crtc->base, crtc_state, &clock, if (!ironlake_compute_clocks(&crtc->base, crtc_state, &clock,
...@@ -8824,34 +8827,30 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc, ...@@ -8824,34 +8827,30 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
crtc_state->dpll.p2 = clock.p2; crtc_state->dpll.p2 = clock.p2;
} }
/* CPU eDP is the only output that doesn't need a PCH PLL of its own. */ fp = i9xx_dpll_compute_fp(&crtc_state->dpll);
if (crtc_state->has_pch_encoder) { if (has_reduced_clock)
fp = i9xx_dpll_compute_fp(&crtc_state->dpll); fp2 = i9xx_dpll_compute_fp(&reduced_clock);
if (has_reduced_clock) else
fp2 = i9xx_dpll_compute_fp(&reduced_clock); fp2 = fp;
else
fp2 = fp;
dpll = ironlake_compute_dpll(crtc, crtc_state, dpll = ironlake_compute_dpll(crtc, crtc_state,
&fp, &reduced_clock, &fp, &reduced_clock,
has_reduced_clock ? &fp2 : NULL); has_reduced_clock ? &fp2 : NULL);
crtc_state->dpll_hw_state.dpll = dpll; crtc_state->dpll_hw_state.dpll = dpll;
crtc_state->dpll_hw_state.fp0 = fp; crtc_state->dpll_hw_state.fp0 = fp;
crtc_state->dpll_hw_state.fp1 = fp2; crtc_state->dpll_hw_state.fp1 = fp2;
pll = intel_get_shared_dpll(crtc, crtc_state, NULL); pll = intel_get_shared_dpll(crtc, crtc_state, NULL);
if (pll == NULL) { if (pll == NULL) {
DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n", DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
pipe_name(crtc->pipe)); pipe_name(crtc->pipe));
return -EINVAL; return -EINVAL;
}
} }
if (is_lvds && has_reduced_clock) if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS) &&
has_reduced_clock)
crtc->lowfreq_avail = true; crtc->lowfreq_avail = true;
else
crtc->lowfreq_avail = false;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment