mirror of https://gitee.com/openkylin/linux.git
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: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Reviewed-by: Maarten 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
This commit is contained in:
parent
fade85ae21
commit
ded220e251
|
@ -8800,13 +8800,16 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
|
|||
intel_clock_t clock, reduced_clock;
|
||||
u32 dpll = 0, fp = 0, fp2 = 0;
|
||||
bool has_reduced_clock = false;
|
||||
bool is_lvds = false;
|
||||
struct intel_shared_dpll *pll;
|
||||
|
||||
memset(&crtc_state->dpll_hw_state, 0,
|
||||
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 (!ironlake_compute_clocks(&crtc->base, crtc_state, &clock,
|
||||
|
@ -8824,34 +8827,30 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
|
|||
crtc_state->dpll.p2 = clock.p2;
|
||||
}
|
||||
|
||||
/* CPU eDP is the only output that doesn't need a PCH PLL of its own. */
|
||||
if (crtc_state->has_pch_encoder) {
|
||||
fp = i9xx_dpll_compute_fp(&crtc_state->dpll);
|
||||
if (has_reduced_clock)
|
||||
fp2 = i9xx_dpll_compute_fp(&reduced_clock);
|
||||
else
|
||||
fp2 = fp;
|
||||
fp = i9xx_dpll_compute_fp(&crtc_state->dpll);
|
||||
if (has_reduced_clock)
|
||||
fp2 = i9xx_dpll_compute_fp(&reduced_clock);
|
||||
else
|
||||
fp2 = fp;
|
||||
|
||||
dpll = ironlake_compute_dpll(crtc, crtc_state,
|
||||
&fp, &reduced_clock,
|
||||
has_reduced_clock ? &fp2 : NULL);
|
||||
dpll = ironlake_compute_dpll(crtc, crtc_state,
|
||||
&fp, &reduced_clock,
|
||||
has_reduced_clock ? &fp2 : NULL);
|
||||
|
||||
crtc_state->dpll_hw_state.dpll = dpll;
|
||||
crtc_state->dpll_hw_state.fp0 = fp;
|
||||
crtc_state->dpll_hw_state.fp1 = fp2;
|
||||
crtc_state->dpll_hw_state.dpll = dpll;
|
||||
crtc_state->dpll_hw_state.fp0 = fp;
|
||||
crtc_state->dpll_hw_state.fp1 = fp2;
|
||||
|
||||
pll = intel_get_shared_dpll(crtc, crtc_state, NULL);
|
||||
if (pll == NULL) {
|
||||
DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
|
||||
pipe_name(crtc->pipe));
|
||||
return -EINVAL;
|
||||
}
|
||||
pll = intel_get_shared_dpll(crtc, crtc_state, NULL);
|
||||
if (pll == NULL) {
|
||||
DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
|
||||
pipe_name(crtc->pipe));
|
||||
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;
|
||||
else
|
||||
crtc->lowfreq_avail = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue