Page 2 of 2 FirstFirst 12
Results 11 to 19 of 19

Thread: Yet another: No screens found

  1. #11
    Join Date
    Jan 2009
    Posts
    148

    Default

    Quote Originally Posted by Blue Beard View Post
    The current version now detects my bios details;
    Last version of Xserver or RadeonHD?

  2. #12
    Join Date
    Feb 2009
    Posts
    34

    Default

    radeonhd 1.2.4.1 has been released and a new ati driver.
    I am waiting for these to be distributed by jaunty updates.
    If they don't come within a week I will manually install them.

    It appears the complete output system is being rewritten.

  3. #13
    Join Date
    Jan 2009
    Posts
    148

    Default

    It still doesn't work for me, even with the latest version of radeohd. I compiled it and copied radeonhd_drv.so to /usr/lib/xorg/modules/drivers/.

    I still get the same error..

  4. #14
    Join Date
    Jan 2009
    Posts
    148

    Default

    Hmm, after searching some more I stumbled upon a blog of Chris Tyler. This is what he says about the AtomBIOS':
    Quote Originally Posted by Chris Tyler
    These setpci commands are required to make the card's AtomBIOS visible to the radeonhd driver (on this hardware):
    Code:
    setpci -s 0000:01:00.0 COMMAND=2
    setpci -s 0000:02:00.0 COMMAND=2
    I'm going to try it. I'll report back with the results.

  5. #15
    Join Date
    Jan 2009
    Posts
    148

    Default

    Hmm, it does work but I had to apply the following patch too:
    Code:
    diff --git a/src/rhd.h b/src/rhd.h
    index 708e4d6..8471f33 100644
    --- a/src/rhd.h
    +++ b/src/rhd.h
    @@ -355,7 +355,7 @@ extern unsigned int RHDReadPCIBios(RHDPtr rhdPtr, unsigned char **prt);
     extern Bool RHDScalePolicy(struct rhdMonitor *Monitor, struct rhdConnector *Connector);
     extern void RHDPrepareMode(RHDPtr rhdPtr);
     extern Bool RHDUseAtom(RHDPtr rhdPtr, enum RHD_CHIPSETS *BlackList, enum atomSubSystem subsys);
    -
    +extern CARD32   RHDGetVideoRamSize(RHDPtr rhdPtr);
     extern CARD32 _RHDRegRead(int scrnIndex, CARD16 offset);
     #define RHDRegRead(ptr, offset) _RHDRegRead((ptr)->scrnIndex, (offset))
     extern void _RHDRegWrite(int scrnIndex, CARD16 offset, CARD32 value);
    diff --git a/src/rhd_atombios.c b/src/rhd_atombios.c
    index b515427..8b9d6c2 100644
    --- a/src/rhd_atombios.c
    +++ b/src/rhd_atombios.c
    @@ -2762,7 +2762,8 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2,
     		    AtomBiosArgPtr data)
     {
         int scrnIndex = data->val;
    -    RHDPtr rhdPtr = RHDPTR(xf86Screens[scrnIndex]);
    +    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
    +    RHDPtr rhdPtr = RHDPTR(pScrn);
         unsigned char *ptr;
         atomDataTablesPtr atomDataPtr;
         atomBiosHandlePtr handle = NULL;
    @@ -2785,9 +2786,14 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2,
     	    return ATOM_FAILED;
     	}
         } else {
    -	if (xf86IsEntityPrimary(rhdPtr->entityIndex)) {
    +	CARD32 videoRam = RHDGetVideoRamSize(rhdPtr);
    +
    +	if (videoRam > 0) {
     	    int read_len;
     	    unsigned char tmp[32];
    +
    +	    if (!pScrn->videoRam)
    +		pScrn->videoRam = videoRam;
     	    xf86DrvMsg(scrnIndex,X_INFO,"Getting BIOS copy from legacy VBIOS location\n");
     	    if (xf86ReadBIOS(legacyBIOSLocation, 0, tmp, 32) < 0) {
     		xf86DrvMsg(scrnIndex,X_ERROR,
    diff --git a/src/rhd_driver.c b/src/rhd_driver.c
    index 0ef3612..d64610d 100644
    --- a/src/rhd_driver.c
    +++ b/src/rhd_driver.c
    @@ -164,7 +164,6 @@ static Bool     rhdMapMMIO(RHDPtr rhdPtr);
     static void     rhdUnmapMMIO(RHDPtr rhdPtr);
     static Bool     rhdMapFB(RHDPtr rhdPtr);
     static void     rhdUnmapFB(RHDPtr rhdPtr);
    -static CARD32   rhdGetVideoRamSize(RHDPtr rhdPtr);
     static void     rhdFbOffscreenGrab(ScrnInfoPtr pScrn);
     static void	rhdGetIGPNorthBridgeInfo(RHDPtr rhdPtr);
     static enum rhdCardType rhdGetCardType(RHDPtr rhdPtr);
    @@ -531,6 +530,7 @@ RHDPreInit(ScrnInfoPtr pScrn, int flags)
     	goto error0;
         }
     
    +    /* do this before AtomBIOS init as it will be set there if not preset */
         pScrn->videoRam = rhdPtr->pEnt->device->videoRam;
         rhdPtr->entityIndex = rhdPtr->pEnt->index;
     
    @@ -715,7 +715,7 @@ RHDPreInit(ScrnInfoPtr pScrn, int flags)
         /* We can use a register which is programmed by the BIOS to find out the
            size of our framebuffer */
         if (!pScrn->videoRam) {
    -	pScrn->videoRam = rhdGetVideoRamSize(rhdPtr);
    +	pScrn->videoRam = RHDGetVideoRamSize(rhdPtr);
     	if (!pScrn->videoRam) {
     	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No Video RAM detected.\n");
     	    goto error1;
    @@ -1678,8 +1678,8 @@ rhdUnmapMMIO(RHDPtr rhdPtr)
     /*
      *
      */
    -static CARD32
    -rhdGetVideoRamSize(RHDPtr rhdPtr)
    +CARD32
    +RHDGetVideoRamSize(RHDPtr rhdPtr)
     {
         CARD32 RamSize, BARSize;
    Now everything is fine! The monitor gives an 'out of range' error, but that's fixable

  6. #16
    Join Date
    Jan 2009
    Posts
    148

    Default

    Hmm, not really :/. This is my xorg.conf now:
    Code:
    Section "Serverflags"
    	Option	"Dontzap"	"no"
    	Option	"AutoAddDevices"	"false"
    EndSection
    
    Section "ServerLayout"
            Identifier     "seat0"
            Screen      0  "Screen0" 0 0
    EndSection
    
    Section "ServerLayout"
            Identifier     "seat1"
            Screen      0  "Screen1" 0 0
    EndSection
    
    Section "Monitor"
    	Identifier	"Studioworks 700S"
    	HorizSync	30.0 - 70.0
    	VertRefresh	50.0 - 160.0
    EndSection
    
    Section "Monitor"
    	Identifier	"Samsung T200"
    EndSection
    
    Section "Device"
    	Identifier	"Radeon HD3870"
    	BusID		"PCI:1:0:0"
    	Driver		"radeonhd"
    	Option		"monitor-DVI-I_2/digital" "Samsung T200"
    EndSection
    
    Section "Device"
    	Identifier	"Mobility Radeon HD3450"
    	BusID		"PCI:2:0:0"
    	Driver		"radeonhd"
    	Option		"monitor-VGA_1"	"Studioworks 700S"
    EndSection
    
    Section "Screen"
    	Identifier	"Screen0"
    	Monitor		"Samsung T200"
    	Device		"Radeon HD3870"
    EndSection
    
    Section "Screen"
    	Identifier	"Screen1"
    	Monitor		"Studioworks 700S"
    	Device		"Mobility Radeon HD3450"
    EndSection
    And here my Xorg.1.log. As you can see, everything is detected just fine. It says the maximum of the Studioworks 700S is 1280x1024@60Hz. Yet, my monitor reports:
    Code:
    OUT OF RANGE
    HF: 179,5 
    VF: 200 <-- Jeez
    
    OPERATING FREQUENCY
    HF: 30 - 70
    VF: 50 - 160
    Is there any way to force Xorg to run on a lower frequency? I tried it with HorizSync and VertRefresh, but it doesn't work as you can see.

  7. #17
    Join Date
    Oct 2007
    Location
    Toronto-ish
    Posts
    7,463

    Default

    can you pastebin your x log ?

  8. #18
    Join Date
    Jan 2009
    Posts
    148

    Default

    You mean Xorg.1.log? I already did that in my previous post .

    http://pastebin.com/m6f5f42a3

  9. #19
    Join Date
    Jan 2009
    Posts
    148

    Default

    If I add
    Code:
    	# 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
    	Modeline "1280x1024_50.00"  89.38  1280 1352 1488 1696  1024 1025 1028 1054  -HSync +Vsync
    	Option "PreferredMode" "1280x1024_50.00"
    to the monitor section, it reports it's running on V 140Hz. Let's see how low I can go..

    Edit: I can't go any lower..
    Last edited by MartjeB; 02-23-2009 at 11:32 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •