Disable CRTCs and Outputs on EnterVT?
Keith Packard
keithp at keithp.com
Tue May 1 22:33:45 PDT 2007
Dave Airlie was poking at one of his weird gambling devices and
discovered that the intel driver wasn't setting modes quite right -- the
VGA output was getting scrambled at server startup time. Turns out the
problem was that a rogue SDVO output was hooked up to the CRTC that the
VGA output wanted to use; leaving that enabled while hooking up the VGA
really broke things badly.
As a simple fix, he turned off all of the outputs before setting any
modes from EnterVT and it fixed the problem nicely. He pushed a patch to
the intel driver that does this, but I'm thinking we want to do this up
in the generic X server code and turn off the CRTCs as well.
I'm wondering how many other random weird modesetting problems this
might help with. Here's a patch I'm thinking of applying; if you've got
modesetting pain, please give it a try and report back.
-keith
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: hw/xfree86/modes/xf86Crtc.c
#
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 00ec56c..88c31af 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1723,8 +1723,26 @@ Bool
xf86SetDesiredModes (ScrnInfoPtr scrn)
{
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int c;
+ int c, o;
+
+ /*
+ * Turn off everything so mode setting is done
+ * with hardware in a consistent state
+ */
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ (*output->funcs->dpms)(output, DPMSModeOff);
+ }
+
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = config->crtc[c];
+ crtc->funcs->dpms(crtc, DPMSModeOff);
+ memset(&crtc->mode, 0, sizeof(crtc->mode));
+ }
+
for (c = 0; c < config->num_crtc; c++)
{
xf86CrtcPtr crtc = config->crtc[c];
--
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg/attachments/20070501/c1becf18/attachment.pgp>
More information about the xorg
mailing list