drm/i915: Only update shared dpll state when needed
Instead of every time it isn't active: We only need to do that when the pll is currently unused, i.e. when pll->refcount == 0. For paranoia add a warning for the ibx case where plls have a fixed mapping and hence should always be unused after the call to intel_put_shared_dpll. v2: Simplify control flow and use struct assignment instead of memcpy as suggested by Damien. Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
bdd4b6a655
commit
f2a69f44af
|
@ -3602,6 +3602,8 @@ static struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc)
|
|||
DRM_DEBUG_KMS("CRTC:%d using pre-allocated %s\n",
|
||||
crtc->base.base.id, pll->name);
|
||||
|
||||
WARN_ON(pll->refcount);
|
||||
|
||||
goto found;
|
||||
}
|
||||
|
||||
|
@ -3635,14 +3637,14 @@ static struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc)
|
|||
return NULL;
|
||||
|
||||
found:
|
||||
if (pll->refcount == 0)
|
||||
pll->hw_state = crtc->config.dpll_hw_state;
|
||||
|
||||
crtc->config.shared_dpll = i;
|
||||
DRM_DEBUG_DRIVER("using %s for pipe %c\n", pll->name,
|
||||
pipe_name(crtc->pipe));
|
||||
|
||||
if (pll->active == 0) {
|
||||
memcpy(&pll->hw_state, &crtc->config.dpll_hw_state,
|
||||
sizeof(pll->hw_state));
|
||||
|
||||
DRM_DEBUG_DRIVER("setting up %s\n", pll->name);
|
||||
WARN_ON(pll->on);
|
||||
assert_shared_dpll_disabled(dev_priv, pll);
|
||||
|
|
Loading…
Reference in New Issue