Patch "drm/i915: reintroduce VLV/CHV PFI programming power domain workaround" has been added to the 4.12-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/i915: reintroduce VLV/CHV PFI programming power domain workaround
to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-i915-reintroduce-vlv-chv-pfi-programming-power-domain-workaround.patch
and it can be found in the queue-4.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
9c75b185274b7766fe69c2e73607c1ed780b284bMon Sep 17 00:00:00 2001
From: Gabriel Krisman Bertazi <[email protected]>
Date: Wed, 28 Jun 2017 18:06:05 -0300
Subject: drm/i915: reintroduce VLV/CHV PFI programming power domain workaround
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Gabriel Krisman Bertazi <[email protected]>
commit 9c75b185274b7766fe69c2e73607c1ed780b284b upstream.
There are still cases on these platforms where an attempt is made to configure the CDCLK while the power domain is off, like when coming back from a suspend. So the workaround below is still needed.
This effectively reverts commit 63ff30442519 ("drm/i915: Nuke the VLV/CHV PFI programming power domain workaround").
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101517
--- drivers/gpu/drm/i915/intel_cdclk.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
drivers/gpu/drm/i915/intel_cdclk.c +20 -0
@@ -491,6 +491,14 @@ static void vlv_set_cdclk(struct drm_i91int cdclk = cdclk_state->cdclk;u32 val, cmd; +/* There are cases where we can end up here with power domains +* off and a CDCLK frequency other than the minimum, like when +* issuing a modeset without actually changing any display after +* a system suspend. So grab the PIPE-A domain, which covers +* the HW blocks needed for the following programming. +*/ +intel_display_power_get (dev_priv,POWER_DOMAIN_PIPE_A ); +if (cdclk >=320000 )/* jump to highest voltage for 400MHz too */ cmd =2 ;else if (cdclk ==266667 )
@@ -549,6 +557,8 @@ static void vlv_set_cdclk(struct drm_i91intel_update_cdclk (dev_priv);vlv_program_pfi_credits (dev_priv); + +intel_display_power_put (dev_priv,POWER_DOMAIN_PIPE_A ); } static void chv_set_cdclk(struct drm_i915_private *dev_priv,
@@ -568,6 +578,14 @@ static void chv_set_cdclk(struct drm_i91return ; } +/* There are cases where we can end up here with power domains +* off and a CDCLK frequency other than the minimum, like when +* issuing a modeset without actually changing any display after +* a system suspend. So grab the PIPE-A domain, which covers +* the HW blocks needed for the following programming. +*/ +intel_display_power_get (dev_priv,POWER_DOMAIN_PIPE_A ); +/* * Specs are full of misinformation, but testing on actual * hardware has shown that we just need to write the desired
@@ -590,6 +608,8 @@ static void chv_set_cdclk(struct drm_i91intel_update_cdclk (dev_priv);vlv_program_pfi_credits (dev_priv); + +intel_display_power_put (dev_priv,POWER_DOMAIN_PIPE_A ); }static int bdw_calc_cdclk (int max_pixclk)
Patches currently in stable-queue which might be from [email protected] are
queue-4.12/drm-i915-reintroduce-vlv-chv-pfi-programming-power-domain-workaround.patch