[Xorg-driver-geode] A question about the gtf setting

Huang, FrankR FrankR.Huang at amd.com
Fri Oct 15 01:42:45 PDT 2010

Learn much! See below.
By the way, any good document to describe CRTC?

> [skip]
> If the panel only supports 1024x600 at 60hz, just add that mode in the
> probe() function for your LVDS output and reject the other modes in
> the mode_valid() function unless your panel hw has a scaler in which
> case you should be able to support the additional modes.  See
> RADEONProbeOutputModes() in radeon_modes.c for how we add modes for
> different output types.
Ok. RADEONProbeOutputModes() is called by radeon_get_modes(). It is *_get_mode() function and similar like lx_output_get_modes(). Seems radeon_add_common_modes() function will use xf86CVTMode() to calculate the modes driver adds. 

> [skip]
> When I say panel, I'm generally talking about integrated flat panels
> (e.g., the panels on laptops).  LCD monitors connected via DVI or VGA
> have an EDID and generally support other non-native modes due to
> having a built in scaler in the monitor.  As for the LVDS panel
> timing, on radeon, we have potentially two places where that
> information is stored: 1. there is an LVDS info table in the vbios
> that includes the panel size and timing, and 2. some laptops have a
> panel EDID.  There should be some method to get that information on
> geode.
Ok. LVDS panel is the panel that generally need a fixed mode to support without a scaler while VGA&&DVI is vice versa. Geode has some VG_FT_nnnn registers to keep the panel's size. But it is not panel EDID. I will ask Marshall for more on TSDB.

> PLL is the clock generator for the crtc; it takes a reference
> frequency and through a set of dividers, generates the requested pixel
> clock for the mode.  The encoder is the part of the display pipeline
> that takes the bit stream from the crtc and encodes it in the proper
> format for the selected connector (LVDS, TMDS, etc.).  See this blog
> post I wrote for more information in the display pipeline on radeon:
> http://www.botchco.com/agd5f/?p=51
Ok. I have read the summary on the link above and know what the CRTC is. For geode, it is in display controller while my work before are main in graphics processor. I think much crtc_xxx functions in struct xf86CrtcFuncsRec are for this part.

> Yes.  LCD panels generally have a fixed size and timing;  this timing
> is considered the native mode of the panel.  In order to support
> non-native modes, you need a scaler which will scale up (or down in
> some cases) the in coming data to the native panel size.  The panel
> always gets native timing.  For LVDS, the GPU usually has a scaler to
> handle non-native modes.  For VGA/DVI LCD monitors, the monitor
> generally has a scaler that scales the incoming mode to the native
> mode.
Very Clear now on scaler use now! I found that geode has an scaler too. I think it is used for convert the non-native modes to native modes for LVDS panel.

> RMX (RadioMetric eXpansion) is the name of the scaler on older radeon
> hw.  The LVDS panel's native mode is pulled from either the vbios LVDS
> info table or from the panel's EDID if it has one.  In the
> mode_valid() function, we reject modes that are larger than the panel
> (MODE_PANEL), but we allow modes smaller than the panel since the RMX
> unit can scale those modes up to the native mode size.  When setting
> the mode, we always program the native mode.  If requested mode is
> smaller than the native mode, we also set up the RMX unit.  You give
> the RMX unit the requested size and the native size and a few other
> parameters and it scales the image up.
IF RMX is off, there is no scaler. So reject other non-native modes. Got it.

> Alex

More information about the Xorg-driver-geode mailing list