mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-27 01:10:06 +01:00
fbdevhw: iterate over all modes that match a mode. (v3)
So on RHEL5 anaconda sets an xorg.conf with a fixed 800x600 mode in it,
we run radeonfb and fbdev since ati won't work in userspace due to domain
issues in the older codebase.
On certain pseries blades the built-in KVM can't accept an 800x600-43 mode,
it requires the 800x600-60 mode, so we have to have the kernel radeonfb
driver reject the 800x600-43 mode when it sees it. However then fbdev
doesn't try any of the other 800x600 modes in the modelist, and we end up
getting a default 640x480 mode we don't want.
This patch changes the mode validation loop to continue on with the other modes
that match to find one that works.
v2: move code around to avoid extra loop, after comment from Jamey.
v3: move loop setup back into loop as per Jeremy's review.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 22605effd1)
This commit is contained in:
parent
7abd360638
commit
c672e2a110
1 changed files with 10 additions and 8 deletions
|
|
@ -510,20 +510,22 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
|||
pScrn->virtualY = pScrn->display->virtualY;
|
||||
|
||||
for (modename = pScrn->display->modes; *modename != NULL; modename++) {
|
||||
for (mode = pScrn->monitor->Modes; mode != NULL; mode = mode->next)
|
||||
if (0 == strcmp(mode->name,*modename))
|
||||
break;
|
||||
for (mode = pScrn->monitor->Modes; mode != NULL; mode = mode->next) {
|
||||
if (0 == strcmp(mode->name,*modename)) {
|
||||
if (fbdevHWSetMode(pScrn, mode, TRUE))
|
||||
break;
|
||||
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\tmode \"%s\" test failed\n", *modename);
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL == mode) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\tmode \"%s\" not found\n", *modename);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!fbdevHWSetMode(pScrn, mode, TRUE)) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\tmode \"%s\" test failed\n", *modename);
|
||||
continue;
|
||||
}
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\tmode \"%s\" ok\n", *modename);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue