summaryrefslogtreecommitdiff
path: root/src/radeon_output.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-03-20 13:44:00 -0400
committerAlex Deucher <alexdeucher@gmail.com>2009-03-20 13:44:00 -0400
commit1ddee7cd6fd267b2fc86f21af27c5425eb0835a4 (patch)
tree61c04eb2e8e5eb95d32eee8217ed11d7926884cd /src/radeon_output.c
parent44081e8fd2bf974272d5447b45dd7b206cf939c1 (diff)
DCE3.2: use RMX for for non-native modes on DVI
DVI seems to have issues with low dotclocks, so use the scaler instead. Fixes bug 20754
Diffstat (limited to 'src/radeon_output.c')
-rw-r--r--src/radeon_output.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 3931db46..7f68f64c 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1263,10 +1263,21 @@ radeon_create_resources(xf86OutputPtr output)
"RRConfigureOutputProperty error, %d\n", err);
}
/* Set the current value of the property */
- if (radeon_output->devices & (ATOM_DEVICE_LCD_SUPPORT))
- s = "full";
- else
+ switch (radeon_output->rmx_type) {
+ case RMX_OFF:
+ default:
s = "off";
+ break;
+ case RMX_FULL:
+ s = "full";
+ break;
+ case RMX_CENTER:
+ s = "center";
+ break;
+ case RMX_ASPECT:
+ s = "aspect";
+ break;
+ }
err = RRChangeOutputProperty(output->randr_output, rmx_atom,
XA_STRING, 8, PropModeReplace, strlen(s), (pointer)s,
FALSE, FALSE);
@@ -1884,6 +1895,10 @@ void RADEONInitConnector(xf86OutputPtr output)
else
radeon_output->rmx_type = RMX_OFF;
+ /* dce 3.2 chips have problems with low dot clocks, so use the scaler */
+ if (IS_DCE32_VARIANT && (radeon_output->devices & (ATOM_DEVICE_DFP_SUPPORT)))
+ radeon_output->rmx_type = RMX_FULL;
+
if (!IS_AVIVO_VARIANT) {
if (radeon_output->devices & (ATOM_DEVICE_CRT2_SUPPORT)) {
if (xf86ReturnOptValBool(info->Options, OPTION_TVDAC_LOAD_DETECT, FALSE))