xf86-video-ati: Branch 'randr-1.2' - 4 commits

Alex Deucher agd5f at kemper.freedesktop.org
Sun May 13 16:49:16 PDT 2007


 man/radeon.man       |  227 ---------------------------------------------------
 src/radeon.h         |   14 ---
 src/radeon_display.c |  100 ++--------------------
 src/radeon_driver.c  |    3 
 src/radeon_output.c  |   39 ++++++--
 src/radeon_probe.h   |    6 -
 6 files changed, 44 insertions(+), 345 deletions(-)

New commits:
diff-tree e187321ab8dd58d2b2fe92c062d070ba4820a2bf (from e60a7bcaf5611ad4706b1d1442ce4cae49145f42)
Author: Alex Deucher <alex at t41p.hsd1.va.comcast.net>
Date:   Sun May 13 19:49:10 2007 -0400

    RADEON: add new ConnectorTable option and re-add PanelSize option

diff --git a/src/radeon.h b/src/radeon.h
index 7922f1a..2a2a672 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -147,6 +147,7 @@ typedef enum {
     OPTION_LVDS_PROBE_PLL,
     OPTION_ACCELMETHOD,
     OPTION_CONSTANTDPI,
+    OPTION_CONNECTORTABLE,
     OPTION_DRI
 } RADEONOpts;
 
diff --git a/src/radeon_display.c b/src/radeon_display.c
index 737b170..c5caf9c 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -740,11 +740,20 @@ Bool RADEONGetLVDSInfo (xf86OutputPtr ou
     ScrnInfoPtr pScrn = output->scrn;
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
     RADEONOutputPrivatePtr radeon_output = output->driver_private;
+    char* s;
 
     ErrorF("LVDS get info");
 
     if (!RADEONGetLVDSInfoFromBIOS(output))
-        RADEONGetPanelInfoFromReg(output);
+	RADEONGetPanelInfoFromReg(output);
+
+    if ((s = xf86GetOptValString(info->Options, OPTION_PANEL_SIZE))) {
+	radeon_output->PanelPwrDly = 200;
+	if (sscanf (s, "%dx%d", &radeon_output->PanelXRes, &radeon_output->PanelYRes) != 2) {
+	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Invalid PanelSize option: %s\n", s);
+	    RADEONGetPanelInfoFromReg(output);
+	}
+    }
 
     /* The panel size we collected from BIOS may not be the
      * maximum size supported by the panel.  If not, we update
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 8626b89..ceea69d 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -189,6 +189,7 @@ static const OptionInfoRec RADEONOptions
     { OPTION_ACCELMETHOD,    "AccelMethod",      OPTV_STRING,  {0}, FALSE },
     { OPTION_CONSTANTDPI,    "ConstantDPI",	 OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_DRI,            "DRI",       	 OPTV_BOOLEAN, {0}, FALSE },
+    { OPTION_CONNECTORTABLE, "ConnectorTable",   OPTV_STRING,  {0}, FALSE },
     { -1,                    NULL,               OPTV_NONE,    {0}, FALSE }
 };
 
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 18ef16d..e9e1aea 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -68,10 +68,11 @@ const RADEONMonitorType MonTypeID[7] = {
   MT_STV,     /* STV -> STV */
 };
 
-const char *TMDSTypeName[3] = {
-  "NONE",
+const char *TMDSTypeName[4] = {
+  "Unknown",
   "Internal",
-  "External"
+  "External",
+  "None"
 };
 
 const char *DDCTypeName[6] = {
@@ -83,15 +84,16 @@ const char *DDCTypeName[6] = {
   "LCD_DDC"
 };
 
-const char *DACTypeName[3] = {
+const char *DACTypeName[4] = {
   "Unknown",
   "Primary",
   "TVDAC/ExtDAC",
+  "None"
 };
 
 const char *ConnectorTypeName[8] = {
   "None",
-  "Proprietary",
+  "Proprietary/LVDS",
   "VGA",
   "DVI-I",
   "DVI-D",
@@ -473,7 +475,7 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
     RADEONInfoPtr info       = RADEONPTR(pScrn);
     RADEONEntPtr pRADEONEnt  = RADEONEntPriv(pScrn);
     xf86OutputPtr output;
-    const char *s;
+    char *optstr;
     int i = 0, second = 0, max_mt = 5;
 
 
@@ -553,6 +555,21 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
         info->BiosConnector[0].DACType = DAC_PRIMARY;
     }
 
+    /* parse connector table option */
+    if (optstr = (char *)xf86GetOptValString(info->Options, OPTION_CONNECTORTABLE)) {
+	if (sscanf(optstr, "%d,%d,%d,%d,%d,%d,%d,%d",
+		   &info->BiosConnector[0].DDCType,
+		   &info->BiosConnector[0].DACType,
+		   &info->BiosConnector[0].TMDSType,
+		   &info->BiosConnector[0].ConnectorType,
+		   &info->BiosConnector[1].DDCType,
+		   &info->BiosConnector[1].DACType,
+		   &info->BiosConnector[1].TMDSType,
+		   &info->BiosConnector[1].ConnectorType) != 8) {
+	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Invalid ConnectorTable option: %s\n", optstr);
+	}
+    }
+
     for (i = 0 ; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
 	RADEONOutputPrivatePtr radeon_output = xnfcalloc(sizeof(RADEONOutputPrivateRec), 1);
 	if (!radeon_output) {
@@ -562,7 +579,7 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
 	radeon_output->ConnectorType = info->BiosConnector[i].ConnectorType;
 	if ((info->IsAtomBios && radeon_output->ConnectorType == CONNECTOR_DVI_D_ATOM) ||
 	    radeon_output->ConnectorType == CONNECTOR_DVI_D)
-	    radeon_output->DACType = DAC_UNKNOWN;
+	    radeon_output->DACType = DAC_NONE;
 	else
 	    radeon_output->DACType = info->BiosConnector[i].DACType;
 	radeon_output->DDCType = info->BiosConnector[i].DDCType;
@@ -595,8 +612,8 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
 		}
 		radeon_output->MonType = MT_UNKNOWN;
 		radeon_output->DDCType = DDC_LCD;
-		radeon_output->DACType = DAC_UNKNOWN;
-		radeon_output->TMDSType = TMDS_UNKNOWN;
+		radeon_output->DACType = DAC_NONE;
+		radeon_output->TMDSType = TMDS_NONE;
 		radeon_output->ConnectorType = CONNECTOR_LVDS_ATOM;
 		RADEONSetOutputType(pScrn, radeon_output);
 		output = xf86OutputCreate(pScrn, &radeon_output_funcs, OutputType[radeon_output->type]);
@@ -620,8 +637,8 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
 		}
 		radeon_output->MonType = MT_UNKNOWN;
 		radeon_output->DDCType = DDC_LCD;
-		radeon_output->DACType = DAC_UNKNOWN;
-		radeon_output->TMDSType = TMDS_UNKNOWN;
+		radeon_output->DACType = DAC_NONE;
+		radeon_output->TMDSType = TMDS_NONE;
 		radeon_output->ConnectorType = CONNECTOR_PROPRIETARY;
 		RADEONSetOutputType(pScrn, radeon_output);
 		output = xf86OutputCreate(pScrn, &radeon_output_funcs, OutputType[radeon_output->type]);
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 2bb5b27..818a2dd 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -96,14 +96,16 @@ typedef enum
 {
     DAC_UNKNOWN = -1,
     DAC_PRIMARY = 0,
-    DAC_TVDAC   = 1
+    DAC_TVDAC   = 1,
+    DAC_NONE    = 2
 } RADEONDacType;
 
 typedef enum
 {
     TMDS_UNKNOWN = -1,
     TMDS_INT     = 0,
-    TMDS_EXT     = 1
+    TMDS_EXT     = 1,
+    TMDS_NONE    = 2
 } RADEONTmdsType;
 
 typedef struct {
diff-tree e60a7bcaf5611ad4706b1d1442ce4cae49145f42 (from 51caa5dccc4a2e14d1b41bb7868ad20468dd4cfe)
Author: Alex Deucher <alex at t41p.hsd1.va.comcast.net>
Date:   Sun May 13 18:14:29 2007 -0400

    RADEON: remove mergedfb, etc. cruft from man page

diff --git a/man/radeon.man b/man/radeon.man
index 447dcbe..fcb6d73 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -223,227 +223,6 @@ HIGH   \-\- Force to the highest priorit
 The default value is
 .B AUTO.
 .TP
-.BI "Option \*qMonitorLayout\*q \*q" string \*q
-.br
-This option is used to overwrite the detected monitor types.
-This is only required when driver makes a false detection.
-The possible monitor types are:
-.br
-NONE   \-\- Not connected
-.br
-CRT    \-\- Analog CRT monitor
-.br
-TMDS   \-\- Desktop flat panel
-.br 
-LVDS   \-\- Laptop flat panel
-.br
-This option can be used in following format:
-.br
-Option "MonitorLayout" "[type on primary], [type on secondary]"
-.br
-For example, Option "MonitorLayout" "CRT, TMDS"
-
-Primary/Secondary head for dual\-head cards:
-.br
-(when only one port is used, it will be treated as the primary regardless)
-.br
-.B Primary head:
-.br
-DVI port on DVI+VGA cards
-.br
-LCD output on laptops
-.br 
-Internal TMDS port on DVI+DVI cards
-.br 
-.B Secondary head:
-.br
-VGA port on DVI+VGA cards
-.br
-VGA port on laptops
-.br
-External TMDS port on DVI+DVI cards
-
-The default value is
-.B undefined.
-.TP 
-.BI "Option \*qMergedFB\*q \*q" boolean \*q
-This enables merged framebuffer mode.  In this mode you have a single 
-shared framebuffer with two viewports looking into it.  It is similar
-to Xinerama, but has some advantages.  It is faster than Xinerama, the
-DRI works on both heads, and it supports clone modes.  
-.br
-Merged framebuffer mode provides two linked viewports looking into a
-single large shared framebuffer.  The size of the framebuffer is 
-determined by the
-.B Virtual
-keyword defined on the
-.B Screen
-section of your __xconfigfile__ file.  It works just like regular virtual
-desktop except you have two viewports looking into it instead of one.
-.br
-For example, if you wanted a desktop composed of two 1024x768 viewports
-looking into a single desktop you would create a virtual desktop of 
-2048x768 (left/right) or 1024x1536 (above/below), e.g.,
-.br
-.B Virtual 2048 768
-or
-.B Virtual 1024 1536
-.br
-The virtual desktop can be larger than larger than the size of the viewports
-looking into it.  In this case the linked viewports will scroll around in the 
-virtual desktop.  Viewports with different sizes are also supported (e.g., one
-that is 1024x768 and one that is 640x480).  In this case the smaller viewport
-will scroll relative to the larger one such that none of the virtual desktop 
-is inaccessible.  If you do not define a virtual desktop the driver will create
-one based on the orientation of the heads and size of the largest defined mode in 
-the display section that is supported on each head.
-.br
-The relation of the viewports in specified by the
-.B CRT2Position
-Option.  The options are
-.B Clone
-,
-.B LeftOf
-,
-.B RightOf
-,
-.B Above
-, and
-.B Below.  
-MergedFB is enabled by default if a monitor is detected on each output.  If 
-no position is given it defaults to clone mode (the old clone options are now 
-deprecated, also, the option OverlayOnCRTC2 has been replaced by the Xv 
-attribute XV_SWITCHCRT; the overlay can be switched to CRT1 or CRT2 on the fly 
-in clone mode).
-.br
-The maximum framebuffer size that the 2D acceleration engine can handle is 
-8192x8192.  The maximum framebuffer size that the 3D engine can handle is 
-2048x2048.
-.br
-.B Note:
-Page flipping does not work well in certain configurations with MergedFB.  If you 
-see rendering errors or other strange behavior, disable page flipping. Also MergedFB
-is not compatible with the 
-.B UseFBDev 
-option.
-.br
-The default value is
-.B undefined.
-.TP 
-.BI "Option \*qCRT2HSync\*q \*q" "string" \*q
-Set the horizontal sync range for the secondary  monitor. 
-It is not required if a DDC\-capable monitor is connected.
-.br
-For example, Option "CRT2HSync" "30.0-86.0"
-.br
-The default value is
-.B undefined.
-.TP 
-.BI "Option \*qCRT2VRefresh\*q \*q" "string" \*q
-Set the vertical refresh range for the secondary monitor.
-It is not required if a DDC\-capable monitor is connected.
-.br
-For example, Option "CRT2VRefresh" "50.0-120.0"
-.br
-The default value is
-.B undefined.
-.TP
-.BI "Option \*qCRT2Position\*q \*q" "string" \*q
-Set the relationship of CRT2 relative to CRT1. Valid options are: 
-.B Clone
-,
-.B LeftOf
-,
-.B RightOf
-,
-.B Above
-, and
-.B Below
-.
-.br
-For example, Option "CRT2Position" "RightOf"
-.br
-This option also supports an offset.  This is most useful when
-.B MergedNonRectangular 
-is enabled.  For example if you want CRT2 to be offset 100 pixels down from 
-the start of CRT1, you'd type:
-.br
-Option "CRT2Position" "LeftOf 100"
-.br
-The offset is vertical for LeftOf and RightOf and horizontal for Above and 
-Below.  Offsets can be positive or negative.
-.br
-The default value is
-.B Clone.
-.TP
-.BI "Option \*qMetaModes\*q \*q" "string" \*q
-MetaModes are mode combinations for CRT1 and CRT2.  If you are using merged
-frame buffer mode and want to change modes (CTRL-ALT-+/-), these define which
-modes will be switched to on CRT1 and CRT2.  The MetaModes are defined as 
-CRT1Mode-CRT2Mode (800x600-1024x768).  Modes listed individually (800x600) 
-define clone modes, that way you can mix clone modes with non-clone modes. 
-Also some programs require "standard" modes.  If you want to add clone modes 
-of different refreshes or sizes to the mix, they are defined as CRT1Mode+CRT2Mode 
-(800x600+1024x768).
-.br
-Note:  Any mode you use in the MetaModes must be defined in the
-.B Screen 
-section of your __xconfigfile__ file.  Modes not defined there will be ignored when
-the MetaModes are parsed since the driver uses them to make sure the monitors can 
-handle those modes.  If you do not define a MetaMode the driver will create
-one based on the orientation of the heads and size of the largest defined mode in 
-the display section that is supported on each head.
-.br
-.B Modes "1024x768" "800x600" "640x480"
-.br
-For example, Option "MetaModes" "1024x768-1024x768 800x600-1024x768 640x480-800x600 800x600"
-.br
-The default value is
-.B undefined.
-.TP
-.BI "Option \*qMergedXinerama\*q \*q" boolean \*q
-Since merged framebuffer mode does not use Xinerama, apps are not able to intelligently
-place windows.  Merged framebuffer mode provides its own pseudo-Xinerama.  This allows
-Xinerama compliant applications to place windows appropriately.  There are some caveats.
-Since merged framebuffer mode is able to change relative screen sizes and orientations on
-the fly, as well has having overlapping viewports, pseudo-Xinerama, might not always 
-provide the right hints.  Also many Xinerama compliant applications only query Xinerama
-once at startup; if the information changes, they may not be aware of the change.  If
-you are already using Xinerama (e.g., a single head card and a dualhead card providing
-three heads), pseudo-Xinerama will be disabled.
-.br
-This option allows you turn off the driver provided pseudo-Xinerama extension.
-.br
-The default value is
-.B TRUE.
-.TP 
-.BI "Option \*qMergedXineramaCRT2IsScreen0\*q \*q" boolean \*q
-By default the pseudo-Xinerama provided by the driver makes the left-most or bottom
-head Xinerama screen 0.  Certain Xinerama-aware applications do special things with 
-screen 0.  To change that behavior, use this option.
-.br
-The default value is
-.B undefined.
-.TP
-.BI "Option \*qMergedDPI\*q \*q" "string" \*q
-The driver will attempt to figure out an appropriate DPI based on the DDC information
-and the orientation of the heads when in merged framebuffer mode.  If this value does 
-not suit you, you can manually set the DPI using this option.
-.br
-For example, Option "MergedDPI" "100 100"
-.br
-The default value is
-.B undefined.
-.TP
-.BI "Option \*qMergedNonRectangular\*q \*q" boolean \*q
-If you are using MergedFB with two modes of different sizes, turn this option on to 
-keep the smaller head from scrolling within the larger virtual desktop and to keep 
-the mouse from moving into that area.  Applications that are not Xinerama aware can 
-potentially end up stranded in this area.
-.br
-The default value is
-.B FALSE.
-.TP
 .BI "Option \*qColorTiling\*q \*q" "boolean" \*q
 Frame buffer can be addressed either in linear or tiled mode. Tiled mode can provide
 significant performance benefits with 3D applications, for 2D it shouldn't matter
@@ -478,12 +257,6 @@ For example, Option "PanelSize" "1400x10
 .br
 The default value is
 .B none.
-.TP 
-.BI "Option \*qPanelOff\*q \*q" boolean \*q
-Disable panel output.
-.br
-The default value is
-.B off.
 .TP
 .BI "Option \*qEnablePageFlip\*q \*q" boolean \*q
 Enable page flipping for 3D acceleration. This will increase performance
diff --git a/src/radeon.h b/src/radeon.h
index f8d9c65..7922f1a 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -117,7 +117,6 @@ typedef enum {
     OPTION_ACCEL_DFS,
 #endif
 #endif
-    OPTION_PANEL_OFF,
     OPTION_DDC_MODE,
     OPTION_IGNORE_EDID,
     OPTION_FBDEV,
diff-tree 51caa5dccc4a2e14d1b41bb7868ad20468dd4cfe (from c5da9d4040cb08598d171d20f84d3f6c20a033e0)
Author: Alex Deucher <alex at t41p.hsd1.va.comcast.net>
Date:   Sun May 13 18:10:02 2007 -0400

    RADEON: remove old mergedfb and dualhead options that are no longer used

diff --git a/src/radeon.h b/src/radeon.h
index 762376a..f8d9c65 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -119,19 +119,8 @@ typedef enum {
 #endif
     OPTION_PANEL_OFF,
     OPTION_DDC_MODE,
-    OPTION_MONITOR_LAYOUT,
     OPTION_IGNORE_EDID,
     OPTION_FBDEV,
-    OPTION_MERGEDFB,
-    OPTION_CRT2HSYNC,
-    OPTION_CRT2VREFRESH,
-    OPTION_CRT2POS,
-    OPTION_METAMODES,
-    OPTION_MERGEDDPI,
-    OPTION_RADEONXINERAMA,
-    OPTION_CRT2ISSCRN0,
-    OPTION_MERGEDFBNONRECT,
-    OPTION_MERGEDFBMOUSER,
     OPTION_DISP_PRIORITY,
     OPTION_PANEL_SIZE,
     OPTION_MIN_DOTCLOCK,
@@ -159,7 +148,6 @@ typedef enum {
     OPTION_LVDS_PROBE_PLL,
     OPTION_ACCELMETHOD,
     OPTION_CONSTANTDPI,
-    OPTION_REVERSE_DISPLAY,
     OPTION_DRI
 } RADEONOpts;
 
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index adc635d..8626b89 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -160,7 +160,6 @@ static const OptionInfoRec RADEONOptions
 #endif
 #endif
     { OPTION_DDC_MODE,       "DDCMode",          OPTV_BOOLEAN, {0}, FALSE },
-    { OPTION_MONITOR_LAYOUT, "MonitorLayout",    OPTV_ANYSTR,  {0}, FALSE },
     { OPTION_IGNORE_EDID,    "IgnoreEDID",       OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_FBDEV,          "UseFBDev",         OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_DISP_PRIORITY,  "DisplayPriority",  OPTV_ANYSTR,  {0}, FALSE },
@@ -189,7 +188,6 @@ static const OptionInfoRec RADEONOptions
     { OPTION_LVDS_PROBE_PLL, "LVDSProbePLL",     OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_ACCELMETHOD,    "AccelMethod",      OPTV_STRING,  {0}, FALSE },
     { OPTION_CONSTANTDPI,    "ConstantDPI",	 OPTV_BOOLEAN, {0}, FALSE },
-    { OPTION_REVERSE_DISPLAY,"ReverseDisplay",   OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_DRI,            "DRI",       	 OPTV_BOOLEAN, {0}, FALSE },
     { -1,                    NULL,               OPTV_NONE,    {0}, FALSE }
 };
diff-tree c5da9d4040cb08598d171d20f84d3f6c20a033e0 (from e776fa9ecc53d63f916a5447a76fb2bb3b824167)
Author: Alex Deucher <alex at t41p.hsd1.va.comcast.net>
Date:   Sun May 13 18:05:38 2007 -0400

    RADEON: remove more dead code

diff --git a/src/radeon_display.c b/src/radeon_display.c
index 8ce1912..737b170 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -1478,92 +1478,3 @@ void RADEONUnblank(ScrnInfoPtr pScrn)
     }
 }
 
-#if 0
-static void RADEONDPMSSetOn(xf86OutputPtr output)
-{
-  ScrnInfoPtr pScrn = output->scrn;
-  RADEONInfoPtr  info       = RADEONPTR(pScrn);
-  unsigned char *RADEONMMIO = info->MMIO;
-  RADEONMonitorType MonType;
-  RADEONTmdsType TmdsType;
-  RADEONDacType DacType;
-  RADEONOutputPrivatePtr radeon_output = output->driver_private;
-
-  MonType = radeon_output->MonType;
-  TmdsType = radeon_output->TMDSType;
-  DacType = radeon_output->DACType;
-
-  ErrorF("radeon_dpms_on %d %d %d\n", radeon_output->num, MonType, DacType);
-
-  switch(MonType) {
-  case MT_LCD:
-    OUTREGP (RADEON_LVDS_GEN_CNTL, RADEON_LVDS_BLON, ~RADEON_LVDS_BLON);
-    usleep (radeon_output->PanelPwrDly * 1000);
-    OUTREGP (RADEON_LVDS_GEN_CNTL, RADEON_LVDS_ON, ~RADEON_LVDS_ON);
-    break;
-  case MT_DFP:
-    if (TmdsType == TMDS_EXT) {
-      OUTREGP (RADEON_FP2_GEN_CNTL, 0, ~RADEON_FP2_BLANK_EN);
-      OUTREGP (RADEON_FP2_GEN_CNTL, RADEON_FP2_ON, ~RADEON_FP2_ON);
-      if (info->ChipFamily >= CHIP_FAMILY_R200) {
-	OUTREGP (RADEON_FP2_GEN_CNTL, RADEON_FP2_DVO_EN, 
-		 ~RADEON_FP2_DVO_EN);
-      }
-    } else
-      OUTREGP (RADEON_FP_GEN_CNTL, (RADEON_FP_FPON | RADEON_FP_TMDS_EN),
-	       ~(RADEON_FP_FPON | RADEON_FP_TMDS_EN));
-    break;
-  case MT_CRT:
-  default:
-    RADEONDacPowerSet(pScrn, TRUE, (DacType == DAC_PRIMARY));
-    break;
-  }
-}
-
-static void RADEONDPMSSetOff(xf86OutputPtr output)
-{
-  ScrnInfoPtr pScrn = output->scrn;
-  RADEONInfoPtr  info       = RADEONPTR(pScrn);
-  unsigned char *RADEONMMIO = info->MMIO;
-  RADEONMonitorType MonType;
-  RADEONTmdsType TmdsType;
-  RADEONDacType DacType;
-  unsigned long tmpPixclksCntl;
-  RADEONOutputPrivatePtr radeon_output = output->driver_private;
-
-  MonType = radeon_output->MonType;
-  TmdsType = radeon_output->TMDSType;
-  DacType = radeon_output->DACType;
-
-  switch(MonType) {
-  case MT_LCD:
-    tmpPixclksCntl = INPLL(pScrn, RADEON_PIXCLKS_CNTL);
-    if (info->IsMobility || info->IsIGP) {
-      /* Asic bug, when turning off LVDS_ON, we have to make sure
-	 RADEON_PIXCLK_LVDS_ALWAYS_ON bit is off
-      */
-      OUTPLLP(pScrn, RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb);
-    }
-    OUTREGP (RADEON_LVDS_GEN_CNTL, 0,
-	     ~(RADEON_LVDS_BLON | RADEON_LVDS_ON));
-    if (info->IsMobility || info->IsIGP) {
-      OUTPLL(pScrn, RADEON_PIXCLKS_CNTL, tmpPixclksCntl);
-    }
-    break;
-  case MT_DFP:
-    if (TmdsType == TMDS_EXT) {
-      OUTREGP (RADEON_FP2_GEN_CNTL, RADEON_FP2_BLANK_EN, ~RADEON_FP2_BLANK_EN);
-      OUTREGP (RADEON_FP2_GEN_CNTL, 0, ~RADEON_FP2_ON);
-      if (info->ChipFamily >= CHIP_FAMILY_R200) {
-	OUTREGP (RADEON_FP2_GEN_CNTL, 0, ~RADEON_FP2_DVO_EN);
-      }
-    } else
-      OUTREGP (RADEON_FP_GEN_CNTL, 0, ~(RADEON_FP_FPON | RADEON_FP_TMDS_EN));
-    break;
-  case MT_CRT:
-  default:
-    RADEONDacPowerSet(pScrn, FALSE, (DacType == DAC_PRIMARY));
-    break;
-  }
-}
-#endif


More information about the xorg-commit mailing list