/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Miniature VGA driver for bootstrap.
*/
#include <sys/archsystm.h>
#include "boot_vga.h"
#if defined(_BOOT)
#include "../dboot/dboot_asm.h"
#include "../dboot/dboot_xboot.h"
#endif
/*
* Device memory address
*
* In dboot under the hypervisor we don't have any memory mappings
* for the first meg of low memory so we can't access devices there.
* Intead we've mapped the device memory that we need to access into
* a local variable within dboot so we can access the device memory
* there.
*/
extern unsigned short *video_fb;
#else /* __xpv && _BOOT */
/* Device memory address */
#endif /* __xpv && _BOOT */
static unsigned char vga_get_crtc(int index);
void
vga_cursor_display(void)
{
/*
* Figure out the maximum scan line value. We need this to set the
* cursor size.
*/
/*
* Enable the cursor and set it's size. Preserve the upper two
* bits of the control register.
* - Bits 0-4 are the starting scan line of the cursor.
* Scanning is done from top-to-bottom. The top-most scan
* line is 0 and the bottom most scan line is the maximum scan
* line value.
* - Bit 5 is the cursor disable bit.
*/
/*
* Continue setting the cursors size.
* - Bits 0-4 are the ending scan line of the cursor.
* Scanning is done from top-to-bottom. The top-most scan
* line is 0 and the bottom most scan line is the maximum scan
* line value.
* - Bits 5-6 are the cursor skew.
*/
}
void
{
unsigned short val;
int i;
for (i = 0; i < VGA_TEXT_ROWS * VGA_TEXT_COLS; i++) {
VGA_SCREEN[i] = val;
}
}
void
{
int row;
int col;
}
void
{
unsigned short val;
int i;
}
for (; i < VGA_TEXT_ROWS * VGA_TEXT_COLS; i++) {
VGA_SCREEN[i] = val;
}
}
void
{
int off;
}
void
{
int off;
}
static void
{
}
static unsigned char
{
return (inb(VGA_COLOR_CRTC_DATA));
}