Originally posted by Blue Beard
View Post
Announcement
Collapse
No announcement yet.
Yet another: No screens found
Collapse
X
-
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 TylerThese 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
Comment
-
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;
Comment
-
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
Code:OUT OF RANGE HF: 179,5 VF: 200 <-- Jeez OPERATING FREQUENCY HF: 30 - 70 VF: 50 - 160
Comment
-
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"
Edit: I can't go any lower..Last edited by MartjeB; 23 February 2009, 12:32 PM.
Comment
Comment