Would you please try the following patch to see if the problem is fixed?
Thanks, Hong
diff --git a/src/i830_crt.c b/src/i830_crt.c index d7762a0..7def610 100644 --- a/src/i830_crt.c +++ b/src/i830_crt.c @@ -162,9 +162,12 @@ i830_crt_detect_hotplug(xf86OutputPtr output) const int timeout_ms = 1000; int starttime, curtime;
- temp = INREG(PORT_HOTPLUG_EN); + /* clear the CRT hotplug status bits first */ + OUTREG(PORT_HOTPLUG_STAT, CRT_HOTPLUG_MONITOR_MASK);
- OUTREG(PORT_HOTPLUG_EN, temp | CRT_HOTPLUG_FORCE_DETECT | (1 << 5)); + temp = INREG(PORT_HOTPLUG_EN); + OUTREG(PORT_HOTPLUG_EN, + temp | CRT_HOTPLUG_FORCE_DETECT | (1 << 5) | CRT_HOTPLUG_INT_EN);
for (curtime = starttime = GetTimeInMillis(); (curtime - starttime) < timeout_ms; curtime = GetTimeInMillis())
Would you please try the following patch to see if the problem is fixed?
Thanks,
Hong
diff --git a/src/i830_crt.c b/src/i830_crt.c detect_ hotplug( xf86OutputPtr output)
index d7762a0..7def610 100644
--- a/src/i830_crt.c
+++ b/src/i830_crt.c
@@ -162,9 +162,12 @@ i830_crt_
const int timeout_ms = 1000;
int starttime, curtime;
- temp = INREG(PORT_ HOTPLUG_ EN); PORT_HOTPLUG_ STAT, CRT_HOTPLUG_ MONITOR_ MASK);
+ /* clear the CRT hotplug status bits first */
+ OUTREG(
- OUTREG( PORT_HOTPLUG_ EN, temp | CRT_HOTPLUG_ FORCE_DETECT | (1 << 5)); HOTPLUG_ EN); PORT_HOTPLUG_ EN, FORCE_DETECT | (1 << 5) | CRT_HOTPLUG_ INT_EN) ;
+ temp = INREG(PORT_
+ OUTREG(
+ temp | CRT_HOTPLUG_
for (curtime = starttime = GetTimeInMillis();
(curtime - starttime) < timeout_ms; curtime = GetTimeInMillis())