Bug#566490: xserver-xorg-video-newport: autodetection failing
Hi,
so we have actually 3 bugs here.
On Sat, Jan 23, 2010 at 15:52:47 +0100, Bernhard R. Link wrote:
> With no xorg.conf:
>
> | Primary device is not PCI
> | (==) Using default built-in configuration (12 lines)
> | (==) --- Start of built-in configuration ---
> | Section "Device"
> | Identifier "Builtin Default fbdev Device 0"
> | Driver "fbdev"
> | EndSection
> | Section "Screen"
> | Identifier "Builtin Default fbdev Screen 0"
> | Device "Builtin Default fbdev Device 0"
> | EndSection
> | Section "ServerLayout"
> | Identifier "Builtin Default Layout"
> | Screen "Builtin Default fbdev Screen 0"
> | EndSection
> | (==) --- End of built-in configuration ---
>
automatic selection of driver works only for pci and sbus, so some code
would have to be added to the server to make that work here.
> After adding an xorg.conf to use newport:
>
> | (II) NEWPORT(0): Creating default Display subsection in Screen section
> | "Default Screen Section" for depth/fbbpp 24/32
> | (==) NEWPORT(0): Depth 24, (==) framebuffer bpp 32
> | (==) NEWPORT(0): RGB weight 888
> | (==) NEWPORT(0): Default visual is TrueColor
> | (==) NEWPORT(0): Using gamma correction (1.0, 1.0, 1.0)
> | (--) NEWPORT(0): Newport Graphics Revisions: Board: 6, Rex3: B, Cmap: C, Xmap9: A
> | (--) NEWPORT(0): Newport has 8 bitplanes
> | (EE) NEWPORT(0): Display depth(24) > number of bitplanes on Newport board(8)
> | (II) UnloadModule: "newport"
> | (EE) Screen(s) found, but none have a usable configuration.
> |
> | Fatal server error:
> | no screens found
>
By default, the newport driver requests 24bit depth from the server.
Later, it probes the hardware and, if it only discovers 8 bitplanes, it
gives up. The easy fix is something like:
diff --git a/src/newport_driver.c b/src/newport_driver.c
index 6bd7c9f..f82bee1 100644
--- a/src/newport_driver.c
+++ b/src/newport_driver.c
@@ -280,10 +280,10 @@ NewportPreInit(ScrnInfoPtr pScrn, int flags)
pScrn->monitor = pScrn->confScreen->monitor;
#ifdef NEWPORT_USE32BPP
- if (!xf86SetDepthBpp(pScrn, 24, 32, 32, Support32bppFb))
+ if (!xf86SetDepthBpp(pScrn, 8, 0, 0, Support32bppFb))
return FALSE;
#else
- if (!xf86SetDepthBpp(pScrn, 24, 0, 0,
+ if (!xf86SetDepthBpp(pScrn, 8, 0, 0,
Support24bppFb | SupportConvert32to24 |
PreferConvert32to24 ))
return FALSE;
and requires explicit configuration to use 24bit depth on hw that
supports it. The better way would be to try to reorder hw probing and
xf86SetDepthBpp in NewportPreInit.
> After telling to use depth 8 in xorg.conf:
>
> | (II) NEWPORT(0): <default monitor>: Using default hsync range of 31.50-37.90 kHz
> | (II) NEWPORT(0): <default monitor>: Using default vrefresh range of 50.00-70.00 Hz
> | (WW) NEWPORT(0): Unable to estimate virtual size
> | (II) NEWPORT(0): Clock range: 10.00 to 300.00 MHz
[...]
> | (II) NEWPORT(0): Not using default mode "1280x1024" (hsync out of range)
[...]
> | (II) NEWPORT(0): Not using default mode "1280x1024" (hsync out of range)
[...]
> | (II) NEWPORT(0): Not using default mode "1280x1024" (hsync out of range)
[...]
> | (--) NEWPORT(0): Virtual size is 800x600 (pitch 800)
[...]
> | (EE) NEWPORT(0): Width = 800 and height = 600 is not supported by by this driver
> |
And this is the third bug, not sure how to fix that one… Maybe there's
a way for the driver to inject the mode it wants to use into the
server's mode pool?
Cheers,
Julien
Reply to: