forked from luck/tmp_suning_uos_patched
drm/i915: disable all crtcs at suspend time
We need this to avoid confusing the hw state readout code with the cpt pch plls at resume time: We'd read the new pipe state (which is disabled), but still believe that we have a life pll connected to that pipe (from before the suspend). Hence properly disable pipes to clear out all the residual state. This has the neat side-effect that we don't enable ports prematurely by restoring bogus state from the saved register values. Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
ea9d758d6d
commit
a261b246eb
@ -470,6 +470,9 @@ static int i915_drm_freeze(struct drm_device *dev)
|
|||||||
"GEM idle failed, resume might fail\n");
|
"GEM idle failed, resume might fail\n");
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
intel_modeset_disable(dev);
|
||||||
|
|
||||||
drm_irq_uninstall(dev);
|
drm_irq_uninstall(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3545,6 +3545,16 @@ static void intel_crtc_disable(struct drm_crtc *crtc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void intel_modeset_disable(struct drm_device *dev)
|
||||||
|
{
|
||||||
|
struct drm_crtc *crtc;
|
||||||
|
|
||||||
|
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
||||||
|
if (crtc->enabled)
|
||||||
|
intel_crtc_disable(crtc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void intel_encoder_noop(struct drm_encoder *encoder)
|
void intel_encoder_noop(struct drm_encoder *encoder)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -446,6 +446,7 @@ struct intel_set_config {
|
|||||||
|
|
||||||
extern bool intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode,
|
extern bool intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode,
|
||||||
int x, int y, struct drm_framebuffer *old_fb);
|
int x, int y, struct drm_framebuffer *old_fb);
|
||||||
|
extern void intel_modeset_disable(struct drm_device *dev);
|
||||||
extern void intel_crtc_load_lut(struct drm_crtc *crtc);
|
extern void intel_crtc_load_lut(struct drm_crtc *crtc);
|
||||||
extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
|
extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
|
||||||
extern void intel_encoder_noop(struct drm_encoder *encoder);
|
extern void intel_encoder_noop(struct drm_encoder *encoder);
|
||||||
|
Loading…
Reference in New Issue
Block a user