Announcement

Collapse
No announcement yet.

Yet another: No screens found

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by Blue Beard View Post
    The current version now detects my bios details;
    Last version of Xserver or RadeonHD?

    Comment


    • #12
      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.

      Comment


      • #13
        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..

        Comment


        • #14
          Hmm, after searching some more I stumbled upon a blog of Chris Tyler. This is what he says about the AtomBIOS':
          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.

          Comment


          • #15
            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

            Comment


            • #16
              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.

              Comment


              • #17
                can you pastebin your x log ?

                Comment


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

                  http://pastebin.com/m6f5f42a3

                  Comment


                  • #19
                    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, 11:32 AM.

                    Comment

                    Working...
                    X