summaryrefslogtreecommitdiff
path: root/src/radeon_driver.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-03-04 11:17:16 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-03-04 11:17:16 -0500
commitb1fd883b59b85fed8782e035890098908902f4ce (patch)
tree0e66e3fb577af3caa9563b4d649a94106965916f /src/radeon_driver.c
parent592bcac52f113a95923a8f1cb8427e7552d5670b (diff)
RN50: fix up cloning on servers
Since the rn50 only has one crtc, but often has multiple outputs, occasionally one of the outputs doesn't get a crtc assigned eventhough the outputs may have common modes. If we see an output with modes, but no crtc, assign it so all the attached outputs light up. fixes bugs 19457 and similar ones
Diffstat (limited to 'src/radeon_driver.c')
-rw-r--r--src/radeon_driver.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 7cac321f..8a28f3f2 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -2964,6 +2964,24 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags)
goto fail;
}
+ /* fix up cloning on rn50 cards
+ * since they only have one crtc sometimes the xserver doesn't assign
+ * a crtc to one of the outputs even though both outputs have common modes
+ * which results in only one monitor being enabled. Assign a crtc here so
+ * that both outputs light up.
+ */
+ if (info->ChipFamily == CHIP_FAMILY_RV100 && !pRADEONEnt->HasCRTC2) {
+ int i;
+
+ for (i = 0; i < xf86_config->num_output; i++) {
+ xf86OutputPtr output = xf86_config->output[i];
+
+ /* XXX: double check crtc mode */
+ if ((output->probed_modes != NULL) && (output->crtc == NULL))
+ output->crtc = xf86_config->crtc[0];
+ }
+ }
+
ErrorF("after xf86InitialConfiguration\n");
RADEONSetPitch(pScrn);