Re: Calling VESA BIOS routines from kernel?

Egbert Eich (eich@hilbert.ikp.physik.tu-darmstadt.de)
Mon, 13 Dec 1999 11:40:06 +0100 (MET)


Adam J. Richter writes:
> Egbert Eich <eich@hilbert.ikp.physik.tu-darmstadt.de> writes:
>
> >Speaking for XFree86 we already read out DDC and I'm working on
> >the autoconfiguration stuff for 4.x (x==0?).
>
> I am familiar with your excellent code in the current 3.9.16
> XFree86 snapshot in xc/programs/Xserver/hw/ddc. I have seen it work
> on a number of hardware configurations. Thank you very much for
> writing it.
>
> I also appreciate the fact that you wrote it reasonably
> modularly, so that it can be adapted to parsing DDC information
> extracted from the VESA video BIOS. Having the X server talk to
> the hardware to read DDC information is the most direct approach
> and adds portability to running PC video cards on non-x86 platforms,
> so I am glad that you wrote that too, but it will probably take at
> least another year for developers to write and integrate DDC controls
> for all of the different video cards for XFree86 (currently, 3.9.16
> only supports DDC on some S3 chips, right?). So, I think that using

No, almost all chipsets have DDC support meanwhile. Somethimes we
are considered slow, but we are not all that bad.

> your code to extract the data from the VESA BIOS and generating
> configuration files for X and svgalib from that will be more widely
> applicable in the meantime.

That's in the code now, too. You can use VESA bios to read DDC information.
However since not all bioses support VBE 2.0 one sometimes has to go
thru the HW directly. But you will find code for that in the 3.9.17
snapshot to be released around Xmas.
>
> I am glad to hear that it is possible to call the VESA BIOS
> extensions from Linux, and it is even better news that it apparently
> does not require additional kernel modifications. My intention in
> using the kernel was only to do what I thought had to be done
> in the kernel (do strange things with interrupts and descriptor
> tables, etc.) and pass back the raw data. If this lrmi package can
> do it entirely from user mode, that is better.
>
> By the way, my efforts to track down your softbooter
> software have turned up nothing and my efforts to track down
> lrmi have turned up a few different versions, but none that I am
> sure is the latest official version.
> http://userweb.interactive.net/~joshv/lrmi-0.6.tar.gz is the closest
> thing that I see to an official version, but I see that svgalib-1.4.0
> includes a modified version of this and ddcprobe in RedHat-6.1
> and Spiro (inherited from RedHat?) include files from it as
> well. I would greatly appreciate a URL's for the distribution
> points of either of these packages and would be happy to offer
> FTP space if that would help.

I don't consider my softbooter ready for the public, yet. It
doesn't even accept arguments so you have to modify
the header and recompile. Therefor I haven't made it publically
available, yet. So far it's only on the XFree86 developers ftp
site.
I can give you a version however right now I'm working on
it so it is a total mess.
However it's a standlolone tool. What you need is a library like
lrmi. The version you've got is the same I have. From there to
reading out DDC is really a short step.
You probably should create a DDC library which can sit on top
of lrmi. (Library functions to do some other VBE operations would
be nice to have, too.) If later I turn my softbooter into a library
to would be easy to adapt.

>
> Thanks again for writing the DDC parsing and control code.
> I hope to get this stuff integrated into our boot time hardware
> autoconfiguration process
> (ftp://ftp.yggdrasil.com/private/adam/pnpboards-beta-2.tar.gz)
> to support automatic adaptation to a monitor upgrade.
>
You're welcome. Feel free to use my code. What is missing however is
a parser for EDID2.

Regards,
Egbert.

-
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/