xf86-video-intel: src/i830_sdvo.c src/i830_sdvo_regs.h
Alan Hourihane
alanh at kemper.freedesktop.org
Tue Apr 17 18:30:18 EEST 2007
src/i830_sdvo.c | 13 ++++++++++---
src/i830_sdvo_regs.h | 6 +++++-
2 files changed, 15 insertions(+), 4 deletions(-)
New commits:
diff-tree ac9181c014638dbeb334b40b4029d0ccb2b7a0fc (from ab5bdee8a62c842ae32aaef57eb841ebcb644d2b)
Author: Alan Hourihane <alanh at fairlite.demon.co.uk>
Date: Tue Apr 17 16:30:17 2007 +0100
Check for the PENDING message when reading the attached
displays. Ensures the command has completed before continuing.
(probably need to check PENDING in other SDVO calls too)
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index f0723a9..cf72848 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -1074,12 +1074,19 @@ i830_sdvo_detect(xf86OutputPtr output)
{
CARD8 response[2];
CARD8 status;
+ CARD8 retry = 50;
i830_sdvo_write_cmd(output, SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0);
- status = i830_sdvo_read_response(output, &response, 2);
- if (status != SDVO_CMD_STATUS_SUCCESS)
- return XF86OutputStatusUnknown;
+ while (retry--) {
+ status = i830_sdvo_read_response(output, &response, 2);
+
+ if (status == SDVO_CMD_STATUS_SUCCESS)
+ break;
+
+ if (status != SDVO_CMD_STATUS_PENDING)
+ return XF86OutputStatusUnknown;
+ }
if (response[0] != 0 || response[1] != 0)
return XF86OutputStatusConnected;
diff --git a/src/i830_sdvo_regs.h b/src/i830_sdvo_regs.h
index 437ff50..72e58a0 100644
--- a/src/i830_sdvo_regs.h
+++ b/src/i830_sdvo_regs.h
@@ -38,7 +38,11 @@
#define SDVO_OUTPUT_SCART0 (1 << 5)
#define SDVO_OUTPUT_LVDS0 (1 << 6)
#define SDVO_OUTPUT_TMDS1 (1 << 8)
-#define SDVO_OUTPUT_RGB1 (1 << 13)
+#define SDVO_OUTPUT_RGB1 (1 << 9)
+#define SDVO_OUTPUT_CVBS1 (1 << 10)
+#define SDVO_OUTPUT_SVID1 (1 << 11)
+#define SDVO_OUTPUT_YPRPB1 (1 << 12)
+#define SDVO_OUTPUT_SCART1 (1 << 13)
#define SDVO_OUTPUT_LVDS1 (1 << 14)
#define SDVO_OUTPUT_LAST (14)
More information about the xorg-commit
mailing list