[Xorg-driver-geode] looking at wide mode support for GeodeLX (continued)
Jordan Crouse
jordan.crouse at amd.com
Wed Mar 12 11:08:48 PDT 2008
Bart - where do we stand on this? I just tried git HEAD on a VA1912wb
and we happily used the widescreen mode 1440x900 from DDC.
How can I recreate your breakage?
Jordan
On 29/02/08 13:35 -0500, Bart Trojanowski wrote:
> Hi,
>
> [[ I got busy for a few weeks and I am now returning to wide mode. ]]
>
> Earlier, Jordan presented a patch:
>
> http://lists.x.org/archives/xorg-driver-geode/2008-February/000211.html
>
> I tested it with on Gutsy (xorg-core 1.3.0) and found that it was
> skipping most of the modes in LXValidMode() because it was not in the
> Cimarron table. I then proposed a simple patch that showed improvement
> on my setup:
>
> http://lists.x.org/archives/xorg-driver-geode/2008-February/000218.html
>
> Today I setup the same hardware to run Hardy (xorg-core 1.4.0) and had
> the same experience. It seems that only the standard modes are
> available w/o my above change to Jordan's patch.
>
> With the above change I can confirm that Gutsy (1.3.0) and Hardy (1.4.0)
> work perfectly upto 1920x1200 on the ACER x243w.
>
> Through testing on various monitors I should also mention that Gadi and
> myself only had issues with ViewSonic. Recently, we tested on VX2000, a
> 24" wide screen, and a 22" wide screen. In all three cases we saw modes
> being set by the -amd driver were not accepted by the display, even
> though they were coming from DDC. For example: the VX2000 announces it
> supports 1400x1050, I can select it using xrandr, the driver sets it, X
> thinks it's in 1400x1050, but the LCD actually remains in native
> 1600x1200. If the mode is forced through xorg.conf, then the screen
> displayed "no signal". Again, so far only on ViewSonic VX and ViewSonic
> Optiquest series.
>
> I have one other observation to make about xorg-core 1.4.0 and GeodeLX.
> When I run ddcprobe, which ran fine with 1.3.0, it reports:
>
> # ddcprobe
> mmap /dev/zero: Permission denied
> VESA BIOS Extensions not detected.
>
> I don't really get it. Is it my setup, or is the second line to be
> taken seriously?
>
> Anyways, I'll continue debugging as per Jordan's suggestions from:
>
> * Jordan Crouse <jordan.crouse at amd.com> [080213 15:52]:
> > Presumably then, this would be the mode that X would ask for if nothing
> > else was specified. Why then 1280x1024, and then the DEFAULT one and
> > not the one flagged with driver? There is strangness here that needs to
> > be debugged.
>
> I am attaching the patch set as it looks right now... for anyone that
> may want to test it.
>
> -Bart
>
> --
> WebSig: http://www.jukie.net/~bart/sig/
> From 87e2b6a1304f01e1f4324cdfee9d4f2cb321b6be Mon Sep 17 00:00:00 2001
> From: Jordan Crouse <jordan.crouse at amd.com>
> Date: Wed, 13 Feb 2008 11:10:21 -0500
> Subject: [PATCH] fix-ddc.patch from Jordan
>
> ---
> src/amd_gx_driver.c | 9 +++++----
> src/amd_lx_driver.c | 21 +++++++++++++++------
> 2 files changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/src/amd_gx_driver.c b/src/amd_gx_driver.c
> index 177b111..ead492f 100644
> --- a/src/amd_gx_driver.c
> +++ b/src/amd_gx_driver.c
> @@ -783,7 +783,9 @@ GXSetVideoMode(ScrnInfoPtr pScrni, DisplayModePtr pMode)
>
> /* Only use the panel mode for built in modes */
>
> - if ((pMode->type && pMode->type != M_T_USERDEF) && pGeode->Panel) {
> + if ((pMode->type & M_T_BUILTIN) || (pMode->type & M_T_DEFAULT)
> + && pGeode->Panel) {
> +
> GFX(set_fixed_timings(pGeode->PanelX, pGeode->PanelY,
> pMode->CrtcHDisplay, pMode->CrtcVDisplay,
> pScrni->bitsPerPixel));
> @@ -1390,10 +1392,9 @@ GXValidMode(int scrnIndex, DisplayModePtr pMode, Bool Verbose, int flags)
> GeodeRec *pGeode = GEODEPTR(pScrni);
> int p, ret;
>
> - /* Not sure if this is an X bug or not - but on my current build,
> - * user defined modes pass a type of 0 */
> + /* Use the durango lookup for builtin or default modes only */
>
> - if (pMode->type && pMode->type != M_T_USERDEF) {
> + if ((pMode->type & M_T_BUILTIN) || (pMode->type & M_T_DEFAULT)) {
>
> if (pGeode->Panel) {
> if (pMode->CrtcHDisplay > pGeode->PanelX ||
> diff --git a/src/amd_lx_driver.c b/src/amd_lx_driver.c
> index 9abbd5f..c779ac1 100644
> --- a/src/amd_lx_driver.c
> +++ b/src/amd_lx_driver.c
> @@ -845,9 +845,10 @@ LXSetVideoMode(ScrnInfoPtr pScrni, DisplayModePtr pMode)
> lx_disable_dac_power(pScrni, DF_CRT_DISABLE);
> vg_set_compression_enable(0);
>
> - if (!pMode->type || pMode->type == M_T_USERDEF)
> - lx_set_custom_mode(pGeode, pMode, pScrni->bitsPerPixel);
> - else {
> + /* If the mode is a default one, then set the mode with the Cimarron
> + * tables */
> +
> + if ((pMode->type & M_T_BUILTIN) || (pMode->type & M_T_DEFAULT)) {
> if (pMode->Flags & V_NHSYNC)
> flags |= VG_MODEFLAG_NEG_HSYNC;
> if (pMode->Flags & V_NVSYNC)
> @@ -878,8 +879,14 @@ LXSetVideoMode(ScrnInfoPtr pScrni, DisplayModePtr pMode)
> pScrni->bitsPerPixel, GeodeGetRefreshRate(pMode),
> 0);
> }
> - }
> -
> + }
> + else {
> + /* For anything other then a default mode - use the passed in
> + * timings */
> +
> + lx_set_custom_mode(pGeode, pMode, pScrni->bitsPerPixel);
> + }
> +
> if (pGeode->Output & OUTPUT_PANEL)
> df_set_output_path((pGeode->Output & OUTPUT_CRT) ? DF_DISPLAY_CRT_FP : DF_DISPLAY_FP);
> else
> @@ -1386,7 +1393,9 @@ LXValidMode(int scrnIndex, DisplayModePtr pMode, Bool Verbose, int flags)
>
> memset(&vgQueryMode, 0, sizeof(vgQueryMode));
>
> - if (pMode->type && pMode->type != M_T_USERDEF) {
> + /* For builtin and default modes, try to look up the mode in Cimarron */
> +
> + if ((pMode->type & M_T_BUILTIN) || (pMode->type && M_T_DEFAULT)) {
>
> if (pGeode->Output & OUTPUT_PANEL) {
>
> --
> 1.5.3.7.1150.g149d432
>
>
> From ad44e2e9c10dea13b7bf8a4f5b73066c3f04eaf6 Mon Sep 17 00:00:00 2001
> From: Bart Trojanowski <bart at jukie.net>
> Date: Fri, 29 Feb 2008 13:30:16 -0500
> Subject: [PATCH] don't trust Cimarron checks in LXValidMode() checks for non-panel modes
>
> ---
> src/amd_lx_driver.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/src/amd_lx_driver.c b/src/amd_lx_driver.c
> index c779ac1..313b45d 100644
> --- a/src/amd_lx_driver.c
> +++ b/src/amd_lx_driver.c
> @@ -1420,7 +1420,7 @@ LXValidMode(int scrnIndex, DisplayModePtr pMode, Bool Verbose, int flags)
>
> ret = vg_get_display_mode_index(&vgQueryMode);
>
> - if (ret < 0)
> + if (pGeode->Output & OUTPUT_PANEL && ret < 0)
> return MODE_BAD;
> }
>
> --
> 1.5.3.7.1150.g149d432
>
--
Jordan Crouse
Systems Software Development Engineer
Advanced Micro Devices, Inc.
More information about the Xorg-driver-geode
mailing list