1f45c063aSXin LI /*- 2f45c063aSXin LI * Copyright (c) 1998 Michael Smith and Kazutaka YOKOTA 3f45c063aSXin LI * All rights reserved. 4f45c063aSXin LI * 5f45c063aSXin LI * Redistribution and use in source and binary forms, with or without 6f45c063aSXin LI * modification, are permitted provided that the following conditions 7f45c063aSXin LI * are met: 8f45c063aSXin LI * 1. Redistributions of source code must retain the above copyright 9f45c063aSXin LI * notice, this list of conditions and the following disclaimer as 10f45c063aSXin LI * the first lines of this file unmodified. 11f45c063aSXin LI * 2. Redistributions in binary form must reproduce the above copyright 12f45c063aSXin LI * notice, this list of conditions and the following disclaimer in the 13f45c063aSXin LI * documentation and/or other materials provided with the distribution. 14f45c063aSXin LI * 15f45c063aSXin LI * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR 16f45c063aSXin LI * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17f45c063aSXin LI * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18f45c063aSXin LI * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19f45c063aSXin LI * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20f45c063aSXin LI * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21f45c063aSXin LI * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22f45c063aSXin LI * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23f45c063aSXin LI * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24f45c063aSXin LI * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25f45c063aSXin LI * 26f45c063aSXin LI * $FreeBSD$ 27f45c063aSXin LI */ 28f45c063aSXin LI 29f45c063aSXin LI #ifndef _MACHINE_PC_VESA_H 30f45c063aSXin LI #define _MACHINE_PC_VESA_H 31f45c063aSXin LI 32f45c063aSXin LI struct vesa_info 33f45c063aSXin LI { 34f45c063aSXin LI /* mandatory fields */ 35f45c063aSXin LI u_int8_t v_sig[4]; /* VESA */ 36f45c063aSXin LI u_int16_t v_version; /* ver in BCD */ 37f45c063aSXin LI u_int32_t v_oemstr; /* OEM string */ 38f45c063aSXin LI u_int32_t v_flags; /* flags */ 39f45c063aSXin LI #define V_DAC8 (1<<0) 40f45c063aSXin LI #define V_NONVGA (1<<1) 41f45c063aSXin LI #define V_SNOW (1<<2) 42f45c063aSXin LI u_int32_t v_modetable; /* modes */ 43f45c063aSXin LI u_int16_t v_memsize; /* in 64K */ 44f45c063aSXin LI /* 2.0 */ 45f45c063aSXin LI u_int16_t v_revision; /* software rev */ 46f45c063aSXin LI u_int32_t v_venderstr; /* vender */ 47f45c063aSXin LI u_int32_t v_prodstr; /* product name */ 48f45c063aSXin LI u_int32_t v_revstr; /* product rev */ 49f45c063aSXin LI } __packed; 50f45c063aSXin LI 51f45c063aSXin LI struct vesa_mode 52f45c063aSXin LI { 53f45c063aSXin LI /* mandatory fields */ 54f45c063aSXin LI u_int16_t v_modeattr; 55f45c063aSXin LI #define V_MODESUPP (1<<0) /* VESA mode attributes */ 56f45c063aSXin LI #define V_MODEOPTINFO (1<<1) 57f45c063aSXin LI #define V_MODEBIOSOUT (1<<2) 58f45c063aSXin LI #define V_MODECOLOR (1<<3) 59f45c063aSXin LI #define V_MODEGRAPHICS (1<<4) 60f45c063aSXin LI #define V_MODENONVGA (1<<5) 61f45c063aSXin LI #define V_MODENONBANK (1<<6) 62f45c063aSXin LI #define V_MODELFB (1<<7) 63f45c063aSXin LI #define V_MODEVESA (1<<16) /* Private attributes */ 64f45c063aSXin LI u_int8_t v_waattr; 65f45c063aSXin LI u_int8_t v_wbattr; 66f45c063aSXin LI #define V_WATTREXIST (1<<0) 67f45c063aSXin LI #define V_WATTRREAD (1<<1) 68f45c063aSXin LI #define V_WATTRWRITE (1<<2) 69f45c063aSXin LI u_int16_t v_wgran; 70f45c063aSXin LI u_int16_t v_wsize; 71f45c063aSXin LI u_int16_t v_waseg; 72f45c063aSXin LI u_int16_t v_wbseg; 73f45c063aSXin LI u_int32_t v_posfunc; 74f45c063aSXin LI u_int16_t v_bpscanline; 75f45c063aSXin LI /* fields optional for 1.0/1.1 implementations */ 76f45c063aSXin LI u_int16_t v_width; 77f45c063aSXin LI u_int16_t v_height; 78f45c063aSXin LI u_int8_t v_cwidth; 79f45c063aSXin LI u_int8_t v_cheight; 80f45c063aSXin LI u_int8_t v_planes; 81f45c063aSXin LI u_int8_t v_bpp; 82f45c063aSXin LI u_int8_t v_banks; 83f45c063aSXin LI u_int8_t v_memmodel; 84f45c063aSXin LI #define V_MMTEXT 0 85f45c063aSXin LI #define V_MMCGA 1 86f45c063aSXin LI #define V_MMHGC 2 87f45c063aSXin LI #define V_MMEGA 3 88f45c063aSXin LI #define V_MMPACKED 4 89f45c063aSXin LI #define V_MMSEQU256 5 90f45c063aSXin LI #define V_MMDIRCOLOR 6 91f45c063aSXin LI #define V_MMYUV 7 92f45c063aSXin LI u_int8_t v_banksize; 93f45c063aSXin LI u_int8_t v_ipages; 94f45c063aSXin LI u_int8_t v_reserved0; 95f45c063aSXin LI /* fields for 1.2+ implementations */ 96f45c063aSXin LI u_int8_t v_redmasksize; 97f45c063aSXin LI u_int8_t v_redfieldpos; 98f45c063aSXin LI u_int8_t v_greenmasksize; 99f45c063aSXin LI u_int8_t v_greenfieldpos; 100f45c063aSXin LI u_int8_t v_bluemasksize; 101f45c063aSXin LI u_int8_t v_bluefieldpos; 102f45c063aSXin LI u_int8_t v_resmasksize; 103f45c063aSXin LI u_int8_t v_resfieldpos; 104f45c063aSXin LI u_int8_t v_dircolormode; 105f45c063aSXin LI /* 2.0 implementations */ 106f45c063aSXin LI u_int32_t v_lfb; 107f45c063aSXin LI u_int32_t v_offscreen; 108f45c063aSXin LI u_int16_t v_offscreensize; 109f45c063aSXin LI }; 110f45c063aSXin LI 111f45c063aSXin LI #ifdef _KERNEL 112f45c063aSXin LI 113f45c063aSXin LI #define VESA_MODE(x) ((x) >= M_VESA_BASE) 114f45c063aSXin LI 115f45c063aSXin LI int vesa_load_ioctl(void); 116f45c063aSXin LI int vesa_unload_ioctl(void); 117f45c063aSXin LI 118f45c063aSXin LI #endif 119f45c063aSXin LI 120f45c063aSXin LI #endif /* !_MACHINE_PC_VESA_H */ 121