xserver/hw/xorg/vbe Makefile.am, NONE, 1.1 vbe.c, NONE, 1.1 vbe.h,
NONE, 1.1 vbeModes.c, NONE, 1.1 vbeModes.h, NONE,
1.1 vbe_module.c, NONE, 1.1
Daniel Stone
xserver-commit at pdx.freedesktop.org
Sun Apr 25 23:52:25 EST 2004
- Previous message: xserver/hw/xorg/shadowfb Makefile.am, NONE, 1.1 sfbmodule.c, NONE,
1.1 shadow.c, NONE, 1.1 shadowfb.h, NONE, 1.1
- Next message: xserver/hw/xorg/vgahw Makefile.am, NONE, 1.1 vgaCmap.c, NONE,
1.1 vgaHW.c, NONE, 1.1 vgaHW.h, NONE, 1.1 vgaHWmodule.c, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: daniel
Update of /cvs/xserver/xserver/hw/xorg/vbe
In directory pdx:/tmp/cvs-serv17025/hw/xorg/vbe
Added Files:
Makefile.am vbe.c vbe.h vbeModes.c vbeModes.h vbe_module.c
Log Message:
Xizzle is dead, long live Xorg.
Re-import the DDX from X11R6.7, complete with automakey goodness, and do the
requisite configure.ac, et al, updates; also import the XKB extension from the
6.7 DIX.
Currently it'll link and then hang solid in RADEONInitAccel(), or the next
function if you enable NoAccel.
--- NEW FILE: Makefile.am ---
lib_LIBRARIES = libxorgvbe.a
libxorgvbe_a_SOURCES = vbe.c vbeModes.c vbe_module.c
INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
-I$(srcdir)/../int10
AM_CFLAGS = $(XORG_CFLAGS)
sdk_INCLUDEDIR = $(includedir)/xorg
sdk_INCLUDES = vbe.h vbeModes.h
--- NEW FILE: vbe.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.c,v 1.2tsi Exp $ */
/*
* XFree86 vbe module
* Copyright 2000 Egbert Eich
*
* The mode query/save/set/restore functions from the vesa driver
* have been moved here.
* Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
* Authors: Paulo César Pereira de Andrade <pcpa at conectiva.com.br>
*/
#include "xf86.h"
#include "xf86_ansic.h"
#include "vbe.h"
#include <X11/Xarch.h>
#define DPMS_SERVER
#include <X11/extensions/dpms.h>
[...1034 lines suppressed...]
pVbe->pInt10->num = 0x10;
pVbe->pInt10->ax = 0x4f10;
pVbe->pInt10->bx = 0x01;
switch (mode) {
case DPMSModeOn:
break;
case DPMSModeStandby:
pVbe->pInt10->bx |= 0x100;
break;
case DPMSModeSuspend:
pVbe->pInt10->bx |= 0x200;
break;
case DPMSModeOff:
pVbe->pInt10->bx |= 0x400;
break;
}
xf86ExecX86int10(pVbe->pInt10);
return (R16(pVbe->pInt10->ax) == 0x4f);
}
--- NEW FILE: vbe.h ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.h,v 1.4 2004/01/07 04:28:06 dawes Exp $ */
/*
* XFree86 vbe module
* Copyright 2000 Egbert Eich
*
* The mode query/save/set/restore functions from the vesa driver
* have been moved here.
* Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
* Authors: Paulo César Pereira de Andrade <pcpa at conectiva.com.br>
*/
#ifndef _VBE_H
#define _VBE_H
#include "xf86int10.h"
#include "xf86DDC.h"
typedef enum {
DDC_UNCHECKED,
DDC_NONE,
DDC_1,
DDC_2,
DDC_1_2
}
ddc_lvl;
typedef struct {
xf86Int10InfoPtr pInt10;
int version;
pointer memory;
int real_mode_base;
int num_pages;
Bool init_int10;
ddc_lvl ddc;
Bool ddc_blank;
} vbeInfoRec, *vbeInfoPtr;
#define VBE_VERSION_MAJOR(x) *((CARD8*)(&x) + 1)
#define VBE_VERSION_MINOR(x) (CARD8)(x)
vbeInfoPtr VBEInit(xf86Int10InfoPtr pInt, int entityIndex);
vbeInfoPtr VBEExtendedInit(xf86Int10InfoPtr pInt, int entityIndex, int Flags);
void vbeFree(vbeInfoPtr pVbe);
xf86MonPtr vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule);
#pragma pack(1)
typedef struct vbeControllerInfoBlock {
CARD8 VbeSignature[4];
CARD16 VbeVersion;
CARD32 OemStringPtr;
CARD8 Capabilities[4];
CARD32 VideoModePtr;
CARD16 TotalMem;
CARD16 OemSoftwareRev;
CARD32 OemVendorNamePtr;
CARD32 OemProductNamePtr;
CARD32 OemProductRevPtr;
CARD8 Scratch[222];
CARD8 OemData[256];
} vbeControllerInfoRec, *vbeControllerInfoPtr;
#if defined(__GNUC__) || defined(SCO) || defined(__USLC__) || \
defined(__SUNPRO_C)
#pragma pack() /* All GCC versions recognise this syntax */
#else
#pragma pack(0)
#endif
#ifndef __GNUC__
#define __attribute__(a)
#endif
typedef struct _VbeInfoBlock VbeInfoBlock;
typedef struct _VbeModeInfoBlock VbeModeInfoBlock;
typedef struct _VbeCRTCInfoBlock VbeCRTCInfoBlock;
/*
* INT 0
*/
struct _VbeInfoBlock {
/* VESA 1.2 fields */
CARD8 VESASignature[4]; /* VESA */
CARD16 VESAVersion; /* Higher byte major, lower byte minor */
/*CARD32*/char *OEMStringPtr; /* Pointer to OEM string */
CARD8 Capabilities[4]; /* Capabilities of the video environment */
/*CARD32*/CARD16 *VideoModePtr; /* pointer to supported Super VGA modes */
CARD16 TotalMemory; /* Number of 64kb memory blocks on board */
/* if not VESA 2, 236 scratch bytes follow (256 bytes total size) */
/* VESA 2 fields */
CARD16 OemSoftwareRev; /* VBE implementation Software revision */
/*CARD32*/char *OemVendorNamePtr; /* Pointer to Vendor Name String */
/*CARD32*/char *OemProductNamePtr; /* Pointer to Product Name String */
/*CARD32*/char *OemProductRevPtr; /* Pointer to Product Revision String */
CARD8 Reserved[222]; /* Reserved for VBE implementation */
CARD8 OemData[256]; /* Data Area for OEM Strings */
} __attribute__((packed));
/* Return Super VGA Information */
VbeInfoBlock *VBEGetVBEInfo(vbeInfoPtr pVbe);
void VBEFreeVBEInfo(VbeInfoBlock *block);
/*
* INT 1
*/
struct _VbeModeInfoBlock {
CARD16 ModeAttributes; /* mode attributes */
CARD8 WinAAttributes; /* window A attributes */
CARD8 WinBAttributes; /* window B attributes */
CARD16 WinGranularity; /* window granularity */
CARD16 WinSize; /* window size */
CARD16 WinASegment; /* window A start segment */
CARD16 WinBSegment; /* window B start segment */
CARD32 WinFuncPtr; /* real mode pointer to window function */
CARD16 BytesPerScanline; /* bytes per scanline */
/* Mandatory information for VBE 1.2 and above */
CARD16 XResolution; /* horizontal resolution in pixels or characters */
CARD16 YResolution; /* vertical resolution in pixels or characters */
CARD8 XCharSize; /* character cell width in pixels */
CARD8 YCharSize; /* character cell height in pixels */
CARD8 NumberOfPlanes; /* number of memory planes */
CARD8 BitsPerPixel; /* bits per pixel */
CARD8 NumberOfBanks; /* number of banks */
CARD8 MemoryModel; /* memory model type */
CARD8 BankSize; /* bank size in KB */
CARD8 NumberOfImages; /* number of images */
CARD8 Reserved; /* 1 */ /* reserved for page function */
/* Direct color fields (required for direct/6 and YUV/7 memory models) */
CARD8 RedMaskSize; /* size of direct color red mask in bits */
CARD8 RedFieldPosition; /* bit position of lsb of red mask */
CARD8 GreenMaskSize; /* size of direct color green mask in bits */
CARD8 GreenFieldPosition; /* bit position of lsb of green mask */
CARD8 BlueMaskSize; /* size of direct color blue mask in bits */
CARD8 BlueFieldPosition; /* bit position of lsb of blue mask */
CARD8 RsvdMaskSize; /* size of direct color reserved mask in bits */
CARD8 RsvdFieldPosition; /* bit position of lsb of reserved mask */
CARD8 DirectColorModeInfo; /* direct color mode attributes */
/* Mandatory information for VBE 2.0 and above */
CARD32 PhysBasePtr; /* physical address for flat memory frame buffer */
CARD32 Reserved32; /* 0 */ /* Reserved - always set to 0 */
CARD16 Reserved16; /* 0 */ /* Reserved - always set to 0 */
/* Mandatory information for VBE 3.0 and above */
CARD16 LinBytesPerScanLine; /* bytes per scan line for linear modes */
CARD8 BnkNumberOfImagePages; /* number of images for banked modes */
CARD8 LinNumberOfImagePages; /* number of images for linear modes */
CARD8 LinRedMaskSize; /* size of direct color red mask (linear modes) */
CARD8 LinRedFieldPosition; /* bit position of lsb of red mask (linear modes) */
CARD8 LinGreenMaskSize; /* size of direct color green mask (linear modes) */
CARD8 LinGreenFieldPosition; /* bit position of lsb of green mask (linear modes) */
CARD8 LinBlueMaskSize; /* size of direct color blue mask (linear modes) */
CARD8 LinBlueFieldPosition; /* bit position of lsb of blue mask (linear modes) */
CARD8 LinRsvdMaskSize; /* size of direct color reserved mask (linear modes) */
CARD8 LinRsvdFieldPosition; /* bit position of lsb of reserved mask (linear modes) */
CARD32 MaxPixelClock; /* maximum pixel clock (in Hz) for graphics mode */
CARD8 Reserved2[189]; /* remainder of VbeModeInfoBlock */
} __attribute__((packed));
/* Return VBE Mode Information */
VbeModeInfoBlock *VBEGetModeInfo(vbeInfoPtr pVbe, int mode);
void VBEFreeModeInfo(VbeModeInfoBlock *block);
/*
* INT2
*/
#define CRTC_DBLSCAN (1<<0)
#define CRTC_INTERLACE (1<<1)
#define CRTC_NHSYNC (1<<2)
#define CRTC_NVSYNC (1<<3)
struct _VbeCRTCInfoBlock {
CARD16 HorizontalTotal; /* Horizontal total in pixels */
CARD16 HorizontalSyncStart; /* Horizontal sync start in pixels */
CARD16 HorizontalSyncEnd; /* Horizontal sync end in pixels */
CARD16 VerticalTotal; /* Vertical total in lines */
CARD16 VerticalSyncStart; /* Vertical sync start in lines */
CARD16 VerticalSyncEnd; /* Vertical sync end in lines */
CARD8 Flags; /* Flags (Interlaced, Double Scan etc) */
CARD32 PixelClock; /* Pixel clock in units of Hz */
CARD16 RefreshRate; /* Refresh rate in units of 0.01 Hz */
CARD8 Reserved[40]; /* remainder of ModeInfoBlock */
} __attribute__((packed));
/* VbeCRTCInfoBlock is in the VESA 3.0 specs */
Bool VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *crtc);
/*
* INT 3
*/
Bool VBEGetVBEMode(vbeInfoPtr pVbe, int *mode);
/*
* INT 4
*/
/* Save/Restore Super VGA video state */
/* function values are (values stored in VESAPtr):
* 0 := query & allocate amount of memory to save state
* 1 := save state
* 2 := restore state
*
* function 0 called automatically if function 1 called without
* a previous call to function 0.
*/
typedef enum {
MODE_QUERY,
MODE_SAVE,
MODE_RESTORE
} vbeSaveRestoreFunction;
Bool
VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction fuction,
pointer *memory, int *size, int *real_mode_pages);
/*
* INT 5
*/
Bool
VBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window);
/*
* INT 6
*/
typedef enum {
SCANWID_SET,
SCANWID_GET,
SCANWID_SET_BYTES,
SCANWID_GET_MAX
} vbeScanwidthCommand;
#define VBESetLogicalScanline(pVbe, width) \
VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET, width, \
NULL, NULL, NULL)
#define VBESetLogicalScanlineBytes(pVbe, width) \
VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET_BYTES, width, \
NULL, NULL, NULL)
#define VBEGetLogicalScanline(pVbe, pixels, bytes, max) \
VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET, 0, \
pixels, bytes, max)
#define VBEGetMaxLogicalScanline(pVbe, pixels, bytes, max) \
VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET_MAX, 0, \
pixels, bytes, max)
Bool VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe,
vbeScanwidthCommand command, int width,
int *pixels, int *bytes, int *max);
/*
* INT 7
*/
/* 16 bit code */
Bool VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace);
Bool VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y);
/*
* INT 8
*/
/* if bits is 0, then it is a GET */
int VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits);
/*
* INT 9
*/
/*
* If getting a palette, the data argument is not used. It will return
* the data.
* If setting a palette, it will return the pointer received on success,
* NULL on failure.
*/
CARD32 *VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num,
CARD32 *data, Bool secondary, Bool wait_retrace);
#define VBEFreePaletteData(data) xfree(data)
/*
* INT A
*/
typedef struct _VBEpmi {
int seg_tbl;
int tbl_off;
int tbl_len;
} VBEpmi;
VBEpmi *VBEGetVBEpmi(vbeInfoPtr pVbe);
#define VESAFreeVBEpmi(pmi) xfree(pmi)
/* high level helper functions */
typedef struct _vbeModeInfoRec {
int width;
int height;
int bpp;
int n;
struct _vbeModeInfoRec *next;
} vbeModeInfoRec, *vbeModeInfoPtr;
vbeModeInfoPtr VBEBuildVbeModeList(vbeInfoPtr pVbe,
VbeInfoBlock *vbe);
unsigned short VBECalcVbeModeIndex(vbeModeInfoPtr m,
DisplayModePtr mode, int bpp);
typedef struct {
CARD8 *state;
CARD8 *pstate;
int statePage;
int stateSize;
int stateMode;
} vbeSaveRestoreRec, *vbeSaveRestorePtr;
void
VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr,
vbeSaveRestoreFunction function);
int VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int Clock);
Bool VBEDPMSSet(vbeInfoPtr pVbe, int mode);
#endif
--- NEW FILE: vbeModes.c ---
(This appears to be a binary file; contents omitted.)
--- NEW FILE: vbeModes.h ---
(This appears to be a binary file; contents omitted.)
--- NEW FILE: vbe_module.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c,v 1.4 2002/09/16 18:06:15 eich Exp $ */
#include "xf86.h"
#include "xf86str.h"
#include "vbe.h"
extern const char *vbe_ddcSymbols[];
#ifdef XFree86LOADER
static MODULESETUPPROTO(vbeSetup);
static XF86ModuleVersionInfo vbeVersRec =
{
"vbe",
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
XORG_VERSION_CURRENT,
1, 1, 0,
ABI_CLASS_VIDEODRV, /* needs the video driver ABI */
ABI_VIDEODRV_VERSION,
MOD_CLASS_NONE,
{0,0,0,0}
};
XF86ModuleData vbeModuleData = { &vbeVersRec, vbeSetup, NULL };
static pointer
vbeSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
static Bool setupDone = FALSE;
if (!setupDone) {
setupDone = TRUE;
LoaderRefSymLists(vbe_ddcSymbols,NULL);
/*
* Tell the loader about symbols from other modules that this module
* might refer to.
*/
}
/*
* The return value must be non-NULL on success even though there
* is no TearDownProc.
*/
return (pointer)1;
}
#endif
- Previous message: xserver/hw/xorg/shadowfb Makefile.am, NONE, 1.1 sfbmodule.c, NONE,
1.1 shadow.c, NONE, 1.1 shadowfb.h, NONE, 1.1
- Next message: xserver/hw/xorg/vgahw Makefile.am, NONE, 1.1 vgaCmap.c, NONE,
1.1 vgaHW.c, NONE, 1.1 vgaHW.h, NONE, 1.1 vgaHWmodule.c, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the xserver-commit
mailing list