提交 6cca3195 编写于 作者: V Ville Syrjälä 提交者: Daniel Vetter

drm/i915: Allow pixel clock up to 95% of cdclk on CHV

Supposedly CHV can sustain a pixel clock of up to 95% of
cdclk, as opposed to the 90% limit that was used old older
platforms. Update the cdclk selection code to allow for this.

This will allow eg. HDMI 4k modes with their 297MHz pixel clock
while still respecting the 320 MHz cdclk limit on CHV.
Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: NVijay Purushothaman <vijay.a.purushothaman@linux.intel.com>
Reviewed-by: NYogesh Mohan Marimuthu <yogesh.mohan.marimuthu@intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 de31facd
...@@ -5038,6 +5038,7 @@ static int valleyview_calc_cdclk(struct drm_i915_private *dev_priv, ...@@ -5038,6 +5038,7 @@ static int valleyview_calc_cdclk(struct drm_i915_private *dev_priv,
int max_pixclk) int max_pixclk)
{ {
int freq_320 = (dev_priv->hpll_freq << 1) % 320000 != 0 ? 333333 : 320000; int freq_320 = (dev_priv->hpll_freq << 1) % 320000 != 0 ? 333333 : 320000;
int limit = IS_CHERRYVIEW(dev_priv) ? 95 : 90;
/* FIXME: Punit isn't quite ready yet */ /* FIXME: Punit isn't quite ready yet */
if (IS_CHERRYVIEW(dev_priv->dev)) if (IS_CHERRYVIEW(dev_priv->dev))
...@@ -5048,17 +5049,18 @@ static int valleyview_calc_cdclk(struct drm_i915_private *dev_priv, ...@@ -5048,17 +5049,18 @@ static int valleyview_calc_cdclk(struct drm_i915_private *dev_priv,
* 200MHz * 200MHz
* 267MHz * 267MHz
* 320/333MHz (depends on HPLL freq) * 320/333MHz (depends on HPLL freq)
* 400MHz * 400MHz (VLV only)
* So we check to see whether we're above 90% of the lower bin and * So we check to see whether we're above 90% (VLV) or 95% (CHV)
* adjust if needed. * of the lower bin and adjust if needed.
* *
* We seem to get an unstable or solid color picture at 200MHz. * We seem to get an unstable or solid color picture at 200MHz.
* Not sure what's wrong. For now use 200MHz only when all pipes * Not sure what's wrong. For now use 200MHz only when all pipes
* are off. * are off.
*/ */
if (max_pixclk > freq_320*9/10) if (!IS_CHERRYVIEW(dev_priv) &&
max_pixclk > freq_320*limit/100)
return 400000; return 400000;
else if (max_pixclk > 266667*9/10) else if (max_pixclk > 266667*limit/100)
return freq_320; return freq_320;
else if (max_pixclk > 0) else if (max_pixclk > 0)
return 266667; return 266667;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册