Reviewed-by: Jeremy Huddleston <[email protected]> Looks good, but style-wise, I liked the mode = pScrn->monitor->Modes where it was before ... meh
On Oct 19, 2011, at 9:01 AM, Dave Airlie wrote: > From: Adam Jackson <[email protected]> > > 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. > > Signed-off-by: Dave Airlie <[email protected]> > --- > hw/xfree86/fbdevhw/fbdevhw.c | 21 +++++++++++++-------- > 1 files changed, 13 insertions(+), 8 deletions(-) > > diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c > index dee731b..7bd409e 100644 > --- a/hw/xfree86/fbdevhw/fbdevhw.c > +++ b/hw/xfree86/fbdevhw/fbdevhw.c > @@ -509,20 +509,25 @@ 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; > + > + mode = pScrn->monitor->Modes; > + > + for (; 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); > > -- > 1.7.6.4 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
