Console patches

Martin Mares (mj@albireo.ucw.cz)
Fri, 17 Jul 1998 15:44:55 +0200


Hello, world!\n

I've just sent Linus a huge pile of console diffs to Linus. Those of you
who are eager to test them, look at ftp://atrey.karlin.mff.cuni.cz/pub/linux/patches/l-con90.gz.

Here are lots of other bugfixes to the console. There are still some more
bugs listed in my TODO list, but most of them are in fbcon and other non-vga
parts, so the basic PC console seems to be almost code-frozen now :)

Have a nice day
Martin

Summary of changes:
~~~~~~~~~~~~~~~~~~~

[mm] Martin Mares
[as] Andreas Schwab
[jj] Jakub Jelinek
[ed] Eddie C. Dost
[ge] Geert Uytterhoeven
[pm] Paul Mackerras

console:
Before trying to switch consoles, clear selection. [mm]

Removed extraneous graphics mode test in con_flush_chars() (set_cursor()
does it itself). [mm]

When calling do_blank_screen(1) (which means we're entering graphics
mode), save screen contents, call sw->con_blank(-1) and set new origin.
This is needed to prepare the screen for graphics apps on the PC. [mm]

When loading palette in set_palette, call sw->con_set_palette with
consw of current console, not with conswitchp. [mm]

Now distinguishing between IS_FG (currcons is fg_console) and IS_VISIBLE
(currcons is a visible console). Changed few places to use IS_VISIBLE. [mm]

Added simple multi-head support. For each display we have new variable
containing a pointer to currently visible console and struct vc_data
contains a new field pointing to that pointer. IS_VISIBLE now just compares
*vc_data->display_fg == vc_data, IS_FG remains as it was. Unless the
low-level drivers set it otherwise, it gets set automatically to point
to master_display_fg. [mm]

Also rewrote update_screen to handle switching between displays and to call
set_origin only if appropriate. My vgacon+fbcon works well now even with
graphics, only blanking need some more tweaking (just now only the
fg_console display gets blanked). [mm]

con_write: Hide cursor _after_ verify_area succeeds. [mm]

consw->con_blank now gets called with vc_data of fg_console (I need it
for reloading of palette when unblanking vgacon). [mm]

Move declarations of console_getmode etc. from vt_kern.h
to vc_ioctl.h, since they are only use for PMAC_CONSOLE and
Xpmac compatibility. [pm]

compatcon:
Removed as it doesn't work and it's no longer used. [mm]

vgacon:
Implemented deinit function which just sets display origin to top of
video ram. [mm]

Moved take_over_console to console.c and make it possible to call it
for taking over a specified range of consoles and optionally not setting
the new console driver as default. This function will be used in all
secondary console drivers (mdacon etc.) and driver modules. [mm]

fbcon+vesafb and vgacon are now able to co-exist (i.e., the kernel initializes
either vgacon xor vesafb depending on video mode chosen during boot).
If dummycon is enabled (which happens always is we have vesafb compiled in)
and vgacon doesn't find working videocard in text mode, it switches to
dummycon instead, so that the console subsystem gets initialized and fbcon
can take over later. [mm]

Fixed problems with switches to KD_GRAPHICS. We now remember we're in gfx mode
and reject in-vram origin setting attempts as well as attempts to scroll
by changing the origin. [mm]

Added full support for blanking to vgacon: [mm]

o On VGA we blank by setting the palette to all black. Scrollback contents
survives blanking.
o On other cards we just clear the videoram and restore it from the
screen buffer when unblanking. Scrollback dies. (The old code did lots
of tricks to preserve scrollback on EGA, but I think it isn't worth
the effort.)
o Full VESA blanking supported as well (copied from vesa_blank.c in old
kernels).

For now vgacon seems to be almost complete except for cursor shape bug
workarounds, monochrome attributes and few other speedups.

fbcon:
When toggling the cursor in interrupt, make sure fg_console is a real
frame buffer display before trying to call its revc routine. [mm]

Cursor fixes [as]

Handle arbitrary fontwidth & fontheights. Each display_switch provides
a bitmask, which fontwidths it supports. E.g. creatorfb & cgsixfb support
fontwidth 1-16 inclusive, fbcon-cfb8 fontwidths 4,8,12,16, fbcon-mac
fontwidths 1-8, most others just 8. [jj]

fb drivers:
fbgen is not compiled in by default since only skeletonfb uses it now. [mm]

atafb panic fixes [as]

Put the MacOS video mode database in a separate file (macmodes.c) so it
an be shared by all drivers. [gu]

chipsfb; Added [pm]

chipsfb: Add support for 16 bpp on the PowerBook 3400 (Mike Lockwood)

atyfb,offb,S3triofb: Speed up the console by using SCROLL_YREDRAW if there's
no hardware acceleration. [gu]

sysrq:
Make it compile without CONFIG_VT (still useful to compile sysrq code without
CONFIG_VT if you have a serial console). [mm]

vesafb:
Added declaration of vesafb_sw, so it compiles. [mm]

Shuffled setting of display->var, so it even works. Grr, two hours of
debugging until I found this one. [mm]

Cleaned up processing of display parameters. The original code was inspired
by skeletonfb/fbgen and contained lots of do-nothing and one-line functions. [mm]

promcon:
Implemented [jj,ed]

promfb:
Killed [ed]

-
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.altern.org/andrebalsa/doc/lkml-faq.html