History log of /freebsd-10.0-release/sys/dev/fb/vesa.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 259065 07-Dec-2013 gjb

- Copy stable/10 (r259064) to releng/10.0 as part of the
10.0-RELEASE cycle.
- Update __FreeBSD_version [1]
- Set branch name to -RC1

[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so
start releng/10.0 at '100' so the branch is started with
a value ending in zero.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 255004 28-Aug-2013 jkim

Reduce diff against stable/9 slightly.


# 254999 28-Aug-2013 jkim

Do not save/restore video memory if we are not using linear frame buffer.
Note this partially revert r233896.


# 254998 28-Aug-2013 jkim

Make sure to free stale buffer before allocating new one for safety.


# 254997 28-Aug-2013 jkim

Avoid unnecessary signedness conversion.


# 248799 27-Mar-2013 jkim

Limit the amount of video memory we map for the driver to the maximum value.
This basically restores the spirit of r203535, which was partially reverted
in r205557, while we still map fixed amount to work around transient issues
we experienced with r203535.

Prodded by: avg
Tested by: avg
MFC after: 1 week


# 233896 04-Apr-2012 jkim

Save and restore VGA display memory between suspend and resume.


# 233894 04-Apr-2012 jkim

Do not copy VESA state buffer if the VBE call has failed for any reason.
Do not unnecessarily clear the state buffer before calling the function.


# 233187 19-Mar-2012 jkim

Do not reuse the previous address when restoring linear frame buffer.


# 233056 16-Mar-2012 jkim

Save and restore linear frame buffer between suspend and resume.

MFC after: 1 week


# 233054 16-Mar-2012 jkim

Remove unnecessary static variable initializations and duplicate codes.
Consistently use bcopy(9) over memcpy(9).


# 233042 16-Mar-2012 jkim

Do not unnecessarily clear display memory when switching modes.

MFC after: 3 days


# 232069 23-Feb-2012 jkim

If the VBE implementation does not support save/restore function, defer to
VGA methods. Unconditionally reset the VESA adapter before restoring state.


# 232065 23-Feb-2012 jkim

Update my copyright date.


# 232063 23-Feb-2012 jkim

Probe supported states for save/restore function. Some VBE implementation
refuses to save/restore states if an unsupported bit is set.


# 232061 23-Feb-2012 jkim

Fix a typo introduced in r231843.


# 231843 16-Feb-2012 jkim

Set the initial mode for the adapter after executing VESA BIOS POST.
There is no need to set initial mode for BIOS.


# 231842 16-Feb-2012 jkim

Make sure the VESA mode number is between 256 and 511 inclusive.


# 227309 07-Nov-2011 ed

Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.

The SYSCTL_NODE macro defines a list that stores all child-elements of
that node. If there's no SYSCTL_DECL macro anywhere else, there's no
reason why it shouldn't be static.


# 212580 13-Sep-2010 jkim

Fix segment:offset calculation of interrupt vector for relocated video BIOS
when the original offset is bigger than size of one page. X86BIOS macros
cannot be used here because it is assumed address is only linear in a page.

Tested by: netchild


# 212154 02-Sep-2010 jkim

Disable video ROM shadowing by default as I originally intended. I found
a case where video ROM for an IGP is too tightly coupled with system BIOS
to get relocated.


# 212070 31-Aug-2010 jkim

Make sure the interrupt entry point is within the video ROM range. We must
not change interrupt vector if it is not pointing the ROM itself. Actually,
we just fail shadowing altogether if that is the case because the shadowed
copy will be useless for sure and POST may not be relocatable or useful.
While I'm here, fix a debugging message under bootverbose, really. r211829
fixed one case but broke another. Mea Culpa.


# 211829 25-Aug-2010 jkim

Fix a debugging message under bootverbose. This address is not linear.


# 211827 25-Aug-2010 jkim

Add an experimental feature to shadow video BIOS. Long ago, this trick was
supported by many BIOSes to improve performance of VESA BIOS calls for real
mode OSes but it is not our intention here. However, this may help some
platforms where the video ROMs are inaccessible after suspend, for example.
Note it may consume up to 64K bytes of contiguous memory depending on video
controller model when it is enabled. This feature can be disabled by
setting zero to 'debug.vesa.shadow_rom' loader tunable via loader(8) or
loader.conf(5). The default is 1 (enabled), for now.


# 210994 07-Aug-2010 jkim

Protect shared palette and state buffer with a mutex. Remove defunct
spltty() calls while I am here.


# 210017 13-Jul-2010 jkim

Initialize a variable before its use.


# 210016 13-Jul-2010 jkim

Preallocate buffers for palette and state. Do not save DAC registers as
we reset DAC mode and restore palette data while we are resuming always.


# 209740 06-Jul-2010 jkim

Plug a possible memory leak.

Submitted by: Yamagi Burmeister (lists at yamagi dot org)


# 209737 06-Jul-2010 jkim

Fix a possible null pointer dereference. A patch for -STABLE was

Submitted by: Yamagi Burmeister (lists at yamagi dot org)


# 209491 23-Jun-2010 jkim

Use M_WAITOK for VESA BIOS initialization consistently.


# 209472 23-Jun-2010 jkim

Let x86bios_alloc() pass contigmalloc(9) flags. Use it to set M_WAITOK
from VESA BIOS initialization. All other malloc(9) uses in the function is
blocking any way.


# 208279 18-May-2010 jkim

Restore the previous VESA mode after BIOS POST, just in case.


# 208276 18-May-2010 jkim

Remove unnecessary pointer increment. A wrong pointer may be passed to
free(9) and it can cause kernel panic when there are multiple graphics
controllers in the system.

Tested by: Brandon Gooch (jamesbrandongooch at gmail dot com)
MFC after: 3 days


# 206384 07-Apr-2010 jkim

Allocate memory for VBE info block with malloc(9), not as static local.


# 205653 25-Mar-2010 jkim

Do not penalize correct or correctable VESA mode tables by calling another
VBE function. Most problems should be corrected by the mode table sanity
check and we only need the paranoid in extremely rare cases.


# 205604 24-Mar-2010 jkim

Teach VGA framebuffer about 8-bit palette format for VESA.


# 205566 23-Mar-2010 jkim

Add my copyright here. It seems I have contributed enough code. :-)


# 205564 23-Mar-2010 jkim

Be extremely careful when we determine bytes per scan line information.
First, we compare mode table data against minimum value. If the mode table
does not make sense, we set the minimum in the mode info. When we actually
set the mode, we try VESA BIOS function and compare it against the previous
value. If it makes more sense, update the information.


# 205558 23-Mar-2010 jkim

Fall back to VGA palette functions if VESA function failed and DAC is still
in 6-bit mode. Although we have to check non-VGA compatibility bit here,
it seems there are too many broken VESA BIOSes out to rely on it.


# 205557 23-Mar-2010 jkim

Map entire video memory again. This is a partial backout of r203535.
Although we do not use them all directly, it seems VGA render may access
unmapped memory region and cause kernel panic.


# 204265 23-Feb-2010 jkim

Yet another attempt to make palette loading more safer:

- Add a separate palette data for 8-bit DAC mode when SC_PIXEL_MODE is set
and fill it up with default gray-scale palette data for text. Now we don't
have to set `hint.sc.0.vesa_mode' to get the default palette data.
- Add a new adapter flag, V_ADP_DAC8 to track whether the controller is
using 8-bit palette format and load correct palette when switching modes.
- Set 8-bit DAC mode only for non-VGA compatible graphics mode.


# 204236 22-Feb-2010 jkim

Re-add accidentally removed pixel format for direct memory model.


# 203535 05-Feb-2010 jkim

Map and report actual video memory we need.


# 203530 05-Feb-2010 jkim

Replace some homegrown functions with better/correct ones.


# 203455 03-Feb-2010 jkim

Remove dead code and fix style(9) bugs.


# 203453 03-Feb-2010 jkim

Use bytes per scan line from mode table. The previous implementation did
not reflect actual number of bytes when it was not exactly width * bpp * 8.


# 203451 03-Feb-2010 jkim

Correct virtual address of frame buffer for non-linear mode.

Reported by: Marc UBM Bocklet (ubm dot freebsd at googlemail dot com)


# 203078 27-Jan-2010 jkim

Use VESA palette load/save functions if VESA BIOS says the current palette
format is higher than 6-bit instead of relying VGA compatibility flag.
This fixes palette problem of NVIDIA GeForce 6600. Reduce code differences
between palette load/save functions while we are here.

Tested by: danfe


# 201223 29-Dec-2009 rnoland

Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.

This replaces d_mmap() with the d_mmap2() implementation and also
changes the type of offset to vm_ooffset_t.

Purge d_mmap2().

All driver modules will need to be rebuilt since D_VERSION is also
bumped.

Reviewed by: jhb@
MFC after: Not in this lifetime...


# 199230 12-Nov-2009 jkim

- Remove a redundant check for dpms(4).
- Test a cheaper function first.


# 198964 05-Nov-2009 jkim

Save/restore VGA state from vga_pci.c instead of relying on vga_isa.c.
It was not working because we were saving its state after the device was
powered down. Simplify vesa_load_state() as the culprit is fixed now.


# 198911 04-Nov-2009 jkim

Do not probe video mode if we are not going to use it.


# 198867 03-Nov-2009 jkim

Restore color palette format if we reset video mode.


# 198858 03-Nov-2009 jkim

Fix VESA color palette corruption:

- VBE 3.0 says palette format resets to 6-bit mode when video mode changes.
We simply set 8-bit mode when we switch modes if the adapter supports it.
- VBE 3.0 also says if the mode is not VGA compatible, we must use VBE
function to save/restore palette. Otherwise, VGA function may be used.
Thus, reinstate the save/load palette functions only for non-VGA compatible
modes regardless of its palette format.
- Let vesa(4) set VESA modes even if vga(4) claims to support it.
- Reset default palette if VESA pixel mode is set initially.
- Fix more style nits.


# 198423 23-Oct-2009 jkim

Remove a redundant byte swapping in the previous commit.


# 198419 23-Oct-2009 jkim

- When we restore VESA state, try BIOS POST earlier. VESA restore state
function may not work properly if we don't. Turn off hardware cursor as
vesa_set_mode() does.
- Add VBE 3.0 specific fields in VESA mode structure and pack it. Note
the padding is 190 bytes although VBE 3.0 says 189 bytes. It must be wrong
because the size of structure becomes 255 bytes and the specification says
it must be 256 bytes in total. In fact, an example code in the spec. does
it right, though. While we are at it, fix some i386-isms.
- Remove state buffer size limitation. It is no longer necessary since
sys/compat/x86bios/x86bios.c r198251.
- Move int 0x10 vector test into vesa_bios_post() as we always do it anyway.


# 198251 19-Oct-2009 jkim

Rewrite x86bios and update its dependent drivers.

- Do not map entire real mode memory (1MB). Instead, we map IVT/BDA and
ROM area separately. Most notably, ROM area is mapped as device memory
(uncacheable) as it should be. User memory is dynamically allocated and
free'ed with contigmalloc(9) and contigfree(9). Remove now redundant and
potentially dangerous x86bios_alloc.c. If this emulator ever grows to
support non-PC hardware, we may implement it with rman(9) later.
- Move all host-specific initializations from x86emu_util.c to x86bios.c and
remove now unnecessary x86emu_util.c. Currently, non-PC hardware is not
supported. We may use bus_space(9) later when the KPI is fixed.
- Replace all bzero() calls for emulated registers with more obviously named
x86bios_init_regs(). This function also initializes DS and SS properly.
- Add x86bios_get_intr(). This function checks if the interrupt vector is
available for the platform. It is not necessary for PC-compatible hardware
but it may be needed later. ;-)
- Do not try turning off monitor if DPMS does not support the state.
- Allocate stable memory for VESA OEM strings instead of just holding
pointers to them. They may or may not be accessible always. Fix a memory
leak of video mode table while I am here.
- Add (experimental) BIOS POST call for vesa(4). This function calls VGA
BIOS POST code from the current VGA option ROM. Some video controllers
cannot save and restore the state properly even if it is claimed to be
supported. Usually the symptom is blank display after resuming from suspend
state. If the video mode does not match the previous mode after restoring,
we try BIOS POST and force the known good initial state. Some magic was
taken from NetBSD (and it was taken from vbetool, I believe.)
- Add a loader tunable for vgapci(4) to give a hint to dpms(4) and vesa(4)
to identify who owns the VESA BIOS. This is very useful for multi-display
adapter setup. By default, the POST video controller is automatically
probed and the tunable "hw.pci.default_vgapci_unit" is set to corresponding
vgapci unit number. You may override it from loader but it is very unlikely
to be necessary. Unfortunately only AGP/PCI/PCI-E controllers can be
matched because ISA controller does not have necessary device IDs.
- Fix a long standing bug in state save/restore function. The state buffer
pointer should be ES:BX, not ES:DI according to VBE 3.0. If it ever worked,
that's because BX was always zero. :-)
- Clean up register initializations more clearer per VBE 3.0.
- Fix a lot of style issues with vesa(4).


# 197496 25-Sep-2009 jkim

Reject some VESA graphics modes if the controller does not have enough
memory to support them. Some adapters have expansible memory slots but
video mode table is static. In this case, unusable modes may be reported.

Submitted by: paradox (ddkprog yahoo com) (initial patch)


# 197478 25-Sep-2009 delphij

Fix LINT build.


# 197468 24-Sep-2009 jkim

Some broken VESA BIOSes, e.g., IBM T23, return wrong value from
vesa_bios_get_line_length() in graphics mode. Always calculate the value
from known video info instead.

Submitted by: paradox (ddkprog yahoo com)


# 197466 24-Sep-2009 jkim

- Use FreeBSD function naming convention.
- Change x86biosCall() to more appropriate x86bios_intr().[1]

Discussed with: delphij, paradox (ddkprog yahoo com)
Submitted by: paradox (ddkprog yahoo com)[1]


# 197444 23-Sep-2009 jkim

Move sys/dev/x86bios to sys/compat/x86bios.

It may not be optimal but it is clearly better than the old place.

OK'ed by: delphij, paradox (ddkprog yahoo com)


# 197424 23-Sep-2009 delphij

Initialize registers to zero before calling the interrupt handlers inside
emulator. This fixes VESA related freeze observed on some systems.

Submitted by: paradox <ddkprog yahoo com>


# 197387 21-Sep-2009 delphij

Style(9) fixes.

Submitted by: swell.k at gmail.com


# 197383 21-Sep-2009 delphij

Collapase interrupt supporting functions to a new module, and switch from
x86emu to this new module.

This changeset also brings a fix for bugs introduced with the initial
x86emu commit, which prevents the user from using some display mode or
cause instant reboots during mode switch.

Submitted by: paradox <ddkprog yahoo com>


# 197323 19-Sep-2009 jkim

Change cache attribute for VESA frame buffer from UC to write-combining.
This improves scrolling speed for high resolution graphics mode console.


# 197025 09-Sep-2009 delphij

- Teach vesa(4) and dpms(4) about x86emu. [1]
- Add vesa kernel options for amd64.
- Connect libvgl library and splash kernel modules to amd64 build.
- Connect manual page dpms(4) to amd64 build.
- Remove old vesa/dpms files.

Submitted by: paradox <ddkprog yahoo com> [1], swell k at gmail.com
(with some minor tweaks)


# 197022 09-Sep-2009 delphij

Copy the following files to new places, a subsequent commit would remove
them from the old place. This commit necessary so that the tree would not
enter a broken state.

sys/i386/isa/vesa.c -> dev/fb/vesa.c
sys/i386/include/pc/vesa.h -> dev/fb/vesa.h
sys/i386/isa/dpms.c -> dev/dpms/dpms.c


# 196704 31-Aug-2009 delphij

Partially revert 196524: this part of change should not be committed as
part of the changeset - it's an unrelated one.

Reported by: danfe


# 196543 25-Aug-2009 glebius

Fix build broken in r196524.


# 196524 24-Aug-2009 delphij

Fix VESA modes and allow 8bit depth modes.

PR: i386/124902
Submitted by: paradox <ddkprog yahoo com>
MFC after: 2 months


# 193790 08-Jun-2009 delphij

Add line width calculations for 15/16 and 24/32 bit modes in case
the "Get Scan Line Length" function fails, as it does in Parallels
(in Version 2.2, Build 2112 at least).

PR: i386/127367
Obtained from: DragonFly
Submitted by: Pedro Giffuni
MFC after: 1 month


# 177626 26-Mar-2008 brueffer

Fix some "in in" typos in comments.

PR: 121490
Submitted by: Anatoly Borodin <anatoly.borodin@gmail.com>
Approved by: rwatson (mentor), jkoshy
MFC after: 3 days


# 153110 05-Dec-2005 ru

Fix -Wundef warnings found when compiling i386 LINT, GENERIC and
custom kernels.


# 150686 28-Sep-2005 marius

Add a font width argument to vi_load_font_t, vi_save_font_t and vi_putm_t
and do some preparations for handling 12x22 fonts (currently lots of code
implies and/or hardcodes a font width of 8 pixels). This will be required
on sparc64 which uses a default font size of 12x22 in order to add font
loading and saving support as well as to use a syscons(4)-supplied mouse
pointer image.
This API breakage is committed now so it can be MFC'ed in time for 6.0
and later on upcoming framebuffer drivers destined for use on sparc64
and which are expected to rely on using font loading internally and on
a syscons(4)-supplied mouse pointer image can be easily MFC'ed to
RELENG_6 rather than requiring a backport.

Tested on: i386, sparc64, make universe
MFC after: 1 week


# 146878 01-Jun-2005 jhb

Allow the VESA code to handle devices that don't claim to be VGA devices.
This fixes VESA support when running under vmware.

PR: i386/81445
Submitted by: Jia-Shiun Li jiashiun at gmail dot com
MFC after: 1 week


# 143118 03-Mar-2005 iedowse

Allocate and map a 12k data buffer such that it is contiguous in
both the kernel and vm86 virtual address spaces. Use this to increase
the maximum VESA save state size we can handle.


# 142958 01-Mar-2005 iedowse

Reduce the maximum supported save state size to 4k, as the 8k limit
was not implemented correctly and needs further work.


# 142830 28-Feb-2005 iedowse

Add a missing bcopy() to make saving the VESA state actually work.
Also save the DAC state, increase the maximum save state size from
4k to 8k, and refuse to save the VESA state if the BIOS reports it
is larger than the maximum size we can handle.

It doesn't appear that anything currently uses this code, but it
turns out to be capable of restoring some notebook displays to a
working state after a suspend-resume cycle.


# 132199 15-Jul-2004 phk

Do a pass over all modules in the kernel and make them return EOPNOTSUPP
for unknown events.

A number of modules return EINVAL in this instance, and I have left
those alone for now and instead taught MOD_QUIESCE to accept this
as "didn't do anything".


# 131398 01-Jul-2004 jhb

Trim a few things from the dmesg output and stick them under bootverbose to
cut down on the clutter including PCI interrupt routing, MTRR, pcibios,
etc.

Discussed with: USENIX Cabal


# 130312 10-Jun-2004 jhb

Remove atdevbase and replace it's remaining uses with direct references to
KERNBASE instead.


# 117710 17-Jul-2003 robert

Make the 80x60, 132x25, 132x43, 132x50, and 132x60 VESA text modes
work when using a graphics chipset which identifies itself as
`VIA CLE266', used in some VIA EPIA boards. Two values need to be
patched in the VESA mode information structure: the widths of the modes
mentioned above are encoded in a format which was unknown to the VESA
module (and to my copy of the VBE spec.) whereas the window memory
segment values seem to be just incorrect.

I tested this on a VIA EPIA-M9000 and -M10000.


# 115703 02-Jun-2003 obrien

Use __FBSDID().


# 113130 05-Apr-2003 cognet

Use vm_paddr_t instead of vm_offset_t for the paddr parameter of vesa_mmap.


# 111462 25-Feb-2003 mux

Cleanup of the d_mmap_t interface.

- Get rid of the useless atop() / pmap_phys_address() detour. The
device mmap handlers must now give back the physical address
without atop()'ing it.
- Don't borrow the physical address of the mapping in the returned
int. Now we properly pass a vm_offset_t * and expect it to be
filled by the mmap handler when the mapping was successful. The
mmap handler must now return 0 when successful, any other value
is considered as an error. Previously, returning -1 was the only
way to fail. This change thus accidentally fixes some devices
which were bogusly returning errno constants which would have been
considered as addresses by the device pager.
- Garbage collect the poorly named pmap_phys_address() now that it's
no longer used.
- Convert all the d_mmap_t consumers to the new API.

I'm still not sure wheter we need a __FreeBSD_version bump for this,
since and we didn't guarantee API/ABI stability until 5.1-RELEASE.

Discussed with: alc, phk, jake
Reviewed by: peter
Compile-tested on: LINT (i386), GENERIC (alpha and sparc64)
Runtime-tested on: i386


# 111119 19-Feb-2003 imp

Back out M_* changes, per decision of the TRB.

Approved by: trb


# 109623 21-Jan-2003 alfred

Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.


# 108284 26-Dec-2002 davidxu

Set %bx register instead of %di register, see vbe3.0, page 45.


# 101557 09-Aug-2002 rwatson

Add additional range checks for copyout targets.

Submitted by: Silvio Cesare <silvio@qualys.com>


# 83649 18-Sep-2001 julian

Remove accidentally included debug stuff.

Noticed by: jhb


# 83366 12-Sep-2001 julian

KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after: ha ha ha ha


# 67816 28-Oct-2000 jhb

Don't ignore VESA modes that have the NON-VGA bit set. All of the SVGA
graphical modes on some systems have this bit set causing our VESA code
to ignore them.


# 66710 05-Oct-2000 jhb

- Include opt_vesa.h in vesa.c so that the VESA_DEBUG option is actually
propagated from the kernel config file to the source.
- Add some more debug messages to list each mode that is rejected or found.


# 56836 29-Jan-2000 peter

Use config's conditional compilation rather than using #ifdefs that make
modular compilation harder. I'm doing this because people seem to like
cut/pasting examples of bad practices in existing code.


# 54258 07-Dec-1999 yokota

Fix the ioctl CONS_FINDMODE and its underlying subroutine
xxx_query_mode() in the vga and vesa drivers.

- xxx_query_mode() returns 0 (success) and a positive error number.
- Copy mode information on success.
- Remove redundant structure copy.

The bug first found in -STABLE by jmg.


# 50792 02-Sep-1999 yokota

Do not call the VESA BIOS if the current video mode is not one of
the VESA modes.


# 50477 27-Aug-1999 peter

$Id$ -> $FreeBSD$


# 50446 27-Aug-1999 yokota

- Set the correct value to va_line_width while in the ioctl
FBIO_SETLINEWIDTH.


# 50445 27-Aug-1999 yokota

- Ouch! Do not assume the VESA BIOS will preserve the upper 16 bits
of EAX and EBX.


# 48399 01-Jul-1999 peter

Fix some warnings, unused functions etc.


# 48104 22-Jun-1999 yokota

The second phase of syscons reorganization.

- Split syscons source code into manageable chunks and reorganize
some of complicated functions.

- Many static variables are moved to the softc structure.

- Added a new key function, PREV. When this key is pressed, the vty
immediately before the current vty will become foreground. Analogue
to PREV, which is usually assigned to the PrntScrn key.
PR: kern/10113
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>

- Modified the kernel console input function sccngetc() so that it
handles function keys properly.

- Reorganized the screen update routine.

- VT switching code is reorganized. It now should be slightly more
robust than before.

- Added the DEVICE_RESUME function so that syscons no longer hooks the
APM resume event directly.

- New kernel configuration options: SC_NO_CUTPASTE, SC_NO_FONT_LOADING,
SC_NO_HISTORY and SC_NO_SYSMOUSE.
Various parts of syscons can be omitted so that the kernel size is
reduced.

SC_PIXEL_MODE
Made the VESA 800x600 mode an option, rather than a standard part of
syscons.

SC_DISABLE_DDBKEY
Disables the `debug' key combination.

SC_ALT_MOUSE_IMAGE
Inverse the character cell at the mouse cursor position in the text
console, rather than drawing an arrow on the screen.
Submitted by: Nick Hibma (n_hibma@FreeBSD.ORG)

SC_DFLT_FONT
makeoptions "SC_DFLT_FONT=_font_name_"
Include the named font as the default font of syscons. 16-line,
14-line and 8-line font data will be compiled in. This option replaces
the existing STD8X16FONT option, which loads 16-line font data only.

- The VGA driver is split into /sys/dev/fb/vga.c and /sys/isa/vga_isa.c.

- The video driver provides a set of ioctl commands to manipulate the
frame buffer.

- New kernel configuration option: VGA_WIDTH90
Enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These
modes are mot always supported by the video card.
PR: i386/7510
Submitted by: kbyanc@freedomnet.com and alexv@sui.gda.itesm.mx.

- The header file machine/console.h is reorganized; its contents is now
split into sys/fbio.h, sys/kbio.h (a new file) and sys/consio.h
(another new file). machine/console.h is still maintained for
compatibility reasons.

- Kernel console selection/installation routines are fixed and
slightly rebumped so that it should now be possible to switch between
the interanl kernel console (sc or vt) and a remote kernel console
(sio) again, as it was in 2.x, 3.0 and 3.1.

- Screen savers and splash screen decoders
Because of the header file reorganization described above, screen
savers and splash screen decoders are slightly modified. After this
update, /sys/modules/syscons/saver.h is no longer necessary and is
removed.


# 47678 01-Jun-1999 jlemon

Unifdef VM86.

Reviewed by: silence on on -current


# 46802 09-May-1999 peter

Always use the module system, rather than in an #ifdef.


# 45196 31-Mar-1999 yokota

Follow up to the recent vm86 change in rev. 1.19.
- Make a copy of the information block returned in the vm86 space
by the VESA BIOS init function. Otherwise it will be overwritten
by subsequent BIOS calls in the same vm86 context.


# 45117 29-Mar-1999 yokota

Another round of fix for palette loading.
- Don't try to change DAC width when unnecessary.
- Convert 8 bit DAC data to 6 bit DAC data before unloading the vesa
KLD module.


# 44866 18-Mar-1999 jlemon

Cast (u_char *) to (vm_offset_t) to silence compiler warnings.


# 44846 18-Mar-1999 jlemon

Update to use the modified vm86_datacall interface.


# 44162 20-Feb-1999 yokota

Make sure the DAC palette width is restored to 6 bit.


# 43674 05-Feb-1999 yokota

Oops, the last commit contained a wrong patch. This is the correct one.


# 43664 05-Feb-1999 yokota

- Don't assume the line length in the video memory is always the same as
the screen width.
- Store the current video mode information in the `video_adapter' struct.
- The size of the `v_offscreensize' field in the VESA mode information
block is u_int16, not u_int8.


# 42747 17-Jan-1999 yokota

Don't forget copying video mode flags to the adapter info. block when
changing video modes.


# 42729 16-Jan-1999 yokota

Fix palette save/load functions.

# They have been unchanged since the introduction of the VESA support.
# But, we started seeing the problem only recently ;-<


# 42611 12-Jan-1999 yokota

Oops, I accidentaly left the debug option on by default.
It's set to off now.


# 42504 11-Jan-1999 yokota

The first stage of console driver reorganization: activate new
keyboard and video card drivers.

Because of the changes, you are required to update your kernel
configuration file now!

The files in sys/dev/syscons are still i386-specific (but less so than
before), and won't compile for alpha and PC98 yet.

syscons still directly accesses the video card registers here and
there; this will be rectified in the later stages.


# 42235 01-Jan-1999 des

Correct typo in macro name.


# 42179 30-Dec-1998 yokota

Make the VESA KLD module work!


# 41591 07-Dec-1998 archie

The "easy" fixes for compiling the kernel -Wunused: remove unreferenced static
and local variables, goto labels, and functions declared but not defined.


# 39880 02-Oct-1998 yokota

A size field returned by the VESA BIOS is already expressed in bytes.
Submitted by: sos


# 39858 01-Oct-1998 yokota

Yet another round of fixes for the VESA support code.

- Express various sizes in bytes, rather than Kbytes, in the video
mode and adapter information structures.
- Fill 0 in the linear buffer size field if the linear frame buffer
is not available.
- Remove SW_VESA_USER ioctl. It is still experimetal and was not meant
to be released.
- Fix missing cast operator.
- Correctly handle pointers returned by the VESA BIOS. The pointers
may point to the area either in the BIOS ROM or in the buffer supplied
by the caller.
- Set the destructive cursor at the right moment.


# 39780 29-Sep-1998 ache

Restore v1.3 - page align workaround moved to vm86_datacall now


# 39745 29-Sep-1998 ache

cosmetique - remove unneded static in previous commit


# 39744 29-Sep-1998 ache

workaround painful vm86_datacall requirement that segment+offset
must be withing the same PAGE frame


# 39643 25-Sep-1998 yokota

Cosmetic change: adjust copyright notice.


# 39591 23-Sep-1998 yokota

Fix and update for VESA BIOS support in syscons.

- Handle pixel (raster text) mode properly.
- Clear screen and paint border right.
- Paint text attribute (colors).
- Fix off-by-one errors.
- Add some sanity checks.
- Fix some function prototypes.
- Add some comment lines.
- Define generic text mode numbers so that the user can just give
"80x25", "80x60", "132x25"..., rather than "VGA_xxx", to `vidcontrol'
to change the current video mode. `vidoio.c' and `vesa.c' will map
these numbers to real video mode numbers appropriate and available
with the given video hardware. I believe this will be useful to make
syscons more portable across archtectures.


# 39287 15-Sep-1998 sos

Add VESA support to syscons.

Kazu writes:

The VESA support code requires vm86 support. Make sure your kernel
configuration file has the following line.
options "VM86"
If you want to statically link the VESA support code to the kernel,
add the following option to the kernel configuration file.
options "VESA"

The vidcontrol command now accepts the following video mode names:
VESA_132x25, VESA_132x43, VESA_132x50, VESA_132x60, VESA_800x600

The VESA_800x600 mode is a raster display mode. The 80x25 text will
be displayed on the 800x600 screen. Useful for some laptop computers.

vidcontrol accepts the new `-i <info>' option, where <info> must be
either `adapter' or `mode'. When the `-i adapter' option is given,
vidcontrol will print basic information (not much) on the video
adapter. When the `-i mode' option is specified, vidcontrol will
list video modes which are actually supported by the video adapter.

Submitted by: Kazutaka YOKOTA yokota@FreeBSD.ORG