|
@@ -5852,7 +5852,7 @@ static u32 intel_rps_limits(struct drm_i915_private *dev_priv, u8 val)
|
|
* the hw runs at the minimal clock before selecting the desired
|
|
* the hw runs at the minimal clock before selecting the desired
|
|
* frequency, if the down threshold expires in that window we will not
|
|
* frequency, if the down threshold expires in that window we will not
|
|
* receive a down interrupt. */
|
|
* receive a down interrupt. */
|
|
- if (IS_GEN9(dev_priv)) {
|
|
|
|
|
|
+ if (INTEL_GEN(dev_priv) >= 9) {
|
|
limits = (dev_priv->rps.max_freq_softlimit) << 23;
|
|
limits = (dev_priv->rps.max_freq_softlimit) << 23;
|
|
if (val <= dev_priv->rps.min_freq_softlimit)
|
|
if (val <= dev_priv->rps.min_freq_softlimit)
|
|
limits |= (dev_priv->rps.min_freq_softlimit) << 14;
|
|
limits |= (dev_priv->rps.min_freq_softlimit) << 14;
|
|
@@ -5994,7 +5994,7 @@ static int gen6_set_rps(struct drm_i915_private *dev_priv, u8 val)
|
|
if (val != dev_priv->rps.cur_freq) {
|
|
if (val != dev_priv->rps.cur_freq) {
|
|
gen6_set_rps_thresholds(dev_priv, val);
|
|
gen6_set_rps_thresholds(dev_priv, val);
|
|
|
|
|
|
- if (IS_GEN9(dev_priv))
|
|
|
|
|
|
+ if (INTEL_GEN(dev_priv) >= 9)
|
|
I915_WRITE(GEN6_RPNSWREQ,
|
|
I915_WRITE(GEN6_RPNSWREQ,
|
|
GEN9_FREQUENCY(val));
|
|
GEN9_FREQUENCY(val));
|
|
else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
|
|
else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
|
|
@@ -6353,7 +6353,7 @@ static void gen6_init_rps_frequencies(struct drm_i915_private *dev_priv)
|
|
|
|
|
|
dev_priv->rps.efficient_freq = dev_priv->rps.rp1_freq;
|
|
dev_priv->rps.efficient_freq = dev_priv->rps.rp1_freq;
|
|
if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv) ||
|
|
if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv) ||
|
|
- IS_GEN9_BC(dev_priv)) {
|
|
|
|
|
|
+ IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv)) {
|
|
u32 ddcc_status = 0;
|
|
u32 ddcc_status = 0;
|
|
|
|
|
|
if (sandybridge_pcode_read(dev_priv,
|
|
if (sandybridge_pcode_read(dev_priv,
|
|
@@ -6366,7 +6366,7 @@ static void gen6_init_rps_frequencies(struct drm_i915_private *dev_priv)
|
|
dev_priv->rps.max_freq);
|
|
dev_priv->rps.max_freq);
|
|
}
|
|
}
|
|
|
|
|
|
- if (IS_GEN9_BC(dev_priv)) {
|
|
|
|
|
|
+ if (IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv)) {
|
|
/* Store the frequency values in 16.66 MHZ units, which is
|
|
/* Store the frequency values in 16.66 MHZ units, which is
|
|
* the natural hardware unit for SKL
|
|
* the natural hardware unit for SKL
|
|
*/
|
|
*/
|
|
@@ -6672,7 +6672,7 @@ static void gen6_update_ring_freq(struct drm_i915_private *dev_priv)
|
|
/* convert DDR frequency from units of 266.6MHz to bandwidth */
|
|
/* convert DDR frequency from units of 266.6MHz to bandwidth */
|
|
min_ring_freq = mult_frac(min_ring_freq, 8, 3);
|
|
min_ring_freq = mult_frac(min_ring_freq, 8, 3);
|
|
|
|
|
|
- if (IS_GEN9_BC(dev_priv)) {
|
|
|
|
|
|
+ if (IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv)) {
|
|
/* Convert GT frequency to 50 HZ units */
|
|
/* Convert GT frequency to 50 HZ units */
|
|
min_gpu_freq = dev_priv->rps.min_freq / GEN9_FREQ_SCALER;
|
|
min_gpu_freq = dev_priv->rps.min_freq / GEN9_FREQ_SCALER;
|
|
max_gpu_freq = dev_priv->rps.max_freq / GEN9_FREQ_SCALER;
|
|
max_gpu_freq = dev_priv->rps.max_freq / GEN9_FREQ_SCALER;
|
|
@@ -6690,7 +6690,7 @@ static void gen6_update_ring_freq(struct drm_i915_private *dev_priv)
|
|
int diff = max_gpu_freq - gpu_freq;
|
|
int diff = max_gpu_freq - gpu_freq;
|
|
unsigned int ia_freq = 0, ring_freq = 0;
|
|
unsigned int ia_freq = 0, ring_freq = 0;
|
|
|
|
|
|
- if (IS_GEN9_BC(dev_priv)) {
|
|
|
|
|
|
+ if (IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv)) {
|
|
/*
|
|
/*
|
|
* ring_freq = 2 * GT. ring_freq is in 100MHz units
|
|
* ring_freq = 2 * GT. ring_freq is in 100MHz units
|
|
* No floor required for ring frequency on SKL.
|
|
* No floor required for ring frequency on SKL.
|
|
@@ -7821,7 +7821,7 @@ void intel_enable_gt_powersave(struct drm_i915_private *dev_priv)
|
|
} else if (INTEL_GEN(dev_priv) >= 9) {
|
|
} else if (INTEL_GEN(dev_priv) >= 9) {
|
|
gen9_enable_rc6(dev_priv);
|
|
gen9_enable_rc6(dev_priv);
|
|
gen9_enable_rps(dev_priv);
|
|
gen9_enable_rps(dev_priv);
|
|
- if (IS_GEN9_BC(dev_priv))
|
|
|
|
|
|
+ if (IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv))
|
|
gen6_update_ring_freq(dev_priv);
|
|
gen6_update_ring_freq(dev_priv);
|
|
} else if (IS_BROADWELL(dev_priv)) {
|
|
} else if (IS_BROADWELL(dev_priv)) {
|
|
gen8_enable_rps(dev_priv);
|
|
gen8_enable_rps(dev_priv);
|
|
@@ -9066,7 +9066,7 @@ static int chv_freq_opcode(struct drm_i915_private *dev_priv, int val)
|
|
|
|
|
|
int intel_gpu_freq(struct drm_i915_private *dev_priv, int val)
|
|
int intel_gpu_freq(struct drm_i915_private *dev_priv, int val)
|
|
{
|
|
{
|
|
- if (IS_GEN9(dev_priv))
|
|
|
|
|
|
+ if (INTEL_GEN(dev_priv) >= 9)
|
|
return DIV_ROUND_CLOSEST(val * GT_FREQUENCY_MULTIPLIER,
|
|
return DIV_ROUND_CLOSEST(val * GT_FREQUENCY_MULTIPLIER,
|
|
GEN9_FREQ_SCALER);
|
|
GEN9_FREQ_SCALER);
|
|
else if (IS_CHERRYVIEW(dev_priv))
|
|
else if (IS_CHERRYVIEW(dev_priv))
|
|
@@ -9079,7 +9079,7 @@ int intel_gpu_freq(struct drm_i915_private *dev_priv, int val)
|
|
|
|
|
|
int intel_freq_opcode(struct drm_i915_private *dev_priv, int val)
|
|
int intel_freq_opcode(struct drm_i915_private *dev_priv, int val)
|
|
{
|
|
{
|
|
- if (IS_GEN9(dev_priv))
|
|
|
|
|
|
+ if (INTEL_GEN(dev_priv) >= 9)
|
|
return DIV_ROUND_CLOSEST(val * GEN9_FREQ_SCALER,
|
|
return DIV_ROUND_CLOSEST(val * GEN9_FREQ_SCALER,
|
|
GT_FREQUENCY_MULTIPLIER);
|
|
GT_FREQUENCY_MULTIPLIER);
|
|
else if (IS_CHERRYVIEW(dev_priv))
|
|
else if (IS_CHERRYVIEW(dev_priv))
|