drm/i915: Pass crtc_state->dpll directly to ->find_dpll()

When calculating clocks, just pass a pointer to crtc_state->dpll
directly to the find_dpll() hook. Back when this was introduced in
commit f47709a9 ("drm/i915: create pipe_config->dpll for clock
state") there was no staged crtc config or atomic crtc state, so it was
possible to overwrite the current configuration on error. That hasn't
been the case for a while now, so finally make it "disappear".
Signed-off-by: default avatarAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1458576016-30348-10-git-send-email-ander.conselvan.de.oliveira@intel.com
parent ded220e2
...@@ -7816,7 +7816,6 @@ static int i9xx_crtc_compute_clock(struct intel_crtc *crtc, ...@@ -7816,7 +7816,6 @@ static int i9xx_crtc_compute_clock(struct intel_crtc *crtc,
struct drm_device *dev = crtc->base.dev; struct drm_device *dev = crtc->base.dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
int refclk; int refclk;
intel_clock_t clock;
bool ok; bool ok;
const intel_limit_t *limit; const intel_limit_t *limit;
...@@ -7838,18 +7837,12 @@ static int i9xx_crtc_compute_clock(struct intel_crtc *crtc, ...@@ -7838,18 +7837,12 @@ static int i9xx_crtc_compute_clock(struct intel_crtc *crtc,
limit = intel_limit(crtc_state, refclk); limit = intel_limit(crtc_state, refclk);
ok = dev_priv->display.find_dpll(limit, crtc_state, ok = dev_priv->display.find_dpll(limit, crtc_state,
crtc_state->port_clock, crtc_state->port_clock,
refclk, NULL, &clock); refclk, NULL,
&crtc_state->dpll);
if (!ok) { if (!ok) {
DRM_ERROR("Couldn't find PLL settings for mode!\n"); DRM_ERROR("Couldn't find PLL settings for mode!\n");
return -EINVAL; return -EINVAL;
} }
/* Compat-code for transition, will disappear. */
crtc_state->dpll.n = clock.n;
crtc_state->dpll.m1 = clock.m1;
crtc_state->dpll.m2 = clock.m2;
crtc_state->dpll.p1 = clock.p1;
crtc_state->dpll.p2 = clock.p2;
} }
if (IS_GEN2(dev)) { if (IS_GEN2(dev)) {
...@@ -8797,7 +8790,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc, ...@@ -8797,7 +8790,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
static int ironlake_crtc_compute_clock(struct intel_crtc *crtc, static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
struct intel_crtc_state *crtc_state) struct intel_crtc_state *crtc_state)
{ {
intel_clock_t clock, reduced_clock; intel_clock_t 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;
struct intel_shared_dpll *pll; struct intel_shared_dpll *pll;
...@@ -8811,22 +8804,15 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc, ...@@ -8811,22 +8804,15 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
if (!crtc_state->has_pch_encoder) if (!crtc_state->has_pch_encoder)
return 0; return 0;
if (!crtc_state->clock_set) { if (!crtc_state->clock_set &&
if (!ironlake_compute_clocks(&crtc->base, crtc_state, &clock, !ironlake_compute_clocks(&crtc->base, crtc_state,
&crtc_state->dpll,
&has_reduced_clock, &has_reduced_clock,
&reduced_clock)) { &reduced_clock)) {
DRM_ERROR("Couldn't find PLL settings for mode!\n"); DRM_ERROR("Couldn't find PLL settings for mode!\n");
return -EINVAL; return -EINVAL;
} }
/* Compat-code for transition, will disappear. */
crtc_state->dpll.n = clock.n;
crtc_state->dpll.m1 = clock.m1;
crtc_state->dpll.m2 = clock.m2;
crtc_state->dpll.p1 = clock.p1;
crtc_state->dpll.p2 = clock.p2;
}
fp = i9xx_dpll_compute_fp(&crtc_state->dpll); fp = i9xx_dpll_compute_fp(&crtc_state->dpll);
if (has_reduced_clock) if (has_reduced_clock)
fp2 = i9xx_dpll_compute_fp(&reduced_clock); fp2 = i9xx_dpll_compute_fp(&reduced_clock);
......
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