提交 2377b741 编写于 作者: J Jesse Barnes 提交者: Eric Anholt

drm/i915: fix FDI frequency check

Since mode->clock is in kHz we should be checking against 2700000
instead of just 27000.  This patch gets my x201s working again (well
working as well as it ever was anyway).

When looking for this I also noticed we set link_bw to 270000, but the
calculation is different.  Does it also need to use kHz or we using
10kHz internally?
Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: NEric Anholt <eric@anholt.net>
上级 3ca87e82
...@@ -323,6 +323,9 @@ struct intel_limit { ...@@ -323,6 +323,9 @@ struct intel_limit {
#define IRONLAKE_DP_P1_MIN 1 #define IRONLAKE_DP_P1_MIN 1
#define IRONLAKE_DP_P1_MAX 2 #define IRONLAKE_DP_P1_MAX 2
/* FDI */
#define IRONLAKE_FDI_FREQ 2700000 /* in kHz for mode->clock */
static bool static bool
intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
int target, int refclk, intel_clock_t *best_clock); int target, int refclk, intel_clock_t *best_clock);
...@@ -2421,8 +2424,8 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc, ...@@ -2421,8 +2424,8 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
if (HAS_PCH_SPLIT(dev)) { if (HAS_PCH_SPLIT(dev)) {
/* FDI link clock is fixed at 2.7G */ /* FDI link clock is fixed at 2.7G */
if (mode->clock * 3 > 27000 * 4) if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4)
return MODE_CLOCK_HIGH; return false;
} }
drm_mode_set_crtcinfo(adjusted_mode, 0); drm_mode_set_crtcinfo(adjusted_mode, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册