mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 00:34:52 +00:00
drm/i915: vlv: clamp minimum RPS frequency to what Punit allows
As described in the code comment, I couldn't set the minimum RPS frequency on my BYT-M B0 to the minimum allowed as reported by Punit. Fix this by clamping the minimum value to the first one that was accepted on my machine. Atm this issue doesn't cause any test failures, since in igt/pm_rps we only check the cached version of the current frequency which is the same what has been set. In the future we'll add checks for the actual frequency too, and for that to pass this fix is necessary. Signed-off-by: Imre Deak <imre.deak@intel.com> Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1417711175-13271-1-git-send-email-imre.deak@intel.com
This commit is contained in:
parent
a308ccb3a9
commit
361460355c
1 changed files with 11 additions and 1 deletions
|
@ -5100,7 +5100,17 @@ static int valleyview_rps_rpe_freq(struct drm_i915_private *dev_priv)
|
|||
|
||||
static int valleyview_rps_min_freq(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
return vlv_punit_read(dev_priv, PUNIT_REG_GPU_LFM) & 0xff;
|
||||
u32 val;
|
||||
|
||||
val = vlv_punit_read(dev_priv, PUNIT_REG_GPU_LFM) & 0xff;
|
||||
/*
|
||||
* According to the BYT Punit GPU turbo HAS 1.1.6.3 the minimum value
|
||||
* for the minimum frequency in GPLL mode is 0xc1. Contrary to this on
|
||||
* a BYT-M B0 the above register contains 0xbf. Moreover when setting
|
||||
* a frequency Punit will not allow values below 0xc0. Clamp it 0xc0
|
||||
* to make sure it matches what Punit accepts.
|
||||
*/
|
||||
return max_t(u32, val, 0xc0);
|
||||
}
|
||||
|
||||
/* Check that the pctx buffer wasn't move under us. */
|
||||
|
|
Loading…
Add table
Reference in a new issue