167 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
| /* 
 | |
| Copyright (c) 2000 by Juliusz Chroboczek
 | |
|  
 | |
| Permission is hereby granted, free of charge, to any person obtaining a copy
 | |
| of this software and associated documentation files (the "Software"), to deal
 | |
| in the Software without restriction, including without limitation the rights
 | |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | |
| copies of the Software, and to permit persons to whom the Software is
 | |
| furnished to do so, subject to the following conditions: 
 | |
|  
 | |
| The above copyright notice and this permission notice shall be included in
 | |
| all copies or substantial portions of the Software. 
 | |
| 
 | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 | |
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | |
| THE SOFTWARE.
 | |
| */
 | |
| /* $RCSId: xc/programs/Xserver/hw/kdrive/vesa/vbe.h,v 1.6 2001/05/29 04:54:12 keithp Exp $ */
 | |
| 
 | |
| #ifndef _VBE_H
 | |
| #define _VBE_H
 | |
| 
 | |
| #define VBE_WINDOW_RELOCATE 1
 | |
| #define VBE_WINDOW_READ 2
 | |
| #define VBE_WINDOW_WRITE 4
 | |
| 
 | |
| typedef struct _VbeInfoBlock {
 | |
|     U8 VbeSignature[4];         /* VBE Signature */
 | |
|     U16 VbeVersion;             /* VBE Version */
 | |
|     U32 OemStringPtr;           /* Pointer to OEM String */
 | |
|     U8 Capabilities[4];         /* Capabilities of graphics controller */
 | |
|     U32 VideoModePtr;           /* Pointer to VideoModeList */
 | |
|     U16 TotalMemory;            /* Number of 64kb memory blocks */
 | |
| /* Added for VBE 2.0 */
 | |
|     U16 OemSoftwareRev;         /* VBE implementation Software revision */
 | |
|     U32 OemVendorNamePtr;       /* Pointer to Vendor Name String */
 | |
|     U32 OemProductNamePtr;	/* Pointer to Product Name String */
 | |
|     U32 OemProductRevPtr;       /* Pointer to Product Revision String */
 | |
|     U8 Reserved[222];           /* Reserved for VBE implementation */
 | |
|     U8 OemData[256];            /* Data Area for OEM Strings*/
 | |
| } __attribute__((packed)) VbeInfoBlock;
 | |
| 
 | |
| typedef struct _VbeModeInfoBlock {
 | |
| /* Mandatory information for all VBE revisions */
 | |
|     U16 ModeAttributes;         /* mode attributes */
 | |
|     U8 WinAAttributes;          /* window A attributes */
 | |
|     U8 WinBAttributes;          /* window B attributes */
 | |
|     U16 WinGranularity;         /* window granularity */
 | |
|     U16 WinSize;                /* window size */
 | |
|     U16 WinASegment;            /* window A start segment */
 | |
|     U16 WinBSegment;            /* window B start segment */
 | |
|     U32 WinFuncPtr;             /* pointer to window function */
 | |
|     U16 BytesPerScanLine;       /* bytes per scan line */
 | |
| /* Mandatory information for VBE 1.2 and above */
 | |
|     U16 XResolution;            /* horizontal resolution */
 | |
|     U16 YResolution;            /* vertical resolution */
 | |
|     U8 XCharSize;               /* character cell width in pixels */
 | |
|     U8 YCharSize;               /* character cell height in pixels */
 | |
|     U8 NumberOfPlanes;          /* number of memory planes */
 | |
|     U8 BitsPerPixel;            /* bits per pixel */
 | |
|     U8 NumberOfBanks;           /* number of banks */
 | |
|     U8 MemoryModel;             /* memory model type */
 | |
|     U8 BankSize;                /* bank size in KB */
 | |
|     U8 NumberOfImagePages;      /* number of images */
 | |
|     U8 Reserved;                /* reserved for page function */
 | |
| /* Direct Color fields (required for direct/6 and YUV/7 memory models) */
 | |
|     U8 RedMaskSize;             /* size of direct color red mask in bits */
 | |
|     U8 RedFieldPosition;        /* bit position of lsb of red mask */
 | |
|     U8 GreenMaskSize;           /* size of direct color green mask in bits */
 | |
|     U8 GreenFieldPosition;      /* bit position of lsb of green mask */
 | |
|     U8 BlueMaskSize;            /* size of direct color blue mask in bits */
 | |
|     U8 BlueFieldPosition;       /* bit position of lsb of blue mask */
 | |
|     U8 RsvdMaskSize;            /* size of direct color reserved mask bits*/
 | |
|     U8 RsvdFieldPosition;       /* bit position of lsb of reserved mask */
 | |
|     U8 DirectColorModeInfo;     /* direct color mode attributes */
 | |
| /* Mandatory information for VBE 2.0 and above */
 | |
|     U32 PhysBasePtr;            /* physical address for flat memory fb */
 | |
|     U32 OffScreenMemOffset;     /* pointer to start of off screen memory */
 | |
|     U16 OffScreenMemSize;       /* amount of off screen memory in 1k units */
 | |
|     U8 Reserved2[206];          /* remainder of ModeInfoBlock */
 | |
| } __attribute__((packed)) VbeModeInfoBlock;
 | |
| 
 | |
| typedef struct _VbeInfoRec {
 | |
|     U8			palette_format;
 | |
|     int			palette_wait;
 | |
|     int			windowA_offset;
 | |
|     int			windowB_offset;
 | |
|     int			window_size;
 | |
|     int			last_window;
 | |
|     VbeModeInfoBlock	vmib;
 | |
| } VbeInfoRec, *VbeInfoPtr;
 | |
| 
 | |
| typedef struct _SupVbeInfoBlock {
 | |
|     U8 SupVbeSignature[7];      /* Supplemental VBE Signature */
 | |
|     U16 SupVbeVersion;          /* Supplemental VBE Version*/
 | |
|     U8 SupVbeSubFunc[8];	/* Bitfield of supported subfunctions */
 | |
|     U16 OemSoftwareRev;         /* OEM Software revision */
 | |
|     U32 OemVendorNamePtr;       /* Pointer to Vendor Name String */
 | |
|     U32 OemProductNamePtr;	/* Pointer to Product Name String */
 | |
|     U32 OemProductRevPtr;       /* Pointer to Product Revision String */
 | |
|     U32 OemStringPtr;           /* Pointer to OEM String */
 | |
|     U8 Reserved[221];           /* Reserved */
 | |
| } __attribute__((packed)) SupVbeInfoBlock;
 | |
| 
 | |
| int
 | |
| VbeGetVib (Vm86InfoPtr vi, VbeInfoBlock *vib);
 | |
| 
 | |
| int
 | |
| VbeGetVmib (Vm86InfoPtr vi, int mode, VbeModeInfoBlock *vmib);
 | |
| 
 | |
| void
 | |
| VbeReportInfo (Vm86InfoPtr vi);
 | |
| 
 | |
| int
 | |
| VbeGetNmode (Vm86InfoPtr vi);
 | |
| 
 | |
| int
 | |
| VbeGetModes (Vm86InfoPtr vi, VesaModePtr modes, int nmode);
 | |
| 
 | |
| VbeInfoPtr
 | |
| VbeInit (Vm86InfoPtr vi);
 | |
| 
 | |
| void
 | |
| VbeCleanup (Vm86InfoPtr vi, VbeInfoPtr vbe);
 | |
| 
 | |
| int
 | |
| VbeSetMode (Vm86InfoPtr vi, VbeInfoPtr vbe, int mode, int linear, int direct);
 | |
| 
 | |
| int 
 | |
| VbeGetMode(Vm86InfoPtr vi, int *mode);
 | |
| 
 | |
| void *
 | |
| VbeMapFramebuffer(Vm86InfoPtr vi, VbeInfoPtr vbe, int mode, int *ret_size, CARD32 *ret_phys);
 | |
| 
 | |
| void
 | |
| VbeUnmapFramebuffer(Vm86InfoPtr vi, VbeInfoPtr vbe, int mode, void *fb);
 | |
| 
 | |
| int 
 | |
| VbeSetPalette(Vm86InfoPtr vi, VbeInfoPtr vbe, int first, int number, U8 *entries);
 | |
| 
 | |
| int 
 | |
| VbeGetPalette(Vm86InfoPtr vi, VbeInfoPtr vbe, int first, int number, U8 *entries);
 | |
| 
 | |
| int 
 | |
| VbeSetPaletteOptions(Vm86InfoPtr vi, VbeInfoPtr vbe, U8 bits, int wait);
 | |
| 
 | |
| void *
 | |
| VbeSetWindow(Vm86InfoPtr vi, VbeInfoPtr vbe, int offset, int purpose, int *size_return);
 | |
| 
 | |
| Bool
 | |
| VbeDPMS(Vm86InfoPtr vi, int mode);
 | |
|     
 | |
| int
 | |
| VbeDoInterrupt10(Vm86InfoPtr vi);
 | |
| 
 | |
| Bool
 | |
| VbeBoot(Vm86InfoPtr vi);
 | |
| 
 | |
| int
 | |
| VbeDoInterruptE6(Vm86InfoPtr vi);
 | |
| 
 | |
| #endif
 |