Subject: xsrc/18899: Radeon driver is gratuitously unwilling to make a plausible guess.
To: None <gnats-bugs@gnats.netbsd.org>
From: seebs <seebs@vash.cel.plethora.net>
List: netbsd-bugs
Date: 11/03/2002 02:20:23
>Number:         18899
>Category:       xsrc
>Synopsis:       The radeon driver doesn't even *try* to guess which display to use.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    xsrc-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 03 01:21:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     seebs
>Release:        NetBSD 1.6J
>Organization:
	N/A
>Environment:
System: NetBSD vash.cel.plethora.net 1.6J NetBSD 1.6J (VASH) #0: Wed Oct 30 11:18:44 CST 2002 root@:/usr/src/sys/arch/i386/compile/VASH i386
Architecture: i386
Machine: i386
>Description:
	The laptop Radeon chipset I have supports CRT's and LCD's both.
	Unfortunately, the driver can't *guess*; it needs to have "CrtScreen"
	in the XF86Config if it's to drive a CRT, and *must not* have it
	to drive an LCD.

	This is silly; if it tries the LCD, and the LCD is not available,
	*there is a detectable error condition*.

>How-To-Repeat:
	Try to build an XF86Config that works with and without a monitor.

>Fix:
	This is ugly beyond words, but works.  If we haven't been specifically
	told to use a CRT, we try the LCD... but if it fails in a way typical
	of a disabled device, we set the CRT flag and try again!  Works like
	a charm.  These diffs may be a couple lines off.

***************
*** 1730,1735 ****
--- 1732,1738 ----
      /*We'll use our own mode validation routine for DFP/LCD, since
        xf86ValidateModes is not working well with the DFP/LCD modes 
        'stretched' from their native mode.*/
+ dummy:
      if(info->DisplayType == MT_CRT || info->UseCRT)
      {
  				/* Get mode information */
***************
*** 1798,1803 ****
--- 1801,1808 ----
          modesFound = RADEONValidateFPModes(pScrn);
          if(modesFound < 1) 
          {
+ 	info->UseCRT = 1;
+ 	goto dummy;
              xf86DrvMsg(pScrn->scrnIndex, X_ERROR, 
                   "No valid mode found for this DFP/LCD\n");
              xf86DrvMsg(pScrn->scrnIndex, X_INFO,
>Release-Note:
>Audit-Trail:
>Unformatted: