diff --git a/src/intel.h b/src/intel.h index caf07bb0..1555acd0 100644 --- a/src/intel.h +++ b/src/intel.h @@ -362,6 +362,7 @@ enum { extern Bool intel_mode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp); extern void intel_mode_init(struct intel_screen_private *intel); +extern void intel_mode_disable_unused_functions(ScrnInfoPtr scrn); extern void intel_mode_remove_fb(intel_screen_private *intel); extern void intel_mode_fini(intel_screen_private *intel); diff --git a/src/intel_display.c b/src/intel_display.c index 8de63449..949a822c 100644 --- a/src/intel_display.c +++ b/src/intel_display.c @@ -332,9 +332,24 @@ mode_to_kmode(ScrnInfoPtr scrn, } static void -intel_crtc_dpms(xf86CrtcPtr intel_crtc, int mode) +intel_crtc_dpms(xf86CrtcPtr crtc, int mode) { +} +void +intel_mode_disable_unused_functions(ScrnInfoPtr scrn) +{ + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); + struct intel_mode *mode = intel_get_screen_private(scrn)->modes; + int i; + + /* Force off for consistency between kernel and ddx */ + for (i = 0; i < xf86_config->num_crtc; i++) { + xf86CrtcPtr crtc = xf86_config->crtc[i]; + if (!crtc->enabled) + drmModeSetCrtc(mode->fd, crtc_id(crtc->driver_private), + 0, 0, 0, NULL, 0, NULL); + } } static Bool diff --git a/src/intel_driver.c b/src/intel_driver.c index 8962a112..3a9fe6f2 100644 --- a/src/intel_driver.c +++ b/src/intel_driver.c @@ -1068,6 +1068,7 @@ static Bool I830EnterVT(VT_FUNC_ARGS_DECL) if (!xf86SetDesiredModes(scrn)) return FALSE; + intel_mode_disable_unused_functions(scrn); return TRUE; }