Messages in this thread | | | Date | Thu, 9 Dec 1999 14:17:55 +0100 (MET) | From | Gabriel Paubert <> | Subject | Re: [linux-fbdev] Re: atyfb with 2.3.30 ond x86 |
| |
On Wed, 8 Dec 1999, Egbert Eich wrote:
> Jeff Garzik writes: > > Geert Uytterhoeven wrote: > > > Hmm, this means the card wasn't initialized at all. Looks like we'll have to > > > write our own memory probing code for platforms where only one video card is > > > initialized. On PPC, all ATI cards get initialized by Open Firmware. > > > > Another solution is to do a callback to a userspace program like x86emu, > > which can re-init the second card via BIOS. That's what XFree86 does. > > > > Personally I would rather avoid BIOS altogether... > > > For initializing it is still the safest!
I concur: I have a couple of PMC (PCI mezzanine cadrs) modules with S3 chips which I plug on my MVME boards (PPC). I could not find any code that would intialize them properly (bad to awful image quality) until I wrote a small 486 SX emulator which executes the Video BIOS init routine.
While many BIOS may have bugs, you can be fairly sure that the initialization routine is basically correct (otherwise you could not even see the Video BIOS copyright line properly).
Oh, and the emulator weighs in at 24 kB (code+data), it's small enough to actually embed it in the bootloader for these machines. It's actually quite slow (byte per byte decoding) but I don't care in this case where correctness is the only important point (and besides it spends most of the time in a waiting loop while displaying the copyright). Try to write a generic initialization routine for all (even S3 only) boards in existence in this space, plus the fact that the emulator worked right away on the second board I bought which had a different chip revision and a slightly different BIOS too. The main drawback is that it's PPC specific...
[In reference to an earlier thread about multiple heads and mmap problems] The amusing thing is that it may actually be easier to support mutiple heads on a non x86 machine: my emulator can actually put the real mode memory and video at any address in the virtual address space of a user mode process since all segment bases are computed as segment*16+a virtual base constant which can be changed between invocation of the emulator to keep several VM86 machines running (or simply keep different machine state structures with different virtual base addresses).
> I can only repeat myself: Graphic chipsets have so many > parameters for memory size, memory layout, memory timings > on notebooks: voltages, display properties bus types and > whatever you can think of.
Right...
Gabriel.
- 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/
| |