Index:
[thread]
[date]
[subject]
[author]
From: Brian Julin <bri@forcade.calyx.net>
To : ggi-develop@eskimo.com
Date: Thu, 6 Aug 1998 23:46:18 -0400 (EDT)
vga kgicon problem summary
Woohoo! (sorta)
I finally have a working kgicon on a sunsite kernel (2.1.114).
And I'm writing this e-mail on it.
These are the issues I observed and some of the things I had to
do to get things working.
First, I had to run in 1bpp mode; to do this I had to set the
hardcoded default in fbcon-kgi.c. It's not horrible -- it
underlines bold text.
Using 8-bit mode as a default results in real big characters interlaced
with each other. Probably because when the VGA driver gets a request
for anything bigger than 320x200 it uses mode X, and then fbcon tries
to draw on this as though it's a linear-8 buffer.
Using 4 bit seems to lock the machine solid. Not even Magic SysRq works.
Colored vertical stripes are displayed. Note even 4-bit needs special
support in 640x400, as the plane masks need to be changed. Do I remember
seeing fbcon support for vga 4bpp at one point? But if it
selects a regular planar renderer... also could be the accel module
registering a real large area (Andy's MMIO cleverness for
letting the libGGI driver select multiple bitplanes via segfault.)
Noone has fixed the mode.fb being a physical address problem --
vga_text16.inc can probably be removed for now to accomplish this.
until such why not just kgifb_videovirt = bus_to_virt(kgifb_videophys)??
If you want the vga driver to work this is the way I did it.
2 suggestions to fix:
1) Unless there is a fbdev_mda running, use A0000-Bffff -- this gives you
a 128K window. Use 4bpp as a default mode (all drivers should IMO,
it's the most widely supportable color mode.) Use 640x200 and
8x8 characters and you fit in a linear window. However the vga chip will
plane out at 64k -- unless anyone can find a vga standard way to
force it to use 32k planes then we get a 2bpp mode with fbcon
being under the impression it's 4bpp.
But it's color and it works mostly, and the older svga chipsets can often
plane at 32k just by _setting_ the available memory bits to tell the
chipset it has 128kb, so on those drivers you get 4bpp with a simple
alteration in set_mode that won't effect libggi when used with a
default planar-4. When mdafb is present, hack mem_claim_region to
fail and the driver can be coded to pass a 1bpp default mode.
The 2bpp way requires the kgi driver to set the pallette in
all 16 locations with a repeated 4 color pallette.
2) The real fix is to allow the kgi driver to offer a scroller via
kgi_text_operations and write a framebuffer driver that uses the kgi
scroller's framebuffer operations. What I'm suggesting is a move to
the Degas drivers, as this also I believe will make the mode.fb trouble
go away; they use virtual addresses in the extended mode.fb.* struct. The
only problem here is a few of them don't have complete text-->dpp/bpp
fixes, but a few of us had that fixed in our own private
sources already.
Last problem:
The clean target should not fail out if a driver subdirectory
has a broken makefile; I fixed a problem today with my new
makefile experiments where the WD driver prevented build.
It should hit all the subdirectories, but tolerate failures
with a warning.
P.S. For some reason 2.1.114 will hang my ethernet card (ISA 3c509);
I think this is avoidable by pinging something right after
boot; but that's just a guess -- time will tell.
--
Brian S. Julin
Index:
[thread]
[date]
[subject]
[author]