diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-03-04 11:17:16 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-03-04 11:17:16 -0500 |
commit | b1fd883b59b85fed8782e035890098908902f4ce (patch) | |
tree | 0e66e3fb577af3caa9563b4d649a94106965916f /src/radeon_driver.c | |
parent | 592bcac52f113a95923a8f1cb8427e7552d5670b (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.c | 18 |
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); |