summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-08-28 23:47:19 -0400
committerAlex Deucher <alex@botch2.(none)>2007-08-28 23:47:19 -0400
commit61c1fdaa8553581944f78a11e6f9aa76163a468a (patch)
treea451550f63b1240a77a227e730c536b19480d6ad
parent0d9087bc60bb95c770b899cfed29699c02bdac49 (diff)
RADEON: add option to force tmds pll to default table
Also rework the tmds pll output attribute handling a bit
-rw-r--r--src/radeon.h3
-rw-r--r--src/radeon_driver.c1
-rw-r--r--src/radeon_output.c18
-rw-r--r--src/radeon_probe.h7
4 files changed, 10 insertions, 19 deletions
diff --git a/src/radeon.h b/src/radeon.h
index fa2bccd..b7a69bd 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -152,7 +152,8 @@ typedef enum {
OPTION_CONSTANTDPI,
OPTION_CONNECTORTABLE,
OPTION_DRI,
- OPTION_DEFAULT_CONNECTOR_TABLE
+ OPTION_DEFAULT_CONNECTOR_TABLE,
+ OPTION_DEFAULT_TMDS_PLL
} RADEONOpts;
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 158e1e4..fc0f40b 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -187,6 +187,7 @@ static const OptionInfoRec RADEONOptions[] = {
{ OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_CONNECTORTABLE, "ConnectorTable", OPTV_STRING, {0}, FALSE },
{ OPTION_DEFAULT_CONNECTOR_TABLE, "DefaultConnectorTable", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_DEFAULT_TMDS_PLL, "DefaultTMDSPLL", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
diff --git a/src/radeon_output.c b/src/radeon_output.c
index c9b2ec7..168eab4 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1018,15 +1018,6 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode,
xf86CrtcPtr crtc = output->crtc;
RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
- if (radeon_output->type == OUTPUT_DVI &&
- radeon_output->TMDSType == TMDS_INT) {
- if (radeon_output->tmds_pll_table == TMDS_PLL_BIOS) {
- if (!RADEONGetTMDSInfoFromBIOS(output))
- RADEONGetTMDSInfoFromTable(output);
- } else
- RADEONGetTMDSInfoFromTable(output);
- }
-
RADEONInitOutputRegisters(pScrn, &info->ModeReg, adjusted_mode, output, radeon_crtc->crtc_id);
if (radeon_crtc->crtc_id == 0)
@@ -1672,6 +1663,10 @@ radeon_create_resources(xf86OutputPtr output)
#else
s = "bios";
#endif
+ if (xf86ReturnOptValBool(info->Options, OPTION_DEFAULT_TMDS_PLL, FALSE)) {
+ s = "driver";
+ }
+
err = RRChangeOutputProperty(output->randr_output, tmds_pll_atom,
XA_STRING, 8, PropModeReplace, strlen(s), (pointer)s,
FALSE, FALSE);
@@ -1900,10 +1895,11 @@ radeon_set_property(xf86OutputPtr output, Atom property,
return FALSE;
s = (char*)value->data;
if (value->size == strlen("bios") && !strncmp("bios", s, strlen("bios"))) {
- radeon_output->tmds_pll_table = TMDS_PLL_BIOS;
+ if (!RADEONGetTMDSInfoFromBIOS(output))
+ RADEONGetTMDSInfoFromTable(output);
return TRUE;
} else if (value->size == strlen("driver") && !strncmp("driver", s, strlen("driver"))) {
- radeon_output->tmds_pll_table = TMDS_PLL_DRIVER;
+ RADEONGetTMDSInfoFromTable(output);
return TRUE;
}
return FALSE;
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index b6ef59d..bc6f0b9 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -122,12 +122,6 @@ typedef enum
DVI_ANALOG
} RADEONDviType;
-typedef enum
-{
- TMDS_PLL_BIOS,
- TMDS_PLL_DRIVER
-} RADEONTMDSPllType;
-
typedef struct {
CARD32 freq;
CARD32 value;
@@ -202,7 +196,6 @@ typedef struct _RADEONOutputPrivateRec {
int PanelPwrDly;
int DotClock;
RADEONTMDSPll tmds_pll[4];
- RADEONTMDSPllType tmds_pll_table;
/* TV out */
TVStd default_tvStd;
TVStd tvStd;