diff options
| author | Dave Airlie <airlied@redhat.com> | 2013-10-29 22:30:12 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2013-10-29 22:30:12 -0400 |
| commit | 2f2632ff6e9d2b43dee6d13931c0f1894d2fed98 (patch) | |
| tree | 9a7a6058170414fd26f8c510c9447fa7afbaba7d | |
| parent | 7314e613d5ff9f0934f7a0f74ed7973b903315d1 (diff) | |
| parent | 1fbc0d789d12fec313c91912fc11733fdfbab863 (diff) | |
Merge tag 'drm-intel-fixes-2013-10-29' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
Regression and warn fixes for i915.
* tag 'drm-intel-fixes-2013-10-29' of git://people.freedesktop.org/~danvet/drm-intel:
drm/i915: Fix the PPT fdi lane bifurcate state handling on ivb
drm/i915: No LVDS hardware on Intel D410PT and D425KT
drm/i915/dp: workaround BIOS eDP bpp clamping issue
drm/i915: Add HSW CRT output readout support
drm/i915: Add support for pipe_bpp readout
| -rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 30 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 21 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 131 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 20 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 16 |
6 files changed, 167 insertions, 53 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index ea9022ef15d5..db59bb9fbe23 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
| @@ -83,8 +83,7 @@ static bool intel_crt_get_hw_state(struct intel_encoder *encoder, | |||
| 83 | return true; | 83 | return true; |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | static void intel_crt_get_config(struct intel_encoder *encoder, | 86 | static unsigned int intel_crt_get_flags(struct intel_encoder *encoder) |
| 87 | struct intel_crtc_config *pipe_config) | ||
| 88 | { | 87 | { |
| 89 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 88 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
| 90 | struct intel_crt *crt = intel_encoder_to_crt(encoder); | 89 | struct intel_crt *crt = intel_encoder_to_crt(encoder); |
| @@ -102,7 +101,27 @@ static void intel_crt_get_config(struct intel_encoder *encoder, | |||
| 102 | else | 101 | else |
| 103 | flags |= DRM_MODE_FLAG_NVSYNC; | 102 | flags |= DRM_MODE_FLAG_NVSYNC; |
| 104 | 103 | ||
| 105 | pipe_config->adjusted_mode.flags |= flags; | 104 | return flags; |
| 105 | } | ||
| 106 | |||
| 107 | static void intel_crt_get_config(struct intel_encoder *encoder, | ||
| 108 | struct intel_crtc_config *pipe_config) | ||
| 109 | { | ||
| 110 | struct drm_device *dev = encoder->base.dev; | ||
| 111 | |||
| 112 | pipe_config->adjusted_mode.flags |= intel_crt_get_flags(encoder); | ||
| 113 | } | ||
| 114 | |||
| 115 | static void hsw_crt_get_config(struct intel_encoder *encoder, | ||
| 116 | struct intel_crtc_config *pipe_config) | ||
| 117 | { | ||
| 118 | intel_ddi_get_config(encoder, pipe_config); | ||
| 119 | |||
| 120 | pipe_config->adjusted_mode.flags &= ~(DRM_MODE_FLAG_PHSYNC | | ||
| 121 | DRM_MODE_FLAG_NHSYNC | | ||
| 122 | DRM_MODE_FLAG_PVSYNC | | ||
| 123 | DRM_MODE_FLAG_NVSYNC); | ||
| 124 | pipe_config->adjusted_mode.flags |= intel_crt_get_flags(encoder); | ||
| 106 | } | 125 | } |
| 107 | 126 | ||
| 108 | /* Note: The caller is required to filter out dpms modes not supported by the | 127 | /* Note: The caller is required to filter out dpms modes not supported by the |
| @@ -799,7 +818,10 @@ void intel_crt_init(struct drm_device *dev) | |||
| 799 | crt->base.mode_set = intel_crt_mode_set; | 818 | crt->base.mode_set = intel_crt_mode_set; |
| 800 | crt->base.disable = intel_disable_crt; | 819 | crt->base.disable = intel_disable_crt; |
| 801 | crt->base.enable = intel_enable_crt; | 820 | crt->base.enable = intel_enable_crt; |
| 802 | crt->base.get_config = intel_crt_get_config; | 821 | if (IS_HASWELL(dev)) |
| 822 | crt->base.get_config = hsw_crt_get_config; | ||
| 823 | else | ||
| 824 | crt->base.get_config = intel_crt_get_config; | ||
| 803 | if (I915_HAS_HOTPLUG(dev)) | 825 | if (I915_HAS_HOTPLUG(dev)) |
| 804 | crt->base.hpd_pin = HPD_CRT; | 826 | crt->base.hpd_pin = HPD_CRT; |
| 805 | if (HAS_DDI(dev)) | 827 | if (HAS_DDI(dev)) |
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 63de2701b974..b53fff84a7d5 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
| @@ -1249,8 +1249,8 @@ static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder) | |||
| 1249 | intel_dp_check_link_status(intel_dp); | 1249 | intel_dp_check_link_status(intel_dp); |
| 1250 | } | 1250 | } |
| 1251 | 1251 | ||
| 1252 | static void intel_ddi_get_config(struct intel_encoder *encoder, | 1252 | void intel_ddi_get_config(struct intel_encoder *encoder, |
| 1253 | struct intel_crtc_config *pipe_config) | 1253 | struct intel_crtc_config *pipe_config) |
| 1254 | { | 1254 | { |
| 1255 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 1255 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
| 1256 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); | 1256 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); |
| @@ -1268,6 +1268,23 @@ static void intel_ddi_get_config(struct intel_encoder *encoder, | |||
| 1268 | flags |= DRM_MODE_FLAG_NVSYNC; | 1268 | flags |= DRM_MODE_FLAG_NVSYNC; |
| 1269 | 1269 | ||
| 1270 | pipe_config->adjusted_mode.flags |= flags; | 1270 | pipe_config->adjusted_mode.flags |= flags; |
| 1271 | |||
| 1272 | switch (temp & TRANS_DDI_BPC_MASK) { | ||
| 1273 | case TRANS_DDI_BPC_6: | ||
| 1274 | pipe_config->pipe_bpp = 18; | ||
| 1275 | break; | ||
| 1276 | case TRANS_DDI_BPC_8: | ||
| 1277 | pipe_config->pipe_bpp = 24; | ||
| 1278 | break; | ||
| 1279 | case TRANS_DDI_BPC_10: | ||
| 1280 | pipe_config->pipe_bpp = 30; | ||
| 1281 | break; | ||
| 1282 | case TRANS_DDI_BPC_12: | ||
| 1283 | pipe_config->pipe_bpp = 36; | ||
| 1284 | break; | ||
| 1285 | default: | ||
| 1286 | break; | ||
| 1287 | } | ||
| 1271 | } | 1288 | } |
| 1272 | 1289 | ||
| 1273 | static void intel_ddi_destroy(struct drm_encoder *encoder) | 1290 | static void intel_ddi_destroy(struct drm_encoder *encoder) |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 581fb4b2f766..d78d33f9337d 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -2327,9 +2327,10 @@ static void intel_fdi_normal_train(struct drm_crtc *crtc) | |||
| 2327 | FDI_FE_ERRC_ENABLE); | 2327 | FDI_FE_ERRC_ENABLE); |
| 2328 | } | 2328 | } |
| 2329 | 2329 | ||
| 2330 | static bool pipe_has_enabled_pch(struct intel_crtc *intel_crtc) | 2330 | static bool pipe_has_enabled_pch(struct intel_crtc *crtc) |
| 2331 | { | 2331 | { |
| 2332 | return intel_crtc->base.enabled && intel_crtc->config.has_pch_encoder; | 2332 | return crtc->base.enabled && crtc->active && |
| 2333 | crtc->config.has_pch_encoder; | ||
| 2333 | } | 2334 | } |
| 2334 | 2335 | ||
| 2335 | static void ivb_modeset_global_resources(struct drm_device *dev) | 2336 | static void ivb_modeset_global_resources(struct drm_device *dev) |
| @@ -2979,6 +2980,48 @@ static void ironlake_pch_transcoder_set_timings(struct intel_crtc *crtc, | |||
| 2979 | I915_READ(VSYNCSHIFT(cpu_transcoder))); | 2980 | I915_READ(VSYNCSHIFT(cpu_transcoder))); |
| 2980 | } | 2981 | } |
| 2981 | 2982 | ||
| 2983 | static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev) | ||
| 2984 | { | ||
| 2985 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 2986 | uint32_t temp; | ||
| 2987 | |||
| 2988 | temp = I915_READ(SOUTH_CHICKEN1); | ||
| 2989 | if (temp & FDI_BC_BIFURCATION_SELECT) | ||
| 2990 | return; | ||
| 2991 | |||
| 2992 | WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); | ||
| 2993 | WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); | ||
| 2994 | |||
| 2995 | temp |= FDI_BC_BIFURCATION_SELECT; | ||
| 2996 | DRM_DEBUG_KMS("enabling fdi C rx\n"); | ||
| 2997 | I915_WRITE(SOUTH_CHICKEN1, temp); | ||
| 2998 | POSTING_READ(SOUTH_CHICKEN1); | ||
| 2999 | } | ||
| 3000 | |||
| 3001 | static void ivybridge_update_fdi_bc_bifurcation(struct intel_crtc *intel_crtc) | ||
| 3002 | { | ||
| 3003 | struct drm_device *dev = intel_crtc->base.dev; | ||
| 3004 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 3005 | |||
| 3006 | switch (intel_crtc->pipe) { | ||
| 3007 | case PIPE_A: | ||
| 3008 | break; | ||
| 3009 | case PIPE_B: | ||
| 3010 | if (intel_crtc->config.fdi_lanes > 2) | ||
| 3011 | WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT); | ||
| 3012 | else | ||
| 3013 | cpt_enable_fdi_bc_bifurcation(dev); | ||
| 3014 | |||
| 3015 | break; | ||
| 3016 | case PIPE_C: | ||
| 3017 | cpt_enable_fdi_bc_bifurcation(dev); | ||
| 3018 | |||
| 3019 | break; | ||
| 3020 | default: | ||
| 3021 | BUG(); | ||
| 3022 | } | ||
| 3023 | } | ||
| 3024 | |||
| 2982 | /* | 3025 | /* |
| 2983 | * Enable PCH resources required for PCH ports: | 3026 | * Enable PCH resources required for PCH ports: |
| 2984 | * - PCH PLLs | 3027 | * - PCH PLLs |
| @@ -2997,6 +3040,9 @@ static void ironlake_pch_enable(struct drm_crtc *crtc) | |||
| 2997 | 3040 | ||
| 2998 | assert_pch_transcoder_disabled(dev_priv, pipe); | 3041 | assert_pch_transcoder_disabled(dev_priv, pipe); |
| 2999 | 3042 | ||
| 3043 | if (IS_IVYBRIDGE(dev)) | ||
| 3044 | ivybridge_update_fdi_bc_bifurcation(intel_crtc); | ||
| 3045 | |||
| 3000 | /* Write the TU size bits before fdi link training, so that error | 3046 | /* Write the TU size bits before fdi link training, so that error |
| 3001 | * detection works. */ | 3047 | * detection works. */ |
| 3002 | I915_WRITE(FDI_RX_TUSIZE1(pipe), | 3048 | I915_WRITE(FDI_RX_TUSIZE1(pipe), |
| @@ -4983,6 +5029,22 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc, | |||
| 4983 | if (!(tmp & PIPECONF_ENABLE)) | 5029 | if (!(tmp & PIPECONF_ENABLE)) |
| 4984 | return false; | 5030 | return false; |
| 4985 | 5031 | ||
| 5032 | if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) { | ||
| 5033 | switch (tmp & PIPECONF_BPC_MASK) { | ||
| 5034 | case PIPECONF_6BPC: | ||
| 5035 | pipe_config->pipe_bpp = 18; | ||
| 5036 | break; | ||
| 5037 | case PIPECONF_8BPC: | ||
| 5038 | pipe_config->pipe_bpp = 24; | ||
| 5039 | break; | ||
| 5040 | case PIPECONF_10BPC: | ||
| 5041 | pipe_config->pipe_bpp = 30; | ||
| 5042 | break; | ||
| 5043 | default: | ||
| 5044 | break; | ||
| 5045 | } | ||
| 5046 | } | ||
| 5047 | |||
| 4986 | intel_get_pipe_timings(crtc, pipe_config); | 5048 | intel_get_pipe_timings(crtc, pipe_config); |
| 4987 | 5049 | ||
| 4988 | i9xx_get_pfit_config(crtc, pipe_config); | 5050 | i9xx_get_pfit_config(crtc, pipe_config); |
| @@ -5576,48 +5638,6 @@ static bool ironlake_compute_clocks(struct drm_crtc *crtc, | |||
| 5576 | return true; | 5638 | return true; |
| 5577 | } | 5639 | } |
| 5578 | 5640 | ||
| 5579 | static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev) | ||
| 5580 | { | ||
| 5581 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 5582 | uint32_t temp; | ||
| 5583 | |||
| 5584 | temp = I915_READ(SOUTH_CHICKEN1); | ||
| 5585 | if (temp & FDI_BC_BIFURCATION_SELECT) | ||
| 5586 | return; | ||
| 5587 | |||
| 5588 | WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); | ||
| 5589 | WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); | ||
| 5590 | |||
| 5591 | temp |= FDI_BC_BIFURCATION_SELECT; | ||
| 5592 | DRM_DEBUG_KMS("enabling fdi C rx\n"); | ||
| 5593 | I915_WRITE(SOUTH_CHICKEN1, temp); | ||
| 5594 | POSTING_READ(SOUTH_CHICKEN1); | ||
| 5595 | } | ||
| 5596 | |||
| 5597 | static void ivybridge_update_fdi_bc_bifurcation(struct intel_crtc *intel_crtc) | ||
| 5598 | { | ||
| 5599 | struct drm_device *dev = intel_crtc->base.dev; | ||
| 5600 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 5601 | |||
| 5602 | switch (intel_crtc->pipe) { | ||
| 5603 | case PIPE_A: | ||
| 5604 | break; | ||
| 5605 | case PIPE_B: | ||
| 5606 | if (intel_crtc->config.fdi_lanes > 2) | ||
| 5607 | WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT); | ||
| 5608 | else | ||
| 5609 | cpt_enable_fdi_bc_bifurcation(dev); | ||
| 5610 | |||
| 5611 | break; | ||
| 5612 | case PIPE_C: | ||
| 5613 | cpt_enable_fdi_bc_bifurcation(dev); | ||
| 5614 | |||
| 5615 | break; | ||
| 5616 | default: | ||
| 5617 | BUG(); | ||
| 5618 | } | ||
| 5619 | } | ||
| 5620 | |||
| 5621 | int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp) | 5641 | int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp) |
| 5622 | { | 5642 | { |
| 5623 | /* | 5643 | /* |
| @@ -5811,9 +5831,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc, | |||
| 5811 | &intel_crtc->config.fdi_m_n); | 5831 | &intel_crtc->config.fdi_m_n); |
| 5812 | } | 5832 | } |
| 5813 | 5833 | ||
| 5814 | if (IS_IVYBRIDGE(dev)) | ||
| 5815 | ivybridge_update_fdi_bc_bifurcation(intel_crtc); | ||
| 5816 | |||
| 5817 | ironlake_set_pipeconf(crtc); | 5834 | ironlake_set_pipeconf(crtc); |
| 5818 | 5835 | ||
| 5819 | /* Set up the display plane register */ | 5836 | /* Set up the display plane register */ |
| @@ -5881,6 +5898,23 @@ static bool ironlake_get_pipe_config(struct intel_crtc *crtc, | |||
| 5881 | if (!(tmp & PIPECONF_ENABLE)) | 5898 | if (!(tmp & PIPECONF_ENABLE)) |
| 5882 | return false; | 5899 | return false; |
| 5883 | 5900 | ||
| 5901 | switch (tmp & PIPECONF_BPC_MASK) { | ||
| 5902 | case PIPECONF_6BPC: | ||
| 5903 | pipe_config->pipe_bpp = 18; | ||
| 5904 | break; | ||
| 5905 | case PIPECONF_8BPC: | ||
| 5906 | pipe_config->pipe_bpp = 24; | ||
| 5907 | break; | ||
| 5908 | case PIPECONF_10BPC: | ||
| 5909 | pipe_config->pipe_bpp = 30; | ||
| 5910 | break; | ||
| 5911 | case PIPECONF_12BPC: | ||
| 5912 | pipe_config->pipe_bpp = 36; | ||
| 5913 | break; | ||
| 5914 | default: | ||
| 5915 | break; | ||
| 5916 | } | ||
| 5917 | |||
| 5884 | if (I915_READ(PCH_TRANSCONF(crtc->pipe)) & TRANS_ENABLE) { | 5918 | if (I915_READ(PCH_TRANSCONF(crtc->pipe)) & TRANS_ENABLE) { |
| 5885 | struct intel_shared_dpll *pll; | 5919 | struct intel_shared_dpll *pll; |
| 5886 | 5920 | ||
| @@ -8612,6 +8646,9 @@ intel_pipe_config_compare(struct drm_device *dev, | |||
| 8612 | PIPE_CONF_CHECK_X(dpll_hw_state.fp0); | 8646 | PIPE_CONF_CHECK_X(dpll_hw_state.fp0); |
| 8613 | PIPE_CONF_CHECK_X(dpll_hw_state.fp1); | 8647 | PIPE_CONF_CHECK_X(dpll_hw_state.fp1); |
| 8614 | 8648 | ||
| 8649 | if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5) | ||
| 8650 | PIPE_CONF_CHECK_I(pipe_bpp); | ||
| 8651 | |||
| 8615 | #undef PIPE_CONF_CHECK_X | 8652 | #undef PIPE_CONF_CHECK_X |
| 8616 | #undef PIPE_CONF_CHECK_I | 8653 | #undef PIPE_CONF_CHECK_I |
| 8617 | #undef PIPE_CONF_CHECK_FLAGS | 8654 | #undef PIPE_CONF_CHECK_FLAGS |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 2c555f91bfae..1a431377d83b 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -1401,6 +1401,26 @@ static void intel_dp_get_config(struct intel_encoder *encoder, | |||
| 1401 | else | 1401 | else |
| 1402 | pipe_config->port_clock = 270000; | 1402 | pipe_config->port_clock = 270000; |
| 1403 | } | 1403 | } |
| 1404 | |||
| 1405 | if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp && | ||
| 1406 | pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) { | ||
| 1407 | /* | ||
| 1408 | * This is a big fat ugly hack. | ||
| 1409 | * | ||
| 1410 | * Some machines in UEFI boot mode provide us a VBT that has 18 | ||
| 1411 | * bpp and 1.62 GHz link bandwidth for eDP, which for reasons | ||
| 1412 | * unknown we fail to light up. Yet the same BIOS boots up with | ||
| 1413 | * 24 bpp and 2.7 GHz link. Use the same bpp as the BIOS uses as | ||
| 1414 | * max, not what it tells us to use. | ||
| 1415 | * | ||
| 1416 | * Note: This will still be broken if the eDP panel is not lit | ||
| 1417 | * up by the BIOS, and thus we can't get the mode at module | ||
| 1418 | * load. | ||
| 1419 | */ | ||
| 1420 | DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n", | ||
| 1421 | pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp); | ||
| 1422 | dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp; | ||
| 1423 | } | ||
| 1404 | } | 1424 | } |
| 1405 | 1425 | ||
| 1406 | static bool is_edp_psr(struct intel_dp *intel_dp) | 1426 | static bool is_edp_psr(struct intel_dp *intel_dp) |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 9b7b68fd5d47..7f2b384ac939 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
| @@ -765,6 +765,8 @@ extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); | |||
| 765 | extern bool | 765 | extern bool |
| 766 | intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); | 766 | intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); |
| 767 | extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); | 767 | extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); |
| 768 | extern void intel_ddi_get_config(struct intel_encoder *encoder, | ||
| 769 | struct intel_crtc_config *pipe_config); | ||
| 768 | 770 | ||
| 769 | extern void intel_display_handle_reset(struct drm_device *dev); | 771 | extern void intel_display_handle_reset(struct drm_device *dev); |
| 770 | extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev, | 772 | extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev, |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 831a5c021c4b..b8af94a5be39 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
| @@ -700,6 +700,22 @@ static const struct dmi_system_id intel_no_lvds[] = { | |||
| 700 | }, | 700 | }, |
| 701 | { | 701 | { |
| 702 | .callback = intel_no_lvds_dmi_callback, | 702 | .callback = intel_no_lvds_dmi_callback, |
| 703 | .ident = "Intel D410PT", | ||
| 704 | .matches = { | ||
| 705 | DMI_MATCH(DMI_BOARD_VENDOR, "Intel"), | ||
| 706 | DMI_MATCH(DMI_BOARD_NAME, "D410PT"), | ||
| 707 | }, | ||
| 708 | }, | ||
| 709 | { | ||
| 710 | .callback = intel_no_lvds_dmi_callback, | ||
| 711 | .ident = "Intel D425KT", | ||
| 712 | .matches = { | ||
| 713 | DMI_MATCH(DMI_BOARD_VENDOR, "Intel"), | ||
| 714 | DMI_EXACT_MATCH(DMI_BOARD_NAME, "D425KT"), | ||
| 715 | }, | ||
| 716 | }, | ||
| 717 | { | ||
| 718 | .callback = intel_no_lvds_dmi_callback, | ||
| 703 | .ident = "Intel D510MO", | 719 | .ident = "Intel D510MO", |
| 704 | .matches = { | 720 | .matches = { |
| 705 | DMI_MATCH(DMI_BOARD_VENDOR, "Intel"), | 721 | DMI_MATCH(DMI_BOARD_VENDOR, "Intel"), |
