1998-09-15 18:16:39 +00:00
|
|
|
/*-
|
1998-09-25 11:55:46 +00:00
|
|
|
* Copyright (c) 1998 Kazutaka YOKOTA and Michael Smith
|
1998-09-15 18:16:39 +00:00
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
1998-09-25 11:55:46 +00:00
|
|
|
* notice, this list of conditions and the following disclaimer as
|
|
|
|
* the first lines of this file unmodified.
|
1998-09-15 18:16:39 +00:00
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
*
|
1998-09-25 11:55:46 +00:00
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
1998-09-15 18:16:39 +00:00
|
|
|
*
|
1999-07-01 15:05:11 +00:00
|
|
|
* $Id: vesa.c,v 1.25 1999/06/22 14:13:13 yokota Exp $
|
1998-09-15 18:16:39 +00:00
|
|
|
*/
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#include "vga.h"
|
|
|
|
#include "opt_vga.h"
|
1998-09-15 18:16:39 +00:00
|
|
|
#include "opt_vesa.h"
|
1999-01-11 03:18:56 +00:00
|
|
|
#include "opt_fb.h"
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#ifdef VGA_NO_MODE_CHANGE
|
|
|
|
#undef VESA
|
|
|
|
#endif
|
|
|
|
|
1999-06-01 18:20:36 +00:00
|
|
|
#if (NVGA > 0 && defined(VESA)) || defined(KLD_MODULE)
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
#include <sys/systm.h>
|
|
|
|
#include <sys/kernel.h>
|
1998-12-30 11:21:08 +00:00
|
|
|
#include <sys/module.h>
|
1998-09-15 18:16:39 +00:00
|
|
|
#include <sys/malloc.h>
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
#include <sys/fbio.h>
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
#include <vm/vm.h>
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
#include <vm/vm_extern.h>
|
|
|
|
#include <vm/vm_kern.h>
|
1998-09-15 18:16:39 +00:00
|
|
|
#include <vm/pmap.h>
|
|
|
|
|
|
|
|
#include <machine/md_var.h>
|
|
|
|
#include <machine/vm86.h>
|
|
|
|
#include <machine/pc/bios.h>
|
|
|
|
#include <machine/pc/vesa.h>
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#include <dev/fb/fbreg.h>
|
|
|
|
#include <dev/fb/vgareg.h>
|
|
|
|
|
|
|
|
#ifndef __i386__
|
|
|
|
#include <isa/isareg.h>
|
|
|
|
#else
|
|
|
|
#include <i386/isa/isa.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef VESA_DEBUG
|
1999-01-13 01:16:39 +00:00
|
|
|
#define VESA_DEBUG 0
|
1999-01-11 03:18:56 +00:00
|
|
|
#endif
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
/* VESA video adapter state buffer stub */
|
|
|
|
struct adp_state {
|
|
|
|
int sig;
|
|
|
|
#define V_STATE_SIG 0x61736576
|
|
|
|
u_char regs[1];
|
|
|
|
};
|
|
|
|
typedef struct adp_state adp_state_t;
|
|
|
|
|
|
|
|
/* VESA video adapter */
|
|
|
|
static video_adapter_t *vesa_adp = NULL;
|
|
|
|
static int vesa_state_buf_size = 0;
|
|
|
|
|
|
|
|
/* VESA functions */
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
1999-01-11 03:18:56 +00:00
|
|
|
static int vesa_nop(void);
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_error(void);
|
1999-01-11 03:18:56 +00:00
|
|
|
static vi_probe_t vesa_probe;
|
1998-09-15 18:16:39 +00:00
|
|
|
static vi_init_t vesa_init;
|
|
|
|
static vi_get_info_t vesa_get_info;
|
|
|
|
static vi_query_mode_t vesa_query_mode;
|
|
|
|
static vi_set_mode_t vesa_set_mode;
|
|
|
|
static vi_save_font_t vesa_save_font;
|
|
|
|
static vi_load_font_t vesa_load_font;
|
|
|
|
static vi_show_font_t vesa_show_font;
|
|
|
|
static vi_save_palette_t vesa_save_palette;
|
|
|
|
static vi_load_palette_t vesa_load_palette;
|
|
|
|
static vi_set_border_t vesa_set_border;
|
|
|
|
static vi_save_state_t vesa_save_state;
|
|
|
|
static vi_load_state_t vesa_load_state;
|
|
|
|
static vi_set_win_org_t vesa_set_origin;
|
|
|
|
static vi_read_hw_cursor_t vesa_read_hw_cursor;
|
|
|
|
static vi_set_hw_cursor_t vesa_set_hw_cursor;
|
1999-01-11 03:18:56 +00:00
|
|
|
static vi_set_hw_cursor_shape_t vesa_set_hw_cursor_shape;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static vi_blank_display_t vesa_blank_display;
|
1999-01-11 03:18:56 +00:00
|
|
|
static vi_mmap_t vesa_mmap;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static vi_ioctl_t vesa_ioctl;
|
|
|
|
static vi_clear_t vesa_clear;
|
|
|
|
static vi_fill_rect_t vesa_fill_rect;
|
|
|
|
static vi_bitblt_t vesa_bitblt;
|
1998-09-15 18:16:39 +00:00
|
|
|
static vi_diag_t vesa_diag;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_info(int level);
|
1999-03-18 04:38:16 +00:00
|
|
|
static struct vm86context vesa_vmcontext;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
static video_switch_t vesavidsw = {
|
|
|
|
vesa_probe,
|
|
|
|
vesa_init,
|
|
|
|
vesa_get_info,
|
|
|
|
vesa_query_mode,
|
|
|
|
vesa_set_mode,
|
|
|
|
vesa_save_font,
|
|
|
|
vesa_load_font,
|
|
|
|
vesa_show_font,
|
|
|
|
vesa_save_palette,
|
|
|
|
vesa_load_palette,
|
|
|
|
vesa_set_border,
|
|
|
|
vesa_save_state,
|
|
|
|
vesa_load_state,
|
|
|
|
vesa_set_origin,
|
|
|
|
vesa_read_hw_cursor,
|
|
|
|
vesa_set_hw_cursor,
|
|
|
|
vesa_set_hw_cursor_shape,
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_blank_display,
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_mmap,
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_ioctl,
|
|
|
|
vesa_clear,
|
|
|
|
vesa_fill_rect,
|
|
|
|
vesa_bitblt,
|
|
|
|
vesa_error,
|
|
|
|
vesa_error,
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_diag,
|
|
|
|
};
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
static video_switch_t *prevvidsw;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
/* VESA BIOS video modes */
|
|
|
|
#define VESA_MAXMODES 64
|
|
|
|
#define EOT (-1)
|
|
|
|
#define NA (-2)
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
#define MODE_TABLE_DELTA 8
|
|
|
|
|
|
|
|
static int vesa_vmode_max = 0;
|
|
|
|
static video_info_t vesa_vmode_empty = { EOT };
|
|
|
|
static video_info_t *vesa_vmode = &vesa_vmode_empty;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
static int vesa_init_done = FALSE;
|
|
|
|
static int has_vesa_bios = FALSE;
|
|
|
|
static struct vesa_info *vesa_adp_info = NULL;
|
|
|
|
static u_int16_t *vesa_vmodetab = NULL;
|
1998-10-01 11:39:18 +00:00
|
|
|
static char *vesa_oemstr = NULL;
|
|
|
|
static char *vesa_venderstr = NULL;
|
|
|
|
static char *vesa_prodstr = NULL;
|
|
|
|
static char *vesa_revstr = NULL;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
/* local macros and functions */
|
|
|
|
#define BIOS_SADDRTOLADDR(p) ((((p) & 0xffff0000) >> 12) + ((p) & 0x0000ffff))
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
static int int10_set_mode(int mode);
|
1998-09-15 18:16:39 +00:00
|
|
|
static int vesa_bios_get_mode(int mode, struct vesa_mode *vmode);
|
|
|
|
static int vesa_bios_set_mode(int mode);
|
1999-03-29 15:10:56 +00:00
|
|
|
static int vesa_bios_get_dac(void);
|
1998-09-15 18:16:39 +00:00
|
|
|
static int vesa_bios_set_dac(int bits);
|
1999-01-16 12:56:00 +00:00
|
|
|
static int vesa_bios_save_palette(int start, int colors, u_char *palette,
|
|
|
|
int bits);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_save_palette2(int start, int colors, u_char *r, u_char *g,
|
|
|
|
u_char *b, int bits);
|
1999-01-16 12:56:00 +00:00
|
|
|
static int vesa_bios_load_palette(int start, int colors, u_char *palette,
|
|
|
|
int bits);
|
1999-07-01 15:05:11 +00:00
|
|
|
#ifdef notyet
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g,
|
|
|
|
u_char *b, int bits);
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
1998-09-15 18:16:39 +00:00
|
|
|
#define STATE_SIZE 0
|
|
|
|
#define STATE_SAVE 1
|
|
|
|
#define STATE_LOAD 2
|
|
|
|
#define STATE_HW (1<<0)
|
|
|
|
#define STATE_DATA (1<<1)
|
|
|
|
#define STATE_DAC (1<<2)
|
|
|
|
#define STATE_REG (1<<3)
|
|
|
|
#define STATE_MOST (STATE_HW | STATE_DATA | STATE_REG)
|
|
|
|
#define STATE_ALL (STATE_HW | STATE_DATA | STATE_DAC | STATE_REG)
|
|
|
|
static int vesa_bios_state_buf_size(void);
|
|
|
|
static int vesa_bios_save_restore(int code, void *p, size_t size);
|
1999-02-05 11:52:13 +00:00
|
|
|
static int vesa_bios_get_line_length(void);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_set_line_length(int pixel);
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_get_start(int *x, int *y);
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_bios_set_start(int x, int y);
|
1998-09-23 09:59:00 +00:00
|
|
|
static int vesa_map_gen_mode_num(int type, int color, int mode);
|
|
|
|
static int vesa_translate_flags(u_int16_t vflags);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_translate_mmodel(u_int8_t vmodel);
|
1998-10-01 11:39:18 +00:00
|
|
|
static void *vesa_fix_ptr(u_int32_t p, u_int16_t seg, u_int16_t off,
|
|
|
|
u_char *buf);
|
1998-09-15 18:16:39 +00:00
|
|
|
static int vesa_bios_init(void);
|
1998-09-23 09:59:00 +00:00
|
|
|
static void vesa_clear_modes(video_info_t *info, int color);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static vm_offset_t vesa_map_buffer(u_int paddr, size_t size);
|
|
|
|
static void vesa_unmap_buffer(vm_offset_t vaddr, size_t size);
|
|
|
|
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int vesa_get_origin(video_adapter_t *adp, off_t *offset);
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
static void
|
|
|
|
dump_buffer(u_char *buf, size_t len)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for(i = 0; i < len;) {
|
|
|
|
printf("%02x ", buf[i]);
|
|
|
|
if ((++i % 16) == 0)
|
|
|
|
printf("\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
/* INT 10 BIOS calls */
|
|
|
|
static int
|
|
|
|
int10_set_mode(int mode)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x0000 | mode;
|
|
|
|
vm86_intcall(0x10, &vmf);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
/* VESA BIOS calls */
|
|
|
|
static int
|
|
|
|
vesa_bios_get_mode(int mode, struct vesa_mode *vmode)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
1999-03-18 04:38:16 +00:00
|
|
|
u_char *buf;
|
1998-09-15 18:16:39 +00:00
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f01;
|
|
|
|
vmf.vmf_ecx = mode;
|
1999-03-18 04:38:16 +00:00
|
|
|
buf = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
1999-03-18 20:13:20 +00:00
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)buf, &vmf.vmf_es, &vmf.vmf_di);
|
1999-03-18 04:38:16 +00:00
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
1998-09-15 18:16:39 +00:00
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 1;
|
|
|
|
bcopy(buf, vmode, sizeof(*vmode));
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_bios_set_mode(int mode)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f02;
|
|
|
|
vmf.vmf_ebx = mode;
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
|
|
|
|
1999-03-29 15:10:56 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_get_dac(void)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f08;
|
|
|
|
vmf.vmf_ebx = 1; /* get DAC width */
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 6; /* XXX */
|
|
|
|
return ((vmf.vmf_ebx >> 8) & 0x00ff);
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_set_dac(int bits)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f08;
|
|
|
|
vmf.vmf_ebx = (bits << 8);
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
1999-01-16 12:56:00 +00:00
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 6; /* XXX */
|
|
|
|
return ((vmf.vmf_ebx >> 8) & 0x00ff);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-16 12:56:00 +00:00
|
|
|
vesa_bios_save_palette(int start, int colors, u_char *palette, int bits)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
u_char *p;
|
|
|
|
int err;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f09;
|
|
|
|
vmf.vmf_ebx = 1; /* get primary palette data */
|
|
|
|
vmf.vmf_ecx = colors;
|
|
|
|
vmf.vmf_edx = start;
|
1999-03-18 04:38:16 +00:00
|
|
|
p = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
1999-03-18 20:13:20 +00:00
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)p, &vmf.vmf_es, &vmf.vmf_di);
|
1999-03-18 04:38:16 +00:00
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
|
|
|
|
1999-01-16 12:56:00 +00:00
|
|
|
bits = 8 - bits;
|
1998-09-15 18:16:39 +00:00
|
|
|
for (i = 0; i < colors; ++i) {
|
1999-01-16 12:56:00 +00:00
|
|
|
palette[i*3] = p[i*4 + 2] << bits;
|
|
|
|
palette[i*3 + 1] = p[i*4 + 1] << bits;
|
|
|
|
palette[i*3 + 2] = p[i*4] << bits;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_save_palette2(int start, int colors, u_char *r, u_char *g, u_char *b,
|
|
|
|
int bits)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
u_char *p;
|
|
|
|
int err;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f09;
|
|
|
|
vmf.vmf_ebx = 1; /* get primary palette data */
|
|
|
|
vmf.vmf_ecx = colors;
|
|
|
|
vmf.vmf_edx = start;
|
|
|
|
p = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)p, &vmf.vmf_es, &vmf.vmf_di);
|
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
bits = 8 - bits;
|
|
|
|
for (i = 0; i < colors; ++i) {
|
|
|
|
r[i] = p[i*4 + 2] << bits;
|
|
|
|
g[i] = p[i*4 + 1] << bits;
|
|
|
|
b[i] = p[i*4] << bits;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
1999-01-16 12:56:00 +00:00
|
|
|
vesa_bios_load_palette(int start, int colors, u_char *palette, int bits)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
u_char *p;
|
|
|
|
int err;
|
|
|
|
int i;
|
|
|
|
|
1999-03-18 04:38:16 +00:00
|
|
|
p = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
1999-01-16 12:56:00 +00:00
|
|
|
bits = 8 - bits;
|
1998-09-15 18:16:39 +00:00
|
|
|
for (i = 0; i < colors; ++i) {
|
1999-01-16 12:56:00 +00:00
|
|
|
p[i*4] = palette[i*3 + 2] >> bits;
|
|
|
|
p[i*4 + 1] = palette[i*3 + 1] >> bits;
|
|
|
|
p[i*4 + 2] = palette[i*3] >> bits;
|
|
|
|
p[i*4 + 3] = 0;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f09;
|
|
|
|
vmf.vmf_ebx = 0; /* set primary palette data */
|
|
|
|
vmf.vmf_ecx = colors;
|
|
|
|
vmf.vmf_edx = start;
|
1999-03-18 20:13:20 +00:00
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)p, &vmf.vmf_es, &vmf.vmf_di);
|
1999-03-18 04:38:16 +00:00
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
1998-09-15 18:16:39 +00:00
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
|
|
|
|
1999-07-01 15:05:11 +00:00
|
|
|
#ifdef notyet
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g, u_char *b,
|
|
|
|
int bits)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
u_char *p;
|
|
|
|
int err;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
p = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
|
|
|
bits = 8 - bits;
|
|
|
|
for (i = 0; i < colors; ++i) {
|
|
|
|
p[i*4] = b[i] >> bits;
|
|
|
|
p[i*4 + 1] = g[i] >> bits;
|
|
|
|
p[i*4 + 2] = r[i] >> bits;
|
|
|
|
p[i*4 + 3] = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f09;
|
|
|
|
vmf.vmf_ebx = 0; /* set primary palette data */
|
|
|
|
vmf.vmf_ecx = colors;
|
|
|
|
vmf.vmf_edx = start;
|
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)p, &vmf.vmf_es, &vmf.vmf_di);
|
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_state_buf_size(void)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f04;
|
|
|
|
vmf.vmf_ecx = STATE_MOST;
|
|
|
|
vmf.vmf_edx = STATE_SIZE;
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 0;
|
|
|
|
return vmf.vmf_ebx*64;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_bios_save_restore(int code, void *p, size_t size)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
1999-03-18 04:38:16 +00:00
|
|
|
u_char *buf;
|
1998-09-15 18:16:39 +00:00
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f04;
|
|
|
|
vmf.vmf_ecx = STATE_MOST;
|
|
|
|
vmf.vmf_edx = code; /* STATE_SAVE/STATE_LOAD */
|
1999-03-18 04:38:16 +00:00
|
|
|
buf = (u_char *)vm86_getpage(&vesa_vmcontext, 1);
|
1999-03-18 20:13:20 +00:00
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)buf, &vmf.vmf_es, &vmf.vmf_di);
|
1999-03-18 04:38:16 +00:00
|
|
|
bcopy(p, buf, size);
|
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
1998-09-15 18:16:39 +00:00
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
|
|
|
|
1999-02-05 11:52:13 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_get_line_length(void)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f06;
|
|
|
|
vmf.vmf_ebx = 1; /* get scan line length */
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return -1;
|
|
|
|
return vmf.vmf_bx; /* line length in bytes */
|
|
|
|
}
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_set_line_length(int pixel)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f06;
|
|
|
|
vmf.vmf_ebx = 0; /* set scan line length in pixel */
|
|
|
|
vmf.vmf_ecx = pixel;
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
printf("bx:%d, cx:%d, dx:%d\n", vmf.vmf_bx, vmf.vmf_cx, vmf.vmf_dx);
|
|
|
|
#endif
|
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
|
|
|
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_get_start(int *x, int *y)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f07;
|
|
|
|
vmf.vmf_ebx = 1; /* get display start */
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 1;
|
|
|
|
*x = vmf.vmf_cx;
|
|
|
|
*y = vmf.vmf_dx;
|
|
|
|
return 0;
|
|
|
|
}
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_bios_set_start(int x, int y)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f07;
|
|
|
|
vmf.vmf_ebx = 0x80; /* set display start */
|
|
|
|
vmf.vmf_edx = y;
|
|
|
|
vmf.vmf_ecx = x;
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
return ((err != 0) || (vmf.vmf_eax != 0x4f));
|
|
|
|
}
|
|
|
|
|
1998-09-23 09:59:00 +00:00
|
|
|
/* map a generic video mode to a known mode */
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
1998-09-23 09:59:00 +00:00
|
|
|
vesa_map_gen_mode_num(int type, int color, int mode)
|
|
|
|
{
|
|
|
|
static struct {
|
|
|
|
int from;
|
|
|
|
int to;
|
|
|
|
} mode_map[] = {
|
|
|
|
{ M_TEXT_132x25, M_VESA_C132x25 },
|
|
|
|
{ M_TEXT_132x43, M_VESA_C132x43 },
|
|
|
|
{ M_TEXT_132x50, M_VESA_C132x50 },
|
|
|
|
{ M_TEXT_132x60, M_VESA_C132x60 },
|
|
|
|
};
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(mode_map)/sizeof(mode_map[0]); ++i) {
|
|
|
|
if (mode_map[i].from == mode)
|
|
|
|
return mode_map[i].to;
|
|
|
|
}
|
|
|
|
return mode;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_translate_flags(u_int16_t vflags)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
static struct {
|
|
|
|
u_int16_t mask;
|
|
|
|
int set;
|
|
|
|
int reset;
|
|
|
|
} ftable[] = {
|
|
|
|
{ V_MODECOLOR, V_INFO_COLOR, 0 },
|
|
|
|
{ V_MODEGRAPHICS, V_INFO_GRAPHICS, 0 },
|
1999-01-01 14:38:30 +00:00
|
|
|
{ V_MODELFB, V_INFO_LINEAR, 0 },
|
1998-09-15 18:16:39 +00:00
|
|
|
};
|
|
|
|
int flags;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (flags = 0, i = 0; i < sizeof(ftable)/sizeof(ftable[0]); ++i) {
|
|
|
|
flags |= (vflags & ftable[i].mask) ?
|
|
|
|
ftable[i].set : ftable[i].reset;
|
|
|
|
}
|
|
|
|
return flags;
|
|
|
|
}
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_translate_mmodel(u_int8_t vmodel)
|
|
|
|
{
|
|
|
|
static struct {
|
|
|
|
u_int8_t vmodel;
|
|
|
|
int mmodel;
|
|
|
|
} mtable[] = {
|
|
|
|
{ V_MMTEXT, V_INFO_MM_TEXT },
|
|
|
|
{ V_MMCGA, V_INFO_MM_CGA },
|
|
|
|
{ V_MMHGC, V_INFO_MM_HGC },
|
|
|
|
{ V_MMEGA, V_INFO_MM_PLANAR },
|
|
|
|
{ V_MMPACKED, V_INFO_MM_PACKED },
|
|
|
|
{ V_MMDIRCOLOR, V_INFO_MM_DIRECT },
|
|
|
|
};
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; mtable[i].mmodel >= 0; ++i) {
|
|
|
|
if (mtable[i].vmodel == vmodel)
|
|
|
|
return mtable[i].mmodel;
|
|
|
|
}
|
|
|
|
return V_INFO_MM_OTHER;
|
|
|
|
}
|
|
|
|
|
1998-10-01 11:39:18 +00:00
|
|
|
static void
|
|
|
|
*vesa_fix_ptr(u_int32_t p, u_int16_t seg, u_int16_t off, u_char *buf)
|
|
|
|
{
|
|
|
|
if (p == 0)
|
|
|
|
return NULL;
|
|
|
|
if (((p >> 16) == seg) && ((p & 0xffff) >= off))
|
|
|
|
return (void *)(buf + ((p & 0xffff) - off));
|
|
|
|
else {
|
|
|
|
p = BIOS_SADDRTOLADDR(p);
|
|
|
|
return (void *)BIOS_PADDRTOVADDR(p);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
|
|
|
vesa_bios_init(void)
|
|
|
|
{
|
1999-03-31 15:27:00 +00:00
|
|
|
static u_char buf[512];
|
1998-09-15 18:16:39 +00:00
|
|
|
struct vm86frame vmf;
|
|
|
|
struct vesa_mode vmode;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
video_info_t *p;
|
1999-03-31 15:27:00 +00:00
|
|
|
u_char *vmbuf;
|
1998-09-15 18:16:39 +00:00
|
|
|
int modes;
|
|
|
|
int err;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
if (vesa_init_done)
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
has_vesa_bios = FALSE;
|
|
|
|
vesa_adp_info = NULL;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_vmode_max = 0;
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_vmode[0].vi_mode = EOT;
|
|
|
|
|
1999-03-31 15:27:00 +00:00
|
|
|
vmbuf = (u_char *)vm86_addpage(&vesa_vmcontext, 1, 0);
|
1998-09-15 18:16:39 +00:00
|
|
|
bzero(&vmf, sizeof(vmf)); /* paranoia */
|
1999-03-31 15:27:00 +00:00
|
|
|
bcopy("VBE2", vmbuf, 4); /* try for VBE2 data */
|
1998-09-29 20:38:54 +00:00
|
|
|
vmf.vmf_eax = 0x4f00;
|
1999-03-31 15:27:00 +00:00
|
|
|
vm86_getptr(&vesa_vmcontext, (vm_offset_t)vmbuf, &vmf.vmf_es, &vmf.vmf_di);
|
1999-03-18 04:38:16 +00:00
|
|
|
|
|
|
|
err = vm86_datacall(0x10, &vmf, &vesa_vmcontext);
|
1999-03-31 15:27:00 +00:00
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f) || bcmp("VESA", vmbuf, 4))
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
1999-03-31 15:27:00 +00:00
|
|
|
bcopy(vmbuf, buf, sizeof(buf));
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_adp_info = (struct vesa_info *)buf;
|
1999-01-11 03:18:56 +00:00
|
|
|
if (bootverbose) {
|
|
|
|
printf("VESA: information block\n");
|
1998-09-15 18:16:39 +00:00
|
|
|
dump_buffer(buf, 64);
|
1999-01-11 03:18:56 +00:00
|
|
|
}
|
1998-09-15 18:16:39 +00:00
|
|
|
if (vesa_adp_info->v_flags & V_NONVGA)
|
|
|
|
return 1;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (vesa_adp_info->v_version < 0x0102) {
|
|
|
|
printf("VESA: VBE version %d.%d is not supported; "
|
|
|
|
"version 1.2 or later is required.\n",
|
|
|
|
((vesa_adp_info->v_version & 0xf000) >> 12) * 10
|
|
|
|
+ ((vesa_adp_info->v_version & 0x0f00) >> 8),
|
|
|
|
((vesa_adp_info->v_version & 0x00f0) >> 4) * 10
|
|
|
|
+ (vesa_adp_info->v_version & 0x000f));
|
|
|
|
return 1;
|
|
|
|
}
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1998-10-01 11:39:18 +00:00
|
|
|
/* fix string ptrs */
|
|
|
|
vesa_oemstr = (char *)vesa_fix_ptr(vesa_adp_info->v_oemstr,
|
|
|
|
vmf.vmf_es, vmf.vmf_di, buf);
|
|
|
|
if (vesa_adp_info->v_version >= 0x0200) {
|
|
|
|
vesa_venderstr =
|
|
|
|
(char *)vesa_fix_ptr(vesa_adp_info->v_venderstr,
|
|
|
|
vmf.vmf_es, vmf.vmf_di, buf);
|
|
|
|
vesa_prodstr =
|
|
|
|
(char *)vesa_fix_ptr(vesa_adp_info->v_prodstr,
|
|
|
|
vmf.vmf_es, vmf.vmf_di, buf);
|
|
|
|
vesa_revstr =
|
|
|
|
(char *)vesa_fix_ptr(vesa_adp_info->v_revstr,
|
|
|
|
vmf.vmf_es, vmf.vmf_di, buf);
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
/* obtain video mode information */
|
1998-10-01 11:39:18 +00:00
|
|
|
vesa_vmodetab = (u_int16_t *)vesa_fix_ptr(vesa_adp_info->v_modetable,
|
|
|
|
vmf.vmf_es, vmf.vmf_di, buf);
|
|
|
|
if (vesa_vmodetab == NULL)
|
|
|
|
return 1;
|
|
|
|
for (i = 0, modes = 0;
|
|
|
|
(i < (M_VESA_MODE_MAX - M_VESA_BASE + 1))
|
|
|
|
&& (vesa_vmodetab[i] != 0xffff); ++i) {
|
1998-09-15 18:16:39 +00:00
|
|
|
if (vesa_bios_get_mode(vesa_vmodetab[i], &vmode))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
/* reject unsupported modes */
|
|
|
|
#if 0
|
|
|
|
if ((vmode.v_modeattr & (V_MODESUPP | V_MODEOPTINFO
|
|
|
|
| V_MODENONVGA))
|
|
|
|
!= (V_MODESUPP | V_MODEOPTINFO))
|
|
|
|
continue;
|
|
|
|
#else
|
|
|
|
if ((vmode.v_modeattr & (V_MODEOPTINFO | V_MODENONVGA))
|
|
|
|
!= (V_MODEOPTINFO))
|
|
|
|
continue;
|
|
|
|
#endif
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
/* expand the array if necessary */
|
|
|
|
if (modes >= vesa_vmode_max) {
|
|
|
|
vesa_vmode_max += MODE_TABLE_DELTA;
|
|
|
|
p = malloc(sizeof(*vesa_vmode)*(vesa_vmode_max + 1),
|
|
|
|
M_DEVBUF, M_WAITOK);
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
printf("vesa_bios_init(): modes:%d, vesa_mode_max:%d\n",
|
|
|
|
modes, vesa_mode_max);
|
|
|
|
#endif
|
|
|
|
if (modes > 0) {
|
|
|
|
bcopy(vesa_vmode, p, sizeof(*vesa_vmode)*modes);
|
|
|
|
free(vesa_vmode, M_DEVBUF);
|
|
|
|
}
|
|
|
|
vesa_vmode = p;
|
|
|
|
}
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
/* copy some fields */
|
|
|
|
bzero(&vesa_vmode[modes], sizeof(vesa_vmode[modes]));
|
|
|
|
vesa_vmode[modes].vi_mode = vesa_vmodetab[i];
|
|
|
|
vesa_vmode[modes].vi_width = vmode.v_width;
|
|
|
|
vesa_vmode[modes].vi_height = vmode.v_height;
|
|
|
|
vesa_vmode[modes].vi_depth = vmode.v_bpp;
|
|
|
|
vesa_vmode[modes].vi_planes = vmode.v_planes;
|
|
|
|
vesa_vmode[modes].vi_cwidth = vmode.v_cwidth;
|
|
|
|
vesa_vmode[modes].vi_cheight = vmode.v_cheight;
|
|
|
|
vesa_vmode[modes].vi_window = (u_int)vmode.v_waseg << 4;
|
|
|
|
/* XXX window B */
|
1998-10-01 11:39:18 +00:00
|
|
|
vesa_vmode[modes].vi_window_size = vmode.v_wsize*1024;
|
|
|
|
vesa_vmode[modes].vi_window_gran = vmode.v_wgran*1024;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (vmode.v_modeattr & V_MODELFB)
|
|
|
|
vesa_vmode[modes].vi_buffer = vmode.v_lfb;
|
|
|
|
else
|
|
|
|
vesa_vmode[modes].vi_buffer = 0;
|
1999-02-05 11:52:13 +00:00
|
|
|
/* XXX */
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_vmode[modes].vi_buffer_size
|
|
|
|
= vesa_adp_info->v_memsize*64*1024;
|
|
|
|
#if 0
|
1999-02-05 11:52:13 +00:00
|
|
|
if (vmode.v_offscreen > vmode.v_lfb)
|
|
|
|
vesa_vmode[modes].vi_buffer_size
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
= vmode.v_offscreen + vmode.v_offscreensize*1024
|
|
|
|
- vmode.v_lfb;
|
1999-02-05 11:52:13 +00:00
|
|
|
else
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_vmode[modes].vi_buffer_size
|
|
|
|
= vmode.v_offscreen + vmode.v_offscreensize*1024
|
|
|
|
#endif
|
|
|
|
vesa_vmode[modes].vi_mem_model
|
|
|
|
= vesa_translate_mmodel(vmode.v_memmodel);
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[0] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[1] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[2] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[3] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[0] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[1] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[2] = 0;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[3] = 0;
|
|
|
|
if (vesa_vmode[modes].vi_mem_model == V_INFO_MM_PACKED) {
|
|
|
|
vesa_vmode[modes].vi_pixel_size = (vmode.v_bpp + 7)/8;
|
|
|
|
} else if (vesa_vmode[modes].vi_mem_model == V_INFO_MM_DIRECT) {
|
|
|
|
vesa_vmode[modes].vi_pixel_size = (vmode.v_bpp + 7)/8;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[0]
|
|
|
|
= vmode.v_redfieldpos;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[1]
|
|
|
|
= vmode.v_greenfieldpos;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[2]
|
|
|
|
= vmode.v_bluefieldpos;
|
|
|
|
vesa_vmode[modes].vi_pixel_fields[3]
|
|
|
|
= vmode.v_resfieldpos;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[0]
|
|
|
|
= vmode.v_redmasksize;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[1]
|
|
|
|
= vmode.v_greenmasksize;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[2]
|
|
|
|
= vmode.v_bluemasksize;
|
|
|
|
vesa_vmode[modes].vi_pixel_fsizes[3]
|
|
|
|
= vmode.v_resmasksize;
|
|
|
|
} else {
|
|
|
|
vesa_vmode[modes].vi_pixel_size = 0;
|
|
|
|
}
|
|
|
|
|
1998-09-23 09:59:00 +00:00
|
|
|
vesa_vmode[modes].vi_flags
|
|
|
|
= vesa_translate_flags(vmode.v_modeattr) | V_INFO_VESA;
|
1998-09-15 18:16:39 +00:00
|
|
|
++modes;
|
|
|
|
}
|
|
|
|
vesa_vmode[modes].vi_mode = EOT;
|
|
|
|
if (bootverbose)
|
|
|
|
printf("VESA: %d mode(s) found\n", modes);
|
|
|
|
|
1998-10-01 11:39:18 +00:00
|
|
|
has_vesa_bios = (modes > 0);
|
|
|
|
return (has_vesa_bios ? 0 : 1);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
1998-09-23 09:59:00 +00:00
|
|
|
vesa_clear_modes(video_info_t *info, int color)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
while (info->vi_mode != EOT) {
|
|
|
|
if ((info->vi_flags & V_INFO_COLOR) != color)
|
|
|
|
info->vi_mode = NA;
|
|
|
|
++info;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static vm_offset_t
|
|
|
|
vesa_map_buffer(u_int paddr, size_t size)
|
|
|
|
{
|
|
|
|
vm_offset_t vaddr;
|
|
|
|
u_int off;
|
|
|
|
|
|
|
|
off = paddr - trunc_page(paddr);
|
|
|
|
vaddr = (vm_offset_t)pmap_mapdev(paddr - off, size + off);
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
printf("vesa_map_buffer: paddr:%x vaddr:%x size:%x off:%x\n",
|
|
|
|
paddr, vaddr, size, off);
|
|
|
|
#endif
|
|
|
|
return (vaddr + off);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
vesa_unmap_buffer(vm_offset_t vaddr, size_t size)
|
|
|
|
{
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
printf("vesa_unmap_buffer: vaddr:%x size:%x\n", vaddr, size);
|
|
|
|
#endif
|
|
|
|
kmem_free(kernel_map, vaddr, size);
|
|
|
|
}
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
/* entry points */
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_configure(int flags)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
video_adapter_t *adp;
|
1998-09-15 18:16:39 +00:00
|
|
|
int adapters;
|
1999-01-11 03:18:56 +00:00
|
|
|
int error;
|
1998-09-15 18:16:39 +00:00
|
|
|
int i;
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
if (vesa_init_done)
|
|
|
|
return 0;
|
|
|
|
if (flags & VIO_PROBE_ONLY)
|
|
|
|
return 0; /* XXX */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* If the VESA module has already been loaded, abort loading
|
|
|
|
* the module this time.
|
|
|
|
*/
|
|
|
|
for (i = 0; (adp = vid_get_adapter(i)) != NULL; ++i) {
|
|
|
|
if (adp->va_flags & V_ADP_VESA)
|
|
|
|
return ENXIO;
|
|
|
|
if (adp->va_type == KD_VGA)
|
|
|
|
break;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
1999-01-11 03:18:56 +00:00
|
|
|
/*
|
|
|
|
* The VGA adapter is not found. This is because either
|
|
|
|
* 1) the VGA driver has not been initialized, or 2) the VGA card
|
|
|
|
* is not present. If 1) is the case, we shall defer
|
|
|
|
* initialization for now and try again later.
|
|
|
|
*/
|
|
|
|
if (adp == NULL) {
|
|
|
|
vga_sub_configure = vesa_configure;
|
|
|
|
return ENODEV;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* count number of registered adapters */
|
|
|
|
for (++i; vid_get_adapter(i) != NULL; ++i)
|
|
|
|
;
|
|
|
|
adapters = i;
|
|
|
|
|
|
|
|
/* call VESA BIOS */
|
|
|
|
vesa_adp = adp;
|
|
|
|
if (vesa_bios_init()) {
|
|
|
|
vesa_adp = NULL;
|
|
|
|
return ENXIO;
|
|
|
|
}
|
|
|
|
vesa_adp->va_flags |= V_ADP_VESA;
|
|
|
|
|
|
|
|
/* remove conflicting modes if we have more than one adapter */
|
|
|
|
if (adapters > 1) {
|
|
|
|
vesa_clear_modes(vesa_vmode,
|
|
|
|
(vesa_adp->va_flags & V_ADP_COLOR) ?
|
|
|
|
V_INFO_COLOR : 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((error = vesa_load_ioctl()) == 0) {
|
|
|
|
prevvidsw = vidsw[vesa_adp->va_index];
|
|
|
|
vidsw[vesa_adp->va_index] = &vesavidsw;
|
|
|
|
vesa_init_done = TRUE;
|
|
|
|
} else {
|
|
|
|
vesa_adp = NULL;
|
|
|
|
return error;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
1999-01-11 03:18:56 +00:00
|
|
|
static int
|
|
|
|
vesa_nop(void)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
1999-01-11 03:18:56 +00:00
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_error(void)
|
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
static int
|
|
|
|
vesa_probe(int unit, video_adapter_t **adpp, void *arg, int flags)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->probe)(unit, adpp, arg, flags);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_init(int unit, video_adapter_t *adp, int flags)
|
|
|
|
{
|
|
|
|
return (*prevvidsw->init)(unit, adp, flags);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_get_info(video_adapter_t *adp, int mode, video_info_t *info)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
if ((*prevvidsw->get_info)(adp, mode, info) == 0)
|
1998-09-15 18:16:39 +00:00
|
|
|
return 0;
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
if (adp != vesa_adp)
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
1998-09-23 09:59:00 +00:00
|
|
|
|
|
|
|
mode = vesa_map_gen_mode_num(vesa_adp->va_type,
|
|
|
|
vesa_adp->va_flags & V_ADP_COLOR, mode);
|
1998-09-15 18:16:39 +00:00
|
|
|
for (i = 0; vesa_vmode[i].vi_mode != EOT; ++i) {
|
|
|
|
if (vesa_vmode[i].vi_mode == NA)
|
|
|
|
continue;
|
|
|
|
if (vesa_vmode[i].vi_mode == mode) {
|
|
|
|
*info = vesa_vmode[i];
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_query_mode(video_adapter_t *adp, video_info_t *info)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
if ((i = (*prevvidsw->query_mode)(adp, info)) != -1)
|
1998-09-15 18:16:39 +00:00
|
|
|
return i;
|
1999-01-11 03:18:56 +00:00
|
|
|
if (adp != vesa_adp)
|
1998-09-15 18:16:39 +00:00
|
|
|
return -1;
|
|
|
|
|
|
|
|
for (i = 0; vesa_vmode[i].vi_mode != EOT; ++i) {
|
|
|
|
if ((info->vi_width != 0)
|
|
|
|
&& (info->vi_width != vesa_vmode[i].vi_width))
|
|
|
|
continue;
|
|
|
|
if ((info->vi_height != 0)
|
|
|
|
&& (info->vi_height != vesa_vmode[i].vi_height))
|
|
|
|
continue;
|
|
|
|
if ((info->vi_cwidth != 0)
|
|
|
|
&& (info->vi_cwidth != vesa_vmode[i].vi_cwidth))
|
|
|
|
continue;
|
|
|
|
if ((info->vi_cheight != 0)
|
|
|
|
&& (info->vi_cheight != vesa_vmode[i].vi_cheight))
|
|
|
|
continue;
|
|
|
|
if ((info->vi_depth != 0)
|
|
|
|
&& (info->vi_depth != vesa_vmode[i].vi_depth))
|
|
|
|
continue;
|
|
|
|
if ((info->vi_planes != 0)
|
|
|
|
&& (info->vi_planes != vesa_vmode[i].vi_planes))
|
|
|
|
continue;
|
|
|
|
/* pixel format, memory model */
|
|
|
|
if ((info->vi_flags != 0)
|
|
|
|
&& (info->vi_flags != vesa_vmode[i].vi_flags))
|
|
|
|
continue;
|
|
|
|
return vesa_vmode[i].vi_mode;
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_set_mode(video_adapter_t *adp, int mode)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
video_info_t info;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
int len;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
if (adp != vesa_adp)
|
|
|
|
return (*prevvidsw->set_mode)(adp, mode);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
mode = vesa_map_gen_mode_num(adp->va_type,
|
|
|
|
adp->va_flags & V_ADP_COLOR, mode);
|
1999-01-11 03:18:56 +00:00
|
|
|
#if VESA_DEBUG > 0
|
1998-09-15 18:16:39 +00:00
|
|
|
printf("VESA: set_mode(): %d(%x) -> %d(%x)\n",
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
adp->va_mode, adp->va_mode, mode, mode);
|
1998-09-15 18:16:39 +00:00
|
|
|
#endif
|
|
|
|
/*
|
|
|
|
* If the current mode is a VESA mode and the new mode is not,
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
* restore the state of the adapter first by setting one of the
|
|
|
|
* standard VGA mode, so that non-standard, extended SVGA registers
|
|
|
|
* are set to the state compatible with the standard VGA modes.
|
|
|
|
* Otherwise (*prevvidsw->set_mode)() may not be able to set up
|
|
|
|
* the new mode correctly.
|
1998-09-15 18:16:39 +00:00
|
|
|
*/
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (VESA_MODE(adp->va_mode)) {
|
1999-01-11 03:18:56 +00:00
|
|
|
if ((*prevvidsw->get_info)(adp, mode, &info) == 0) {
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
int10_set_mode(adp->va_initial_bios_mode);
|
|
|
|
if (adp->va_info.vi_flags & V_INFO_LINEAR)
|
|
|
|
vesa_unmap_buffer(adp->va_buffer,
|
|
|
|
vesa_adp_info->v_memsize*64*1024);
|
|
|
|
/*
|
|
|
|
* Once (*prevvidsw->get_info)() succeeded,
|
|
|
|
* (*prevvidsw->set_mode)() below won't fail...
|
|
|
|
*/
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* we may not need to handle this mode after all... */
|
1999-01-11 03:18:56 +00:00
|
|
|
if ((*prevvidsw->set_mode)(adp, mode) == 0)
|
1998-09-15 18:16:39 +00:00
|
|
|
return 0;
|
|
|
|
|
|
|
|
/* is the new mode supported? */
|
1999-01-11 03:18:56 +00:00
|
|
|
if (vesa_get_info(adp, mode, &info))
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
|
|
|
/* assert(VESA_MODE(mode)); */
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#if VESA_DEBUG > 0
|
1998-09-15 18:16:39 +00:00
|
|
|
printf("VESA: about to set a VESA mode...\n");
|
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
/* don't use the linear frame buffer for text modes. XXX */
|
|
|
|
if (!(info.vi_flags & V_INFO_GRAPHICS))
|
|
|
|
info.vi_flags &= ~V_INFO_LINEAR;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (vesa_bios_set_mode(mode | ((info.vi_flags & V_INFO_LINEAR) ? 0x4000 : 0)))
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (adp->va_info.vi_flags & V_INFO_LINEAR)
|
|
|
|
vesa_unmap_buffer(adp->va_buffer,
|
|
|
|
vesa_adp_info->v_memsize*64*1024);
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#if VESA_DEBUG > 0
|
1998-09-15 18:16:39 +00:00
|
|
|
printf("VESA: mode set!\n");
|
|
|
|
#endif
|
|
|
|
vesa_adp->va_mode = mode;
|
|
|
|
vesa_adp->va_flags &= ~V_ADP_COLOR;
|
|
|
|
vesa_adp->va_flags |=
|
|
|
|
(info.vi_flags & V_INFO_COLOR) ? V_ADP_COLOR : 0;
|
|
|
|
vesa_adp->va_crtc_addr =
|
1999-01-11 03:18:56 +00:00
|
|
|
(vesa_adp->va_flags & V_ADP_COLOR) ? COLOR_CRTC : MONO_CRTC;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if (info.vi_flags & V_INFO_LINEAR) {
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
printf("VESA: setting up LFB\n");
|
|
|
|
#endif
|
|
|
|
vesa_adp->va_buffer =
|
|
|
|
vesa_map_buffer(info.vi_buffer,
|
|
|
|
vesa_adp_info->v_memsize*64*1024);
|
|
|
|
vesa_adp->va_buffer_size = info.vi_buffer_size;
|
|
|
|
vesa_adp->va_window = vesa_adp->va_buffer;
|
|
|
|
vesa_adp->va_window_size = info.vi_buffer_size/info.vi_planes;
|
|
|
|
vesa_adp->va_window_gran = info.vi_buffer_size/info.vi_planes;
|
1998-09-15 18:16:39 +00:00
|
|
|
} else {
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_adp->va_buffer = 0;
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_adp->va_buffer_size = info.vi_buffer_size;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_adp->va_window = BIOS_PADDRTOVADDR(info.vi_window);
|
|
|
|
vesa_adp->va_window_size = info.vi_window_size;
|
|
|
|
vesa_adp->va_window_gran = info.vi_window_gran;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_adp->va_window_orig = 0;
|
1999-02-05 11:52:13 +00:00
|
|
|
len = vesa_bios_get_line_length();
|
1999-02-05 12:58:40 +00:00
|
|
|
if (len > 0) {
|
|
|
|
vesa_adp->va_line_width = len;
|
|
|
|
} else if (info.vi_flags & V_INFO_GRAPHICS) {
|
|
|
|
switch (info.vi_depth/info.vi_planes) {
|
|
|
|
case 1:
|
|
|
|
vesa_adp->va_line_width = info.vi_width/8;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
vesa_adp->va_line_width = info.vi_width/4;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
vesa_adp->va_line_width = info.vi_width/2;
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
default: /* shouldn't happen */
|
|
|
|
vesa_adp->va_line_width = info.vi_width;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
vesa_adp->va_line_width = info.vi_width;
|
|
|
|
}
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_adp->va_disp_start.x = 0;
|
|
|
|
vesa_adp->va_disp_start.y = 0;
|
1999-02-05 11:52:13 +00:00
|
|
|
#if VESA_DEBUG > 0
|
|
|
|
printf("vesa_set_mode(): vi_width:%d, len:%d, line_width:%d\n",
|
1999-02-05 12:58:40 +00:00
|
|
|
info.vi_width, len, vesa_adp->va_line_width);
|
1999-02-05 11:52:13 +00:00
|
|
|
#endif
|
1999-02-05 12:58:40 +00:00
|
|
|
bcopy(&info, &vesa_adp->va_info, sizeof(vesa_adp->va_info));
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
/* move hardware cursor out of the way */
|
1999-02-05 12:58:40 +00:00
|
|
|
(*vidsw[vesa_adp->va_index]->set_hw_cursor)(vesa_adp, -1, -1);
|
1999-01-11 03:18:56 +00:00
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_save_font(video_adapter_t *adp, int page, int fontsize, u_char *data,
|
|
|
|
int ch, int count)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->save_font)(adp, page, fontsize, data, ch, count);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_load_font(video_adapter_t *adp, int page, int fontsize, u_char *data,
|
|
|
|
int ch, int count)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->load_font)(adp, page, fontsize, data, ch, count);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_show_font(video_adapter_t *adp, int page)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->show_font)(adp, page);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_save_palette(video_adapter_t *adp, u_char *palette)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-16 12:56:00 +00:00
|
|
|
int bits;
|
|
|
|
int error;
|
|
|
|
|
1999-03-29 15:10:56 +00:00
|
|
|
if ((adp == vesa_adp) && (vesa_adp_info->v_flags & V_DAC8)
|
|
|
|
&& VESA_MODE(adp->va_mode)) {
|
|
|
|
bits = vesa_bios_get_dac();
|
1999-01-16 12:56:00 +00:00
|
|
|
error = vesa_bios_save_palette(0, 256, palette, bits);
|
|
|
|
if (error == 0)
|
|
|
|
return 0;
|
1999-03-29 15:10:56 +00:00
|
|
|
if (bits != 6)
|
|
|
|
return error;
|
1999-01-16 12:56:00 +00:00
|
|
|
}
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-16 12:56:00 +00:00
|
|
|
return (*prevvidsw->save_palette)(adp, palette);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_load_palette(video_adapter_t *adp, u_char *palette)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-03-29 15:10:56 +00:00
|
|
|
#if notyet
|
1999-01-16 12:56:00 +00:00
|
|
|
int bits;
|
|
|
|
int error;
|
|
|
|
|
|
|
|
if ((adp == vesa_adp) && (vesa_adp_info->v_flags & V_DAC8)
|
1999-03-29 15:10:56 +00:00
|
|
|
&& VESA_MODE(adp->va_mode) && ((bits = vesa_bios_set_dac(8)) > 6)) {
|
1999-01-16 12:56:00 +00:00
|
|
|
error = vesa_bios_load_palette(0, 256, palette, bits);
|
|
|
|
if (error == 0)
|
|
|
|
return 0;
|
1999-03-29 15:10:56 +00:00
|
|
|
if (vesa_bios_set_dac(6) != 6)
|
|
|
|
return 1;
|
1999-01-16 12:56:00 +00:00
|
|
|
}
|
1999-03-29 15:10:56 +00:00
|
|
|
#endif /* notyet */
|
1998-09-15 18:16:39 +00:00
|
|
|
|
1999-01-16 12:56:00 +00:00
|
|
|
return (*prevvidsw->load_palette)(adp, palette);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_set_border(video_adapter_t *adp, int color)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->set_border)(adp, color);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_save_state(video_adapter_t *adp, void *p, size_t size)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
if (adp != vesa_adp)
|
|
|
|
return (*prevvidsw->save_state)(adp, p, size);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
if (vesa_state_buf_size == 0)
|
|
|
|
vesa_state_buf_size = vesa_bios_state_buf_size();
|
|
|
|
if (size == 0)
|
|
|
|
return (sizeof(int) + vesa_state_buf_size);
|
|
|
|
else if (size < (sizeof(int) + vesa_state_buf_size))
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
((adp_state_t *)p)->sig = V_STATE_SIG;
|
|
|
|
bzero(((adp_state_t *)p)->regs, vesa_state_buf_size);
|
|
|
|
return vesa_bios_save_restore(STATE_SAVE, ((adp_state_t *)p)->regs,
|
|
|
|
vesa_state_buf_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_load_state(video_adapter_t *adp, void *p)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
if ((adp != vesa_adp) || (((adp_state_t *)p)->sig != V_STATE_SIG))
|
|
|
|
return (*prevvidsw->load_state)(adp, p);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
return vesa_bios_save_restore(STATE_LOAD, ((adp_state_t *)p)->regs,
|
|
|
|
vesa_state_buf_size);
|
|
|
|
}
|
|
|
|
|
1999-07-01 15:05:11 +00:00
|
|
|
#if 0
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
static int
|
|
|
|
vesa_get_origin(video_adapter_t *adp, off_t *offset)
|
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f05;
|
|
|
|
vmf.vmf_ebx = 0x10; /* WINDOW_A, XXX */
|
|
|
|
err = vm86_intcall(0x10, &vmf);
|
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 1;
|
|
|
|
*offset = vmf.vmf_dx*adp->va_window_gran;
|
|
|
|
return 0;
|
|
|
|
}
|
1999-07-01 15:05:11 +00:00
|
|
|
#endif
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_set_origin(video_adapter_t *adp, off_t offset)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
|
|
|
struct vm86frame vmf;
|
|
|
|
int err;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This function should return as quickly as possible to
|
|
|
|
* maintain good performance of the system. For this reason,
|
|
|
|
* error checking is kept minimal and let the VESA BIOS to
|
|
|
|
* detect error.
|
|
|
|
*/
|
1999-01-11 03:18:56 +00:00
|
|
|
if (adp != vesa_adp)
|
|
|
|
return (*prevvidsw->set_win_org)(adp, offset);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
/* if this is a linear frame buffer, do nothing */
|
|
|
|
if (adp->va_info.vi_flags & V_INFO_LINEAR)
|
|
|
|
return 0;
|
|
|
|
/* XXX */
|
|
|
|
if (adp->va_window_gran == 0)
|
1998-09-15 18:16:39 +00:00
|
|
|
return 1;
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f05;
|
|
|
|
vmf.vmf_ebx = 0; /* WINDOW_A, XXX */
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vmf.vmf_edx = offset/adp->va_window_gran;
|
1998-09-15 18:16:39 +00:00
|
|
|
err = vm86_intcall(0x10, &vmf);
|
1999-02-05 11:52:13 +00:00
|
|
|
if ((err != 0) || (vmf.vmf_eax != 0x4f))
|
|
|
|
return 1;
|
|
|
|
bzero(&vmf, sizeof(vmf));
|
|
|
|
vmf.vmf_eax = 0x4f05;
|
|
|
|
vmf.vmf_ebx = 1; /* WINDOW_B, XXX */
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vmf.vmf_edx = offset/adp->va_window_gran;
|
1999-02-05 11:52:13 +00:00
|
|
|
err = vm86_intcall(0x10, &vmf);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
adp->va_window_orig = (offset/adp->va_window_gran)*adp->va_window_gran;
|
1999-02-05 11:52:13 +00:00
|
|
|
return 0; /* XXX */
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_read_hw_cursor(video_adapter_t *adp, int *col, int *row)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->read_hw_cursor)(adp, col, row);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_set_hw_cursor(video_adapter_t *adp, int col, int row)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->set_hw_cursor)(adp, col, row);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_set_hw_cursor_shape(video_adapter_t *adp, int base, int height,
|
|
|
|
int celsize, int blink)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-01-11 03:18:56 +00:00
|
|
|
return (*prevvidsw->set_hw_cursor_shape)(adp, base, height, celsize,
|
|
|
|
blink);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_blank_display(video_adapter_t *adp, int mode)
|
1999-01-11 03:18:56 +00:00
|
|
|
{
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
/* XXX: use VESA DPMS */
|
|
|
|
return (*prevvidsw->blank_display)(adp, mode);
|
1999-01-11 03:18:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_mmap(video_adapter_t *adp, vm_offset_t offset, int prot)
|
1999-01-11 03:18:56 +00:00
|
|
|
{
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
#if VESA_DEBUG > 0
|
|
|
|
printf("vesa_mmap(): window:0x%x, buffer:0x%x, offset:0x%x\n",
|
|
|
|
adp->va_info.vi_window, adp->va_info.vi_buffer, offset);
|
1999-01-11 03:18:56 +00:00
|
|
|
#endif
|
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
if ((adp == vesa_adp) && (adp->va_info.vi_flags & V_INFO_LINEAR)) {
|
|
|
|
/* va_window_size == va_buffer_size/vi_planes */
|
|
|
|
/* XXX: is this correct? */
|
|
|
|
if (offset > adp->va_window_size - PAGE_SIZE)
|
|
|
|
return -1;
|
|
|
|
#ifdef __i386__
|
|
|
|
return i386_btop(adp->va_info.vi_buffer + offset);
|
|
|
|
#endif
|
|
|
|
#ifdef __alpha__ /* XXX */
|
|
|
|
return alpha_btop(adp->va_info.vi_buffer + offset);
|
|
|
|
#endif
|
|
|
|
} else {
|
|
|
|
return (*prevvidsw->mmap)(adp, offset, prot);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_clear(video_adapter_t *adp)
|
|
|
|
{
|
|
|
|
return (*prevvidsw->clear)(adp);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
|
|
|
|
{
|
|
|
|
return (*prevvidsw->fill_rect)(adp, val, x, y, cx, cy);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_bitblt(video_adapter_t *adp,...)
|
|
|
|
{
|
|
|
|
/* FIXME */
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
get_palette(video_adapter_t *adp, int base, int count,
|
|
|
|
u_char *red, u_char *green, u_char *blue, u_char *trans)
|
|
|
|
{
|
|
|
|
u_char *r;
|
|
|
|
u_char *g;
|
|
|
|
u_char *b;
|
|
|
|
int bits;
|
|
|
|
int error;
|
|
|
|
|
|
|
|
if ((base < 0) || (base >= 256) || (base + count > 256))
|
|
|
|
return 1;
|
|
|
|
if (!(vesa_adp_info->v_flags & V_DAC8) || !VESA_MODE(adp->va_mode))
|
1999-01-11 03:18:56 +00:00
|
|
|
return 1;
|
1998-09-15 18:16:39 +00:00
|
|
|
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
bits = vesa_bios_get_dac();
|
|
|
|
if (bits <= 6)
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
r = malloc(count*3, M_DEVBUF, M_WAITOK);
|
|
|
|
g = r + count;
|
|
|
|
b = g + count;
|
|
|
|
error = vesa_bios_save_palette2(base, count, r, g, b, bits);
|
|
|
|
if (error == 0) {
|
|
|
|
copyout(r, red, count);
|
|
|
|
copyout(g, green, count);
|
|
|
|
copyout(b, blue, count);
|
|
|
|
if (trans != NULL) {
|
|
|
|
bzero(r, count);
|
|
|
|
copyout(r, trans, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
free(r, M_DEVBUF);
|
|
|
|
|
|
|
|
/* if error && bits != 6 at this point, we are in in trouble... XXX */
|
|
|
|
return error;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
set_palette(video_adapter_t *adp, int base, int count,
|
|
|
|
u_char *red, u_char *green, u_char *blue, u_char *trans)
|
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
#if notyet
|
|
|
|
u_char *r;
|
|
|
|
u_char *g;
|
|
|
|
u_char *b;
|
|
|
|
int bits;
|
|
|
|
int error;
|
|
|
|
|
|
|
|
if ((base < 0) || (base >= 256) || (base + count > 256))
|
|
|
|
return 1;
|
|
|
|
if (!(vesa_adp_info->v_flags & V_DAC8) || !VESA_MODE(adp->va_mode)
|
|
|
|
|| ((bits = vesa_bios_set_dac(8)) <= 6))
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
r = malloc(count*3, M_DEVBUF, M_WAITOK);
|
|
|
|
g = r + count;
|
|
|
|
b = g + count;
|
|
|
|
copyin(red, r, count);
|
|
|
|
copyin(green, g, count);
|
|
|
|
copyin(blue, b, count);
|
|
|
|
|
|
|
|
error = vesa_bios_load_palette2(base, count, r, g, b, bits);
|
|
|
|
free(r, M_DEVBUF);
|
|
|
|
if (error == 0)
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
/* if the following call fails, we are in trouble... XXX */
|
|
|
|
vesa_bios_set_dac(6);
|
|
|
|
return 1;
|
|
|
|
#endif /* notyet */
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_ioctl(video_adapter_t *adp, u_long cmd, caddr_t arg)
|
|
|
|
{
|
|
|
|
if (adp != vesa_adp)
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
|
|
|
|
switch (cmd) {
|
|
|
|
case FBIO_SETWINORG: /* set frame buffer window origin */
|
|
|
|
return (vesa_set_origin(adp, *(off_t *)arg) ? ENODEV : 0);
|
|
|
|
|
|
|
|
case FBIO_SETDISPSTART: /* set display start address */
|
|
|
|
if (vesa_bios_set_start(((video_display_start_t *)arg)->x,
|
|
|
|
((video_display_start_t *)arg)->y))
|
|
|
|
return ENODEV;
|
|
|
|
adp->va_disp_start.x = ((video_display_start_t *)arg)->x;
|
|
|
|
adp->va_disp_start.y = ((video_display_start_t *)arg)->y;
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
case FBIO_SETLINEWIDTH: /* set line length in pixel */
|
|
|
|
if (vesa_bios_set_line_length(*(u_int *)arg))
|
|
|
|
return ENODEV;
|
|
|
|
adp->va_line_width = (*(u_int *)arg + 7)/8;
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
case FBIO_GETPALETTE: /* get color palette */
|
|
|
|
if (get_palette(adp, ((video_color_palette_t *)arg)->index,
|
|
|
|
((video_color_palette_t *)arg)->count,
|
|
|
|
((video_color_palette_t *)arg)->red,
|
|
|
|
((video_color_palette_t *)arg)->green,
|
|
|
|
((video_color_palette_t *)arg)->blue,
|
|
|
|
((video_color_palette_t *)arg)->transparent))
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
case FBIO_SETPALETTE: /* set color palette */
|
|
|
|
if (set_palette(adp, ((video_color_palette_t *)arg)->index,
|
|
|
|
((video_color_palette_t *)arg)->count,
|
|
|
|
((video_color_palette_t *)arg)->red,
|
|
|
|
((video_color_palette_t *)arg)->green,
|
|
|
|
((video_color_palette_t *)arg)->blue,
|
|
|
|
((video_color_palette_t *)arg)->transparent))
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
case FBIOGETCMAP: /* get color palette */
|
|
|
|
if (get_palette(adp, ((struct fbcmap *)arg)->index,
|
|
|
|
((struct fbcmap *)arg)->count,
|
|
|
|
((struct fbcmap *)arg)->red,
|
|
|
|
((struct fbcmap *)arg)->green,
|
|
|
|
((struct fbcmap *)arg)->blue, NULL))
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
case FBIOPUTCMAP: /* set color palette */
|
|
|
|
if (set_palette(adp, ((struct fbcmap *)arg)->index,
|
|
|
|
((struct fbcmap *)arg)->count,
|
|
|
|
((struct fbcmap *)arg)->red,
|
|
|
|
((struct fbcmap *)arg)->green,
|
|
|
|
((struct fbcmap *)arg)->blue, NULL))
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return (*prevvidsw->ioctl)(adp, cmd, arg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_diag(video_adapter_t *adp, int level)
|
|
|
|
{
|
|
|
|
int error;
|
|
|
|
|
1998-09-23 09:59:00 +00:00
|
|
|
/* call the previous handler first */
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
error = (*prevvidsw->diag)(adp, level);
|
|
|
|
if (error)
|
|
|
|
return error;
|
|
|
|
|
|
|
|
if (adp != vesa_adp)
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
if (level <= 0)
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vesa_bios_info(int level)
|
|
|
|
{
|
|
|
|
#if VESA_DEBUG > 1
|
|
|
|
struct vesa_mode vmode;
|
|
|
|
int i;
|
1998-09-23 09:59:00 +00:00
|
|
|
#endif
|
|
|
|
|
1998-09-15 18:16:39 +00:00
|
|
|
/* general adapter information */
|
|
|
|
printf("VESA: v%d.%d, %dk memory, flags:0x%x, mode table:%p (%x)\n",
|
|
|
|
((vesa_adp_info->v_version & 0xf000) >> 12) * 10
|
|
|
|
+ ((vesa_adp_info->v_version & 0x0f00) >> 8),
|
|
|
|
((vesa_adp_info->v_version & 0x00f0) >> 4) * 10
|
|
|
|
+ (vesa_adp_info->v_version & 0x000f),
|
|
|
|
vesa_adp_info->v_memsize * 64, vesa_adp_info->v_flags,
|
|
|
|
vesa_vmodetab, vesa_adp_info->v_modetable);
|
|
|
|
/* OEM string */
|
1998-10-01 11:39:18 +00:00
|
|
|
if (vesa_oemstr != NULL)
|
|
|
|
printf("VESA: %s\n", vesa_oemstr);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
if (level <= 0)
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
if (vesa_adp_info->v_version >= 0x0200) {
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
/* vender name, product name, product revision */
|
|
|
|
printf("VESA: %s %s %s\n",
|
|
|
|
(vesa_venderstr != NULL) ? vesa_venderstr : "unknown",
|
|
|
|
(vesa_prodstr != NULL) ? vesa_prodstr : "unknown",
|
|
|
|
(vesa_revstr != NULL) ? vesa_revstr : "?");
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
#if VESA_DEBUG > 1
|
1998-09-15 18:16:39 +00:00
|
|
|
/* mode information */
|
1998-10-01 11:39:18 +00:00
|
|
|
for (i = 0;
|
|
|
|
(i < (M_VESA_MODE_MAX - M_VESA_BASE + 1))
|
|
|
|
&& (vesa_vmodetab[i] != 0xffff); ++i) {
|
1998-09-15 18:16:39 +00:00
|
|
|
if (vesa_bios_get_mode(vesa_vmodetab[i], &vmode))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
/* print something for diagnostic purpose */
|
|
|
|
printf("VESA: mode:0x%03x, flags:0x%04x",
|
|
|
|
vesa_vmodetab[i], vmode.v_modeattr);
|
|
|
|
if (vmode.v_modeattr & V_MODEOPTINFO) {
|
|
|
|
if (vmode.v_modeattr & V_MODEGRAPHICS) {
|
|
|
|
printf(", G %dx%dx%d %d, ",
|
|
|
|
vmode.v_width, vmode.v_height,
|
|
|
|
vmode.v_bpp, vmode.v_planes);
|
|
|
|
} else {
|
|
|
|
printf(", T %dx%d, ",
|
|
|
|
vmode.v_width, vmode.v_height);
|
|
|
|
}
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
printf("font:%dx%d, ",
|
1998-09-15 18:16:39 +00:00
|
|
|
vmode.v_cwidth, vmode.v_cheight);
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
printf("pages:%d, mem:%d",
|
|
|
|
vmode.v_ipages + 1, vmode.v_memmodel);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
if (vmode.v_modeattr & V_MODELFB) {
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
printf("\nVESA: LFB:0x%x, off:0x%x, off_size:0x%x",
|
|
|
|
vmode.v_lfb, vmode.v_offscreen,
|
|
|
|
vmode.v_offscreensize*1024);
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
printf("VESA: window A:0x%x (%x), window B:0x%x (%x), ",
|
|
|
|
vmode.v_waseg, vmode.v_waattr,
|
|
|
|
vmode.v_wbseg, vmode.v_wbattr);
|
|
|
|
printf("size:%dk, gran:%dk\n",
|
|
|
|
vmode.v_wsize, vmode.v_wgran);
|
|
|
|
}
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
#endif /* VESA_DEBUG > 1 */
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* module loading */
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
static int
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_load(void)
|
|
|
|
{
|
|
|
|
int error;
|
|
|
|
int s;
|
|
|
|
|
|
|
|
if (vesa_init_done)
|
|
|
|
return 0;
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
/* locate a VGA adapter */
|
1998-09-15 18:16:39 +00:00
|
|
|
s = spltty();
|
1999-01-11 03:18:56 +00:00
|
|
|
vesa_adp = NULL;
|
|
|
|
error = vesa_configure(0);
|
1998-09-15 18:16:39 +00:00
|
|
|
splx(s);
|
|
|
|
|
|
|
|
if (error == 0)
|
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.
1999-06-22 14:14:06 +00:00
|
|
|
vesa_bios_info(bootverbose);
|
1998-09-15 18:16:39 +00:00
|
|
|
|
|
|
|
return error;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
1998-12-30 11:21:08 +00:00
|
|
|
vesa_unload(void)
|
1998-09-15 18:16:39 +00:00
|
|
|
{
|
1999-03-29 15:10:56 +00:00
|
|
|
u_char palette[256*3];
|
1998-09-15 18:16:39 +00:00
|
|
|
int error;
|
1999-03-29 15:10:56 +00:00
|
|
|
int bits;
|
1998-09-15 18:16:39 +00:00
|
|
|
int s;
|
|
|
|
|
|
|
|
/* if the adapter is currently in a VESA mode, don't unload */
|
|
|
|
if ((vesa_adp != NULL) && VESA_MODE(vesa_adp->va_mode))
|
|
|
|
return EBUSY;
|
|
|
|
/*
|
|
|
|
* FIXME: if there is at least one vty which is in a VESA mode,
|
|
|
|
* we shouldn't be unloading! XXX
|
|
|
|
*/
|
|
|
|
|
|
|
|
s = spltty();
|
|
|
|
if ((error = vesa_unload_ioctl()) == 0) {
|
1999-02-20 03:05:37 +00:00
|
|
|
if (vesa_adp != NULL) {
|
1999-03-29 15:10:56 +00:00
|
|
|
if (vesa_adp_info->v_flags & V_DAC8) {
|
|
|
|
bits = vesa_bios_get_dac();
|
|
|
|
if (bits > 6) {
|
|
|
|
vesa_bios_save_palette(0, 256,
|
|
|
|
palette, bits);
|
|
|
|
vesa_bios_set_dac(6);
|
|
|
|
vesa_bios_load_palette(0, 256,
|
|
|
|
palette, 6);
|
|
|
|
}
|
|
|
|
}
|
1998-09-15 18:16:39 +00:00
|
|
|
vesa_adp->va_flags &= ~V_ADP_VESA;
|
1999-02-20 03:05:37 +00:00
|
|
|
vidsw[vesa_adp->va_index] = prevvidsw;
|
|
|
|
}
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
splx(s);
|
|
|
|
|
|
|
|
return error;
|
|
|
|
}
|
|
|
|
|
1998-12-30 11:21:08 +00:00
|
|
|
static int
|
|
|
|
vesa_mod_event(module_t mod, int type, void *data)
|
|
|
|
{
|
|
|
|
switch (type) {
|
|
|
|
case MOD_LOAD:
|
|
|
|
return vesa_load();
|
|
|
|
case MOD_UNLOAD:
|
|
|
|
return vesa_unload();
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return 0;
|
1998-09-15 18:16:39 +00:00
|
|
|
}
|
|
|
|
|
1998-12-30 11:21:08 +00:00
|
|
|
static moduledata_t vesa_mod = {
|
|
|
|
"vesa",
|
|
|
|
vesa_mod_event,
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
1999-01-11 03:18:56 +00:00
|
|
|
DECLARE_MODULE(vesa, vesa_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
|
|
|
|
|
1999-06-01 18:20:36 +00:00
|
|
|
#endif /* (NVGA > 0 && VESA) || KLD_MODULE */
|