matroxfb dualhead driver ready for production...

From: Petr Vandrovec (VANDROVE@vc.cvut.cz)
Date: Fri Feb 18 2000 - 20:45:06 EST


Hi,
  I believe that I fixed all known bugs in driver for dualhead G400.
Patch is available at ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/
in two forms:
  (1) maven-for-linus.gz, which contains only code I intend to send to
      Linus on Monday
  (2) maven.gz (symlink to maven-000218-for-2.3.47-pre3.gz), which contains
      everything from patch above + some additional changes which allows
      you to interact with multiple heads better. These changes were
      refused by other fbdev people and there is some new scheme proposed,
      so they will not be sent to Linus (if you are interested, it is part
      of patch which touches drivers/video/fbmem.c & adds some constants &
      structs into include/linux/fb.h)
  I know that patch is large (500KB uncompressed), but it also splits
matroxfb.c from drivers/video into couple of files in drivers/video/matrox
directory.
  For real usage you should also download tool matroxset-0.3.tar.gz from
site above, it allows you to change secondary head output modes
(PAL/NTSC/monitor) and allows you to control connection matrix between
CRTC1&2 and both outputs.
  It is known that XFree SVGA 3.3.x does not cope with secondary head
very well. If you switch into X, XFree disables secondary head output :-(
Of course, you can use XFree FBDev driver. XFree SVGA driver from 3.9.17
looks like that it could work - but it does not recognize G400 chipset,
so I it does not work with precompiled XFree.

----
  There is still one open question and I'd like to hear from other peoples,
what they think.
  For almost year there is flying around fbdev API, which allows you to
determine whether VSYNC is active and other things related to position of
beam on screen. Currently I put that structure into fb.h and allocated
new ioctl number from fb.h range for it.
  Can I left this in fb.h (I asked last week on linux-fbdev, but received
no answer, except that userspace peoples like this API) or should I move
it into matroxfb.h?
----
  If you are curious how I choosed ioctl numbers for matroxfb, I also
maintain ncpfs, so I reassigned some from ncpfs to matroxfb :-)
  Driver contains support for DDC busses on all matroxes and specific
support for G400 dualhead, G400 singlehead and G200 TV. For G400 singlehead 
it creates two fbdevs and you can choose by matroxset, which one you want to 
see (in future, you could connect CRTC2 to DFP). I decided for doing this 
because of there is nothing accelerated driver can do with upper 16MB of 
videoram.
  For G200 TV, it should be possible to switch output to TV by using
matroxset -f /dev/fb/0 -o 1 2; matroxset -f /dev/fb/0 -m 3
(first turns TVOut into NTSC, second connects fb/0 into both outputs).
If you have G200 TV, please contact me privately if you are interested
in this driver (even if it does work for you, I need all reports for
this configuration).
  Driver currently guards all accesses to accelerator with spin_lock_irqsave,
it does not cause any problems here on my SMP PIII/450. If you do not
want it, #undef MATROXFB_USE_SPINLOCKS in 
drivers/video/matrox/matroxfb_base.h. I probably #undef this for Linus
release, as reentering really should not occur...
                                    Thanks,
                                                Petr Vandrovec
                                                vandrove@vc.cvut.cz
                                                
P.S.: If it does not work for you and you choosed modular setup, first make 
sure that you have loaded i2c-matroxfb, matroxfb_maven and matroxfb_crtc2.
P.P.S.: You must enable I2C & I2C bit-banging adapters in character devices 
menu (see help for G100/G200/G400 selection) to enable I2C & dualhead
features of driver.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:22 EST