| From 0882dae983707455e97479e5e904e37673517ebc Mon Sep 17 00:00:00 2001 |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Wed, 8 Jan 2014 11:12:27 -0200 |
| Subject: drm/i915: fix DDI PLLs HW state readout code |
| |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| |
| commit 0882dae983707455e97479e5e904e37673517ebc upstream. |
| |
| Properly zero the refcounts and crtc->ddi_pll_set so the previous HW |
| state doesn't affect the result of reading the current HW state. |
| |
| This fixes WARNs about WRPLL refcount if we have an HDMI monitor on |
| HSW and then suspend/resume. |
| |
| Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64379 |
| Tested-by: Qingshuai Tian <qingshuai.tian@intel.com> |
| Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_ddi.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_ddi.c |
| +++ b/drivers/gpu/drm/i915/intel_ddi.c |
| @@ -961,12 +961,18 @@ void intel_ddi_setup_hw_pll_state(struct |
| enum pipe pipe; |
| struct intel_crtc *intel_crtc; |
| |
| + dev_priv->ddi_plls.spll_refcount = 0; |
| + dev_priv->ddi_plls.wrpll1_refcount = 0; |
| + dev_priv->ddi_plls.wrpll2_refcount = 0; |
| + |
| for_each_pipe(pipe) { |
| intel_crtc = |
| to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); |
| |
| - if (!intel_crtc->active) |
| + if (!intel_crtc->active) { |
| + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_NONE; |
| continue; |
| + } |
| |
| intel_crtc->ddi_pll_sel = intel_ddi_get_crtc_pll(dev_priv, |
| pipe); |