[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: