+26
-1
drivers/gpu/drm/i915/intel_display.c
+26
-1
drivers/gpu/drm/i915/intel_display.c
···
2087
2087
static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
2088
2088
enum plane plane, enum pipe pipe)
2089
2089
{
2090
+
struct drm_device *dev = dev_priv->dev;
2090
2091
struct intel_crtc *intel_crtc =
2091
2092
to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
2092
2093
int reg;
···
2107
2106
2108
2107
I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE);
2109
2108
intel_flush_primary_plane(dev_priv, plane);
2109
+
2110
+
/*
2111
+
* BDW signals flip done immediately if the plane
2112
+
* is disabled, even if the plane enable is already
2113
+
* armed to occur at the next vblank :(
2114
+
*/
2115
+
if (IS_BROADWELL(dev))
2116
+
intel_wait_for_vblank(dev, intel_crtc->pipe);
2110
2117
}
2111
2118
2112
2119
/**
···
11097
11088
return names[output];
11098
11089
}
11099
11090
11091
+
static bool intel_crt_present(struct drm_device *dev)
11092
+
{
11093
+
struct drm_i915_private *dev_priv = dev->dev_private;
11094
+
11095
+
if (IS_ULT(dev))
11096
+
return false;
11097
+
11098
+
if (IS_CHERRYVIEW(dev))
11099
+
return false;
11100
+
11101
+
if (IS_VALLEYVIEW(dev) && !dev_priv->vbt.int_crt_support)
11102
+
return false;
11103
+
11104
+
return true;
11105
+
}
11106
+
11100
11107
static void intel_setup_outputs(struct drm_device *dev)
11101
11108
{
11102
11109
struct drm_i915_private *dev_priv = dev->dev_private;
···
11121
11096
11122
11097
intel_lvds_init(dev);
11123
11098
11124
-
if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
11099
+
if (intel_crt_present(dev))
11125
11100
intel_crt_init(dev);
11126
11101
11127
11102
if (HAS_DDI(dev)) {
+8
drivers/gpu/drm/i915/intel_pm.c
+8
drivers/gpu/drm/i915/intel_pm.c
···
3209
3209
*/
3210
3210
static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
3211
3211
{
3212
+
struct drm_device *dev = dev_priv->dev;
3213
+
3214
+
/* Latest VLV doesn't need to force the gfx clock */
3215
+
if (dev->pdev->revision >= 0xd) {
3216
+
valleyview_set_rps(dev_priv->dev, dev_priv->rps.min_freq_softlimit);
3217
+
return;
3218
+
}
3219
+
3212
3220
/*
3213
3221
* When we are idle. Drop to min voltage state.
3214
3222
*/
+8
drivers/gpu/drm/i915/intel_sprite.c
+8
drivers/gpu/drm/i915/intel_sprite.c
···
691
691
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
692
692
693
693
/*
694
+
* BDW signals flip done immediately if the plane
695
+
* is disabled, even if the plane enable is already
696
+
* armed to occur at the next vblank :(
697
+
*/
698
+
if (IS_BROADWELL(dev))
699
+
intel_wait_for_vblank(dev, intel_crtc->pipe);
700
+
701
+
/*
694
702
* FIXME IPS should be fine as long as one plane is
695
703
* enabled, but in practice it seems to have problems
696
704
* when going from primary only to sprite only and vice