f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * XFree86 vbe module
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright 2000 Egbert Eich
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * The mode query/save/set/restore functions from the vesa driver
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * have been moved here.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Authors: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifndef _VBE_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define _VBE_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "xf86int10.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "xf86DDC.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef enum {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DDC_UNCHECKED,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DDC_NONE,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DDC_1,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DDC_2,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DDC_1_2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync}
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncddc_lvl;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86Int10InfoPtr pInt10;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int version;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer memory;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int real_mode_base;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_pages;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync Bool init_int10;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ddc_lvl ddc;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync Bool ddc_blank;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeInfoRec, *vbeInfoPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBE_VERSION_MAJOR(x) *((CARD8*)(&x) + 1)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBE_VERSION_MINOR(x) (CARD8)(x)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT vbeInfoPtr VBEInit(xf86Int10InfoPtr pInt, int entityIndex);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT vbeInfoPtr VBEExtendedInit(xf86Int10InfoPtr pInt, int entityIndex, int Flags);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void vbeFree(vbeInfoPtr pVbe);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT xf86MonPtr vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#pragma pack(1)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct vbeControllerInfoBlock {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 VbeSignature[4];
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 VbeVersion;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 OemStringPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Capabilities[4];
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 VideoModePtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 TotalMem;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 OemSoftwareRev;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 OemVendorNamePtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 OemProductNamePtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 OemProductRevPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Scratch[222];
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 OemData[256];
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeControllerInfoRec, *vbeControllerInfoPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#if defined(__GNUC__) || defined(__USLC__) || defined(__SUNPRO_C)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#pragma pack() /* All GCC versions recognise this syntax */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#else
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#pragma pack(0)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#if !( defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) )
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define __attribute__(a)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _VbeInfoBlock VbeInfoBlock;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _VbeModeInfoBlock VbeModeInfoBlock;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _VbeCRTCInfoBlock VbeCRTCInfoBlock;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 0
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstruct _VbeInfoBlock {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* VESA 1.2 fields */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 VESASignature[4]; /* VESA */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 VESAVersion; /* Higher byte major, lower byte minor */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /*CARD32*/char *OEMStringPtr; /* Pointer to OEM string */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Capabilities[4]; /* Capabilities of the video environment */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /*CARD32*/CARD16 *VideoModePtr; /* pointer to supported Super VGA modes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 TotalMemory; /* Number of 64kb memory blocks on board */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* if not VESA 2, 236 scratch bytes follow (256 bytes total size) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* VESA 2 fields */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 OemSoftwareRev; /* VBE implementation Software revision */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /*CARD32*/char *OemVendorNamePtr; /* Pointer to Vendor Name String */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /*CARD32*/char *OemProductNamePtr; /* Pointer to Product Name String */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /*CARD32*/char *OemProductRevPtr; /* Pointer to Product Revision String */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Reserved[222]; /* Reserved for VBE implementation */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 OemData[256]; /* Data Area for OEM Strings */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} __attribute__((packed));
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* Return Super VGA Information */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT VbeInfoBlock *VBEGetVBEInfo(vbeInfoPtr pVbe);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void VBEFreeVBEInfo(VbeInfoBlock *block);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstruct _VbeModeInfoBlock {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 ModeAttributes; /* mode attributes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 WinAAttributes; /* window A attributes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 WinBAttributes; /* window B attributes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 WinGranularity; /* window granularity */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 WinSize; /* window size */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 WinASegment; /* window A start segment */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 WinBSegment; /* window B start segment */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 WinFuncPtr; /* real mode pointer to window function */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 BytesPerScanline; /* bytes per scanline */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Mandatory information for VBE 1.2 and above */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 XResolution; /* horizontal resolution in pixels or characters */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 YResolution; /* vertical resolution in pixels or characters */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 XCharSize; /* character cell width in pixels */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 YCharSize; /* character cell height in pixels */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 NumberOfPlanes; /* number of memory planes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 BitsPerPixel; /* bits per pixel */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 NumberOfBanks; /* number of banks */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 MemoryModel; /* memory model type */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 BankSize; /* bank size in KB */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 NumberOfImages; /* number of images */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Reserved; /* 1 */ /* reserved for page function */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Direct color fields (required for direct/6 and YUV/7 memory models) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 RedMaskSize; /* size of direct color red mask in bits */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 RedFieldPosition; /* bit position of lsb of red mask */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 GreenMaskSize; /* size of direct color green mask in bits */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 GreenFieldPosition; /* bit position of lsb of green mask */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 BlueMaskSize; /* size of direct color blue mask in bits */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 BlueFieldPosition; /* bit position of lsb of blue mask */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 RsvdMaskSize; /* size of direct color reserved mask in bits */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 RsvdFieldPosition; /* bit position of lsb of reserved mask */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 DirectColorModeInfo; /* direct color mode attributes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Mandatory information for VBE 2.0 and above */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 PhysBasePtr; /* physical address for flat memory frame buffer */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 Reserved32; /* 0 */ /* Reserved - always set to 0 */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 Reserved16; /* 0 */ /* Reserved - always set to 0 */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Mandatory information for VBE 3.0 and above */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 LinBytesPerScanLine; /* bytes per scan line for linear modes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 BnkNumberOfImagePages; /* number of images for banked modes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinNumberOfImagePages; /* number of images for linear modes */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinRedMaskSize; /* size of direct color red mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinRedFieldPosition; /* bit position of lsb of red mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinGreenMaskSize; /* size of direct color green mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinGreenFieldPosition; /* bit position of lsb of green mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinBlueMaskSize; /* size of direct color blue mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinBlueFieldPosition; /* bit position of lsb of blue mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinRsvdMaskSize; /* size of direct color reserved mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 LinRsvdFieldPosition; /* bit position of lsb of reserved mask (linear modes) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 MaxPixelClock; /* maximum pixel clock (in Hz) for graphics mode */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Reserved2[189]; /* remainder of VbeModeInfoBlock */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} __attribute__((packed));
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* Return VBE Mode Information */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT VbeModeInfoBlock *VBEGetModeInfo(vbeInfoPtr pVbe, int mode);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void VBEFreeModeInfo(VbeModeInfoBlock *block);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CRTC_DBLSCAN (1<<0)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CRTC_INTERLACE (1<<1)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CRTC_NHSYNC (1<<2)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CRTC_NVSYNC (1<<3)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstruct _VbeCRTCInfoBlock {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 HorizontalTotal; /* Horizontal total in pixels */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 HorizontalSyncStart; /* Horizontal sync start in pixels */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 HorizontalSyncEnd; /* Horizontal sync end in pixels */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 VerticalTotal; /* Vertical total in lines */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 VerticalSyncStart; /* Vertical sync start in lines */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 VerticalSyncEnd; /* Vertical sync end in lines */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Flags; /* Flags (Interlaced, Double Scan etc) */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 PixelClock; /* Pixel clock in units of Hz */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD16 RefreshRate; /* Refresh rate in units of 0.01 Hz */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 Reserved[40]; /* remainder of ModeInfoBlock */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} __attribute__((packed));
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* VbeCRTCInfoBlock is in the VESA 3.0 specs */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *crtc);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 3
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBEGetVBEMode(vbeInfoPtr pVbe, int *mode);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 4
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* Save/Restore Super VGA video state */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* function values are (values stored in VESAPtr):
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * 0 := query & allocate amount of memory to save state
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * 1 := save state
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * 2 := restore state
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * function 0 called automatically if function 1 called without
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * a previous call to function 0.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef enum {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync MODE_QUERY,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync MODE_SAVE,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync MODE_RESTORE
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeSaveRestoreFunction;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncVBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction fuction,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer *memory, int *size, int *real_mode_pages);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 5
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncVBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 6
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef enum {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SCANWID_SET,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SCANWID_GET,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SCANWID_SET_BYTES,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SCANWID_GET_MAX
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeScanwidthCommand;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBESetLogicalScanline(pVbe, width) \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET, width, \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync NULL, NULL, NULL)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBESetLogicalScanlineBytes(pVbe, width) \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET_BYTES, width, \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync NULL, NULL, NULL)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBEGetLogicalScanline(pVbe, pixels, bytes, max) \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET, 0, \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pixels, bytes, max)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBEGetMaxLogicalScanline(pVbe, pixels, bytes, max) \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET_MAX, 0, \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pixels, bytes, max)
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync vbeScanwidthCommand command, int width,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *pixels, int *bytes, int *max);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 7
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* 16 bit code */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 8
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* if bits is 0, then it is a GET */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT 9
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * If getting a palette, the data argument is not used. It will return
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * the data.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * If setting a palette, it will return the pointer received on success,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * NULL on failure.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT CARD32 *VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 *data, Bool secondary, Bool wait_retrace);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VBEFreePaletteData(data) free(data)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * INT A
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _VBEpmi {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int seg_tbl;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int tbl_off;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int tbl_len;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} VBEpmi;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT VBEpmi *VBEGetVBEpmi(vbeInfoPtr pVbe);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define VESAFreeVBEpmi(pmi) free(pmi)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* high level helper functions */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _vbeModeInfoRec {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int width;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int height;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int bpp;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int n;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync struct _vbeModeInfoRec *next;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeModeInfoRec, *vbeModeInfoPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 *state;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD8 *pstate;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int statePage;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int stateSize;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int stateMode;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} vbeSaveRestoreRec, *vbeSaveRestorePtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncVBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync vbeSaveRestoreFunction function);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int Clock);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool VBEDPMSSet(vbeInfoPtr pVbe, int mode);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstruct vbePanelID {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync short hsize;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync short vsize;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync short fptype;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char redbpp;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char greenbpp;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char bluebpp;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char reservedbpp;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int reserved_offscreen_mem_size;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int reserved_offscreen_mem_pointer;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char reserved[14];
f0ab104f070bc7f569404826fea1828ed985638cvboxsync};
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void VBEInterpretPanelID(int scrnIndex, struct vbePanelID *data);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT struct vbePanelID *VBEReadPanelID(vbeInfoPtr pVbe);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif