drm/i915: Update PMINTRMSK on VLV/CHV after sysfs min/max freq change
Currently we don't call valleyview_set_rps() when changing the min/max limits through sysfs if the current frequency is still within the new limits. However that means we sometimes forget to update PMINTRMSK. Eg. if the current frequency is at the old minimum, and then we reduce the minum further we should then enable the 'down' interrupts in PMINTRMSK but currently we don't. Fix it up by always calling valleyview_set_rps() (just like we do for !vlv/chv platforms). This also allows the code to be simplified a bit. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
a93fad0f7f
commit
f745a80e34
|
@ -374,17 +374,17 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
|
|||
|
||||
dev_priv->rps.max_freq_softlimit = val;
|
||||
|
||||
if (dev_priv->rps.cur_freq > val) {
|
||||
if (IS_VALLEYVIEW(dev))
|
||||
valleyview_set_rps(dev, val);
|
||||
else
|
||||
gen6_set_rps(dev, val);
|
||||
} else if (!IS_VALLEYVIEW(dev)) {
|
||||
/* We still need gen6_set_rps to process the new max_delay and
|
||||
* update the interrupt limits even though frequency request is
|
||||
* unchanged. */
|
||||
gen6_set_rps(dev, dev_priv->rps.cur_freq);
|
||||
}
|
||||
val = clamp_t(int, dev_priv->rps.cur_freq,
|
||||
dev_priv->rps.min_freq_softlimit,
|
||||
dev_priv->rps.max_freq_softlimit);
|
||||
|
||||
/* We still need *_set_rps to process the new max_delay and
|
||||
* update the interrupt limits and PMINTRMSK even though
|
||||
* frequency request may be unchanged. */
|
||||
if (IS_VALLEYVIEW(dev))
|
||||
valleyview_set_rps(dev, val);
|
||||
else
|
||||
gen6_set_rps(dev, val);
|
||||
|
||||
mutex_unlock(&dev_priv->rps.hw_lock);
|
||||
|
||||
|
@ -442,17 +442,17 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev,
|
|||
|
||||
dev_priv->rps.min_freq_softlimit = val;
|
||||
|
||||
if (dev_priv->rps.cur_freq < val) {
|
||||
if (IS_VALLEYVIEW(dev))
|
||||
valleyview_set_rps(dev, val);
|
||||
else
|
||||
gen6_set_rps(dev, val);
|
||||
} else if (!IS_VALLEYVIEW(dev)) {
|
||||
/* We still need gen6_set_rps to process the new min_delay and
|
||||
* update the interrupt limits even though frequency request is
|
||||
* unchanged. */
|
||||
gen6_set_rps(dev, dev_priv->rps.cur_freq);
|
||||
}
|
||||
val = clamp_t(int, dev_priv->rps.cur_freq,
|
||||
dev_priv->rps.min_freq_softlimit,
|
||||
dev_priv->rps.max_freq_softlimit);
|
||||
|
||||
/* We still need *_set_rps to process the new min_delay and
|
||||
* update the interrupt limits and PMINTRMSK even though
|
||||
* frequency request may be unchanged. */
|
||||
if (IS_VALLEYVIEW(dev))
|
||||
valleyview_set_rps(dev, val);
|
||||
else
|
||||
gen6_set_rps(dev, val);
|
||||
|
||||
mutex_unlock(&dev_priv->rps.hw_lock);
|
||||
|
||||
|
|
Loading…
Reference in a new issue