diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index daaabe788f21..c1017431fa5b 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -430,7 +430,7 @@ | |||
430 | #define DPIO_MODSEL1 (1<<3) /* if ref clk b == 27 */ | 430 | #define DPIO_MODSEL1 (1<<3) /* if ref clk b == 27 */ |
431 | #define DPIO_MODSEL0 (1<<2) /* if ref clk a == 27 */ | 431 | #define DPIO_MODSEL0 (1<<2) /* if ref clk a == 27 */ |
432 | #define DPIO_SFR_BYPASS (1<<1) | 432 | #define DPIO_SFR_BYPASS (1<<1) |
433 | #define DPIO_RESET (1<<0) | 433 | #define DPIO_CMNRST (1<<0) |
434 | 434 | ||
435 | #define _DPIO_TX3_SWING_CTL4_A 0x690 | 435 | #define _DPIO_TX3_SWING_CTL4_A 0x690 |
436 | #define _DPIO_TX3_SWING_CTL4_B 0x2a90 | 436 | #define _DPIO_TX3_SWING_CTL4_B 0x2a90 |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 169d6825f9e5..214984c814e8 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -1360,6 +1360,26 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, | |||
1360 | assert_pch_hdmi_disabled(dev_priv, pipe, PCH_HDMID); | 1360 | assert_pch_hdmi_disabled(dev_priv, pipe, PCH_HDMID); |
1361 | } | 1361 | } |
1362 | 1362 | ||
1363 | static void intel_init_dpio(struct drm_device *dev) | ||
1364 | { | ||
1365 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1366 | |||
1367 | if (!IS_VALLEYVIEW(dev)) | ||
1368 | return; | ||
1369 | |||
1370 | /* | ||
1371 | * From VLV2A0_DP_eDP_DPIO_driver_vbios_notes_10.docx - | ||
1372 | * 6. De-assert cmn_reset/side_reset. Same as VLV X0. | ||
1373 | * a. GUnit 0x2110 bit[0] set to 1 (def 0) | ||
1374 | * b. The other bits such as sfr settings / modesel may all be set | ||
1375 | * to 0. | ||
1376 | * | ||
1377 | * This should only be done on init and resume from S3 with both | ||
1378 | * PLLs disabled, or we risk losing DPIO and PLL synchronization. | ||
1379 | */ | ||
1380 | I915_WRITE(DPIO_CTL, I915_READ(DPIO_CTL) | DPIO_CMNRST); | ||
1381 | } | ||
1382 | |||
1363 | static void vlv_enable_pll(struct intel_crtc *crtc) | 1383 | static void vlv_enable_pll(struct intel_crtc *crtc) |
1364 | { | 1384 | { |
1365 | struct drm_device *dev = crtc->base.dev; | 1385 | struct drm_device *dev = crtc->base.dev; |
@@ -10370,6 +10390,8 @@ void intel_modeset_init_hw(struct drm_device *dev) | |||
10370 | I915_WRITE(DPLL(PIPE_B), I915_READ(DPLL(PIPE_B)) | | 10390 | I915_WRITE(DPLL(PIPE_B), I915_READ(DPLL(PIPE_B)) | |
10371 | DPLL_INTEGRATED_CRI_CLK_VLV); | 10391 | DPLL_INTEGRATED_CRI_CLK_VLV); |
10372 | 10392 | ||
10393 | intel_init_dpio(dev); | ||
10394 | |||
10373 | mutex_lock(&dev->struct_mutex); | 10395 | mutex_lock(&dev->struct_mutex); |
10374 | intel_enable_gt_powersave(dev); | 10396 | intel_enable_gt_powersave(dev); |
10375 | mutex_unlock(&dev->struct_mutex); | 10397 | mutex_unlock(&dev->struct_mutex); |