[PATCH] Radeon driver fixes
Benjamin Herrenschmidt
benh at kernel.crashing.org
Thu Nov 11 23:05:39 PST 2004
On Fri, 2004-11-12 at 01:41 -0500, Hui Yu wrote:
> Hi Ben,
Hi ! Thanks for your reply.
> I haven't got time to go through the code carefully; just some
> comments based on your questions in previous email about deriving
> DotClock in ValidateDDCMode.
>
> Basically with UseBiosDividers set, the panel should be initialized to
> whatever specified by BIOS. ValidateDDCMode shouldn't be used because
> mixing DDC information and Bios provided dividers may cause problems.
> In this case DotClock is not really used for mode validation, but for
> some utility programs to display valid mode information. If you want
> to UseBiosDividers flag for a PPC path and need to derive DotClock
> from DDC, you can probably add the code to GetLVDSInfo. After all you
> are collecting info, not validating mode. In fact, things like
> UpdatePanelSize should go there too...
Ok, I think I figured that out and I think my patch won't affect it. So
the short story is: We fail to validate FP modes when DotClock is 0
(despite not needing to know DotClock especially when UseBiosDividers is
set) and the only thing that "updates" DotClock from the DDC infos is
ValidateDDCMode which wasn't running in that case.
I think there is no problem letting ValidateDDCMode run, at least part
of it, and call UpdatePanelSize. The reason is that since
UseBIOSDividers is set, we will use those deviders and completely ignore
the dotclock set by the mode itself. So whatever mode is
chosen/validated is almost irrelevant, with an LVDS panel, we'll use RMX
to scale anyway. If you look the way I changed the function, basically,
we do now get into ValidateDDCMode. However, we don't do much more than
check the detailed timings, and if we didn't have a valid dotclock and
they match the panel size, then I update the DotClock (that makes
utilities happy and ValidateFPMode too). I don't think there is any harm
in doing so.
If you look at the changes I made to UpdatePanelSize, you'll notice that
the stuff will only be updated from the detailed DDC timing if we get a
larger panel size and UseBiosDividers was _not_ set (previous behaviour)
_or_ we got an exact panel size and no dot clock (which shouldn't happen
in he BIOS case, and if it does, that's a non-issue since we are getting
an exact match for the panel, or could it still be a problem ?)
> CRTC_GEN_CNTL.CRTC_EXT_DISP_EN=0?
Ok, I'll toy around with x86 boxes I have here and see if that's
reliable.
Ben.
More information about the xorg
mailing list