8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * copy of this software and associated documentation files (the "Software"),
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * to deal in the Software without restriction, including without limitation
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * and/or sell copies of the Software, and to permit persons to whom the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Software is furnished to do so, subject to the following conditions:
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The above copyright notice and this permission notice shall be included in
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * all copies or substantial portions of the Software.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * OTHER DEALINGS IN THE SOFTWARE.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Except as contained in this notice, the name of the copyright holder(s)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * and author(s) shall not be used in advertising or otherwise to promote
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * the sale, use or other dealings in this Software without prior written
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * authorization from the copyright holder(s) and author(s).
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * This file contains definitions of the public XFree86 data structures/types.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Any data structures that video drivers need to access should go here.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#ifndef _XF86STR_H
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define _XF86STR_H
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "misc.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "input.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "scrnintstr.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "pixmapstr.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "colormapst.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "xf86Module.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "xf86Opt.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "xf86Pci.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include <pciaccess.h>
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/**
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Integer type that is of the size of the addressable memory (machine size).
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * On most platforms \c uintptr_t will suffice. However, on some mixed
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * 32-bit / 64-bit platforms, such as 32-bit binaries on 64-bit PowerPC, this
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * must be 64-bits.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include <inttypes.h>
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#if defined(__powerpc__)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef uint64_t memType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#else
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef uintptr_t memType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Video mode flags */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_PHSYNC = 0x0001,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_NHSYNC = 0x0002,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_PVSYNC = 0x0004,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_NVSYNC = 0x0008,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_INTERLACE = 0x0010,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_DBLSCAN = 0x0020,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_CSYNC = 0x0040,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_PCSYNC = 0x0080,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_NCSYNC = 0x0100,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_HSKEW = 0x0200, /* hskew provided */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_BCAST = 0x0400,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_PIXMUX = 0x1000,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_DBLCLK = 0x2000,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync V_CLKDIV2 = 0x4000
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ModeFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync INTERLACE_HALVE_V = 0x0001 /* Halve V values for interlacing */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} CrtcAdjustFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Flags passed to ChipValidMode() */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODECHECK_INITIAL = 0,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODECHECK_FINAL = 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ModeCheckFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* These are possible return values for xf86CheckMode() and ValidMode() */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_OK = 0, /* Mode OK */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_HSYNC, /* hsync out of range */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VSYNC, /* vsync out of range */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_H_ILLEGAL, /* mode has illegal horizontal timings */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_V_ILLEGAL, /* mode has illegal horizontal timings */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BAD_WIDTH, /* requires an unsupported linepitch */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NOMODE, /* no mode with a maching name */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NO_INTERLACE, /* interlaced mode not supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NO_DBLESCAN, /* doublescan mode not supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NO_VSCAN, /* multiscan mode not supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_MEM, /* insufficient video memory */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VIRTUAL_X, /* mode width too large for specified virtual size */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VIRTUAL_Y, /* mode height too large for specified virtual size */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_MEM_VIRT, /* insufficient video memory given virtual size */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NOCLOCK, /* no fixed clock available */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_CLOCK_HIGH, /* clock required is too high */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_CLOCK_LOW, /* clock required is too low */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BAD_HVALUE, /* horizontal timing was out of range */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BAD_VVALUE, /* vertical timing was out of range */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BAD_VSCAN, /* VScan value out of range */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_HSYNC_NARROW, /* horizontal sync too narrow */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_HSYNC_WIDE, /* horizontal sync too wide */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_HBLANK_NARROW, /* horizontal blanking too narrow */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_HBLANK_WIDE, /* horizontal blanking too wide */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VSYNC_NARROW, /* vertical sync too narrow */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VSYNC_WIDE, /* vertical sync too wide */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VBLANK_NARROW, /* vertical blanking too narrow */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_VBLANK_WIDE, /* vertical blanking too wide */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_PANEL, /* exceeds panel dimensions */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_INTERLACE_WIDTH, /* width too large for interlaced mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_ONE_WIDTH, /* only one width is supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_ONE_HEIGHT, /* only one height is supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_ONE_SIZE, /* only one resolution is supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_NO_REDUCED, /* monitor doesn't accept reduced blanking */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BANDWIDTH, /* mode requires too much memory bandwidth */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_BAD = -2, /* unspecified reason */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MODE_ERROR = -1 /* error condition */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ModeStatus;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The mode sets are, from best to worst: USERDEF, DRIVER, and DEFAULT/BUILTIN.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Preferred will bubble a mode to the top within a set.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_BUILTIN 0x01 /* built-in mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_CLOCK_C (0x02 | M_T_BUILTIN) /* built-in mode - configure clock */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_CRTC_C (0x04 | M_T_BUILTIN) /* built-in mode - configure CRTC */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_CLOCK_CRTC_C (M_T_CLOCK_C | M_T_CRTC_C)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* built-in mode - configure CRTC and clock */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_PREFERRED 0x08 /* preferred mode within a set */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_DEFAULT 0x10 /* (VESA) default modes */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_USERDEF 0x20 /* One of the modes from the config file */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_DRIVER 0x40 /* Supplied by the driver (EDID, etc) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync# define M_T_USERPREF 0x80 /* mode preferred by the user config */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Video mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _DisplayModeRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct _DisplayModeRec * prev;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct _DisplayModeRec * next;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * name; /* identifier for the mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ModeStatus status;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int type;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* These are the values that the user sees/provides */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int Clock; /* pixel clock freq (kHz) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int HDisplay; /* horizontal timing */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int HSyncStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int HSyncEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int HTotal;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int HSkew;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int VDisplay; /* vertical timing */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int VSyncStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int VSyncEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int VTotal;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int VScan;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int Flags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* These are the values the hardware uses */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int ClockIndex;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int SynthClock; /* Actual clock freq to
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * be programmed (kHz) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHDisplay;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHBlankStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHSyncStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHSyncEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHBlankEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHTotal;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcHSkew;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVDisplay;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVBlankStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVSyncStart;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVSyncEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVBlankEnd;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int CrtcVTotal;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool CrtcHAdjusted;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool CrtcVAdjusted;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int PrivSize;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync INT32 * Private;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int PrivFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync float HSync, VRefresh;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DisplayModeRec, *DisplayModePtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* The monitor description */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define MAX_HSYNC 8
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define MAX_VREFRESH 8
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct { float hi, lo; } range;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct { CARD32 red, green, blue; } rgb;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct { float red, green, blue; } Gamma;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* The permitted gamma range is 1 / GAMMA_MAX <= g <= GAMMA_MAX */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define GAMMA_MAX 10.0
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define GAMMA_MIN (1.0 / GAMMA_MAX)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define GAMMA_ZERO (GAMMA_MIN / 100.0)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * vendor;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * model;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int nHsync;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync range hsync[MAX_HSYNC];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int nVrefresh;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync range vrefresh[MAX_VREFRESH];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr Modes; /* Start of the monitor's mode list */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr Last; /* End of the monitor's mode list */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Gamma gamma; /* Gamma of the monitor */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int widthmm;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int heightmm;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer DDC;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool reducedblanking; /* Allow CVT reduced blanking modes? */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxPixClock; /* in kHz, like mode->Clock */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} MonRec, *MonPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* the list of clock ranges */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct x_ClockRange {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct x_ClockRange *next;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int minClock; /* (kHz) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxClock; /* (kHz) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int clockIndex; /* -1 for programmable clocks */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool interlaceAllowed;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool doubleScanAllowed;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int ClockMulFactor;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int ClockDivFactor;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int PrivFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ClockRange, *ClockRangePtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The driverFunc. xorgDriverFuncOp specifies the action driver should
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * perform. If requested option is not supported function should return
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * FALSE. pointer can be used to pass arguments to the function or
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * to return data to the caller.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _ScrnInfoRec *ScrnInfoPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* do not change order */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RR_GET_INFO,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RR_SET_CONFIG,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RR_GET_MODE_MM,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync GET_REQUIRED_HW_INTERFACES = 10
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} xorgDriverFuncOp;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xorgDriverFuncProc (ScrnInfoPtr, xorgDriverFuncOp,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* RR_GET_INFO, RR_SET_CONFIG */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int rotation;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int rate;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int width;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int height;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} xorgRRConfig;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef union {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync short RRRotations;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xorgRRConfig RRConfig;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} xorgRRRotation, *xorgRRRotationPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* RR_GET_MODE_MM */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr mode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtX;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtY;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int mmWidth;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int mmHeight;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} xorgRRModeMM, *xorgRRModeMMPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* GET_REQUIRED_HW_INTERFACES */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define HW_IO 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define HW_MMIO 2
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define HW_SKIP_CONSOLE 4
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define NEED_IO_ENABLED(x) (x & HW_IO)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef CARD32 xorgHWFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The driver list struct. This contains the information required for each
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * driver before a ScrnInfoRec has been allocated.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncstruct _DriverRec;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int driverVersion;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * driverName;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*Identify)(int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*Probe)(struct _DriverRec *drv, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer module;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int refCount;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DriverRec1;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncstruct _SymTabRec;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncstruct _PciChipsets;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _DriverRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int driverVersion;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * driverName;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*Identify)(int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*Probe)(struct _DriverRec *drv, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer module;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int refCount;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xorgDriverFuncProc *driverFunc;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync const struct pci_id_match * supported_devices;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*PciProbe)( struct _DriverRec * drv, int entity_num,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct pci_device * dev, intptr_t match_data );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DriverRec, *DriverPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * AddDriver flags
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define HaveDriverFuncs 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * These are the private bus types. New types can be added here. Types
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * required for the public interface should be added to xf86str.h, with
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * function prototypes added to xf86.h.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Tolerate prior #include <linux/input.h> */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#if defined(linux) && defined(_INPUT_H)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#undef BUS_NONE
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#undef BUS_PCI
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#undef BUS_SBUS
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#undef BUS_last
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BUS_NONE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BUS_PCI,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BUS_SBUS,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BUS_last /* Keep last */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} BusType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncstruct pci_device;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int fbNum;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SbusBusId;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _bus {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BusType type;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync union {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct pci_device *pci;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SbusBusId sbus;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync } id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} BusRec, *BusPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define MAXCLOCKS 128
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DAC_BPP8 = 0,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DAC_BPP16,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DAC_BPP24,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DAC_BPP32,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MAXDACSPEEDS
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DacSpeedIndex;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * identifier;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * vendor;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * board;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * chipset;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * ramdac;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * driver;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct _confscreenrec * myScreenSection;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool claimed;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int dacSpeeds[MAXDACSPEEDS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numclocks;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int clock[MAXCLOCKS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * clockchip;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * busID;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool active;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool inUse;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int videoRam;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int textClockFreq;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long BiosBase; /* Base address of video BIOS */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long MemBase; /* Frame buffer base address */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long IOBase;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int chipID;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int chipRev;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int irq;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int screen; /* For multi-CRTC cards */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} GDevRec, *GDevPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameX0;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameY0;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtualX;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtualY;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int depth;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int fbbpp;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb weight;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb blackColour;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb whiteColour;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int defaultVisual;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char ** modes;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DispRec, *DispPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _confxvportrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * identifier;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} confXvPortRec, *confXvPortPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _confxvadaptrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * identifier;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numports;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confXvPortPtr ports;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} confXvAdaptorRec, *confXvAdaptorPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _confscreenrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int screennum;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int defaultdepth;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int defaultbpp;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int defaultfbbpp;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MonPtr monitor;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync GDevPtr device;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numdisplays;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DispPtr displays;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numxvadaptors;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confXvAdaptorPtr xvadaptors;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} confScreenRec, *confScreenPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosObsolete = -1,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosAbsolute = 0,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosRightOf,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosLeftOf,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosAbove,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosBelow,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PosRelative
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} PositionType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _screenlayoutrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr screen;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * topname;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr top;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * bottomname;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr bottom;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * leftname;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr left;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * rightname;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr right;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PositionType where;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int x;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int y;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * refname;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr refscreen;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} screenLayoutRec, *screenLayoutPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _InputInfoRec InputInfoRec;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _serverlayoutrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync screenLayoutPtr screens;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync GDevPtr inactives;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync InputInfoRec** inputs; /* NULL terminated */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} serverLayoutRec, *serverLayoutPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _confdribufferrec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int count;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int size;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86DRI_WC_HINT = 0x0001 /* Placeholder: not implemented */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync } flags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} confDRIBufferRec, *confDRIBufferPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _confdrirec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int group;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int mode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bufs_count;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confDRIBufferRec *bufs;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} confDRIRec, *confDRIPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* These values should be adjusted when new fields are added to ScrnInfoRec */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define NUM_RESERVED_INTS 16
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define NUM_RESERVED_POINTERS 14
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define NUM_RESERVED_FUNCS 10
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef pointer (*funcPointer)(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* flags for depth 24 pixmap options */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Pix24DontCare = 0,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Pix24Use24,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Pix24Use32
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} Pix24Flags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Power management events: so far we only support APM */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_UNKNOWN = -1,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_SYS_STANDBY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_SYS_SUSPEND,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_CRITICAL_SUSPEND,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_USER_STANDBY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_USER_SUSPEND,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_STANDBY_RESUME,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_NORMAL_RESUME,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_CRITICAL_RESUME,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_LOW_BATTERY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_POWER_STATUS_CHANGE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_UPDATE_TIME,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_CAPABILITY_CHANGED,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_STANDBY_FAILED,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XF86_APM_SUSPEND_FAILED
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} pmEvent;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PM_WAIT,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PM_CONTINUE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PM_FAILED,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PM_NONE
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} pmWait;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _PciChipsets {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /**
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Key used to match this device with its name in an array of
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * \c SymTabRec.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numChipset;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /**
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * This value is quirky. Depending on the driver, it can take on one of
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * three meanings. In drivers that have exactly one vendor ID (e.g.,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * radeon, mga, i810) the low 16-bits are the device ID.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * In drivers that can have multiple vendor IDs (e.g., the glint driver
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * can have either 3dlabs' ID or TI's ID, the i740 driver can have either
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Intel's ID or Real3D's ID, etc.) the low 16-bits are the device ID and
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * the high 16-bits are the vendor ID.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * In drivers that don't have a specific vendor (e.g., vga) contains the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * device ID for either the generic VGA or generic 8514 devices. This
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * turns out to be the same as the subclass and programming interface
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * value (e.g., the full 24-bit class for the VGA device is 0x030000 (or
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * 0x000101) and for 8514 is 0x030001).
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int PCIid;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* dummy place holders for drivers to build against old/new servers */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define RES_UNDEFINED NULL
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define RES_EXCLUSIVE_VGA NULL
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define RES_SHARED_VGA NULL
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void *dummy;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} PciChipsets;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Entity properties */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*EntityProc)(int entityIndex,pointer private);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _entityInfo {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int index;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BusRec location;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int chipset;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool active;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync GDevPtr device;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DriverPtr driver;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} EntityInfoRec, *EntityInfoPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* DGA */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int num; /* A unique identifier for the mode (num > 0) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr mode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int flags; /* DGA_CONCURRENT_ACCESS, etc... */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int imageWidth; /* linear accessible portion (pixels) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int imageHeight;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int pixmapWidth; /* Xlib accessible portion (pixels) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int pixmapHeight; /* both fields ignored if no concurrent access */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bytesPerScanline;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int byteOrder; /* MSBFirst, LSBFirst */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int depth;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bitsPerPixel;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long red_mask;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long green_mask;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long blue_mask;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync short visualClass;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int viewportWidth;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int viewportHeight;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int xViewportStep; /* viewport position granularity */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int yViewportStep;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxViewportX; /* max viewport origin */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxViewportY;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int viewportFlags; /* types of page flipping possible */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int offset; /* offset into physical memory */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char *address; /* server's mapped framebuffer */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int reserved1;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int reserved2;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DGAModeRec, *DGAModePtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DGAModePtr mode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PixmapPtr pPix;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DGADeviceRec, *DGADevicePtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Flags for driver Probe() functions.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PROBE_DEFAULT 0x00
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PROBE_DETECT 0x01
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PROBE_TRYHARD 0x02
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Driver entry point types
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86ProbeProc (DriverPtr, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86PreInitProc (ScrnInfoPtr, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86ScreenInitProc (int, ScreenPtr, int, char**);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86SwitchModeProc (int, DisplayModePtr, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86AdjustFrameProc (int, int, int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86EnterVTProc (int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86LeaveVTProc (int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86FreeScreenProc (int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef ModeStatus xf86ValidModeProc (int, DisplayModePtr, Bool, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86EnableDisableFBAccessProc(int, Bool);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef int xf86SetDGAModeProc (int, int, DGADevicePtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef int xf86ChangeGammaProc (int, Gamma);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86PointerMovedProc (int, int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef Bool xf86PMEventProc (int, pmEvent, Bool);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86DPMSSetProc (ScrnInfoPtr, int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86LoadPaletteProc (ScrnInfoPtr, int, int *, LOCO *, VisualPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86SetOverscanProc (ScrnInfoPtr, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void xf86ModeSetProc (ScrnInfoPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * ScrnInfoRec
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * There is one of these for each screen, and it holds all the screen-specific
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * information.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Note: the size and layout must be kept the same across versions. New
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * fields are to be added in place of the "reserved*" fields. No fields
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * are to be dependent on compile-time defines.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _ScrnInfoRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int driverVersion;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * driverName; /* canonical name used in */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* the config file */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen; /* Pointer to the ScreenRec */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int scrnIndex; /* Number of this screen */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool configured; /* Is this screen valid */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int origIndex; /* initial number assigned to
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * this screen before
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * finalising the number of
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * available screens */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* Display-wide screenInfo values needed by this screen */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int imageByteOrder;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bitmapScanlineUnit;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bitmapScanlinePad;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bitmapBitOrder;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numFormats;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PixmapFormatRec formats[MAXFORMATS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync PixmapFormatRec fbFormat;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int bitsPerPixel; /* fb bpp */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Pix24Flags pixmap24; /* pixmap pref for depth 24 */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int depth; /* depth of default visual */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MessageType depthFrom; /* set from config? */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MessageType bitsPerPixelFrom; /* set from config? */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb weight; /* r/g/b weights */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb mask; /* rgb masks */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync rgb offset; /* rgb offsets */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int rgbBits; /* Number of bits in r/g/b */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Gamma gamma; /* Gamma of the monitor */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int defaultVisual; /* default visual class */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxHValue; /* max horizontal timing */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int maxVValue; /* max vertical timing value */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtualX; /* Virtual width */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int virtualY; /* Virtual height */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int xInc; /* Horizontal timing increment */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MessageType virtualFrom; /* set from config? */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int displayWidth; /* memory pitch */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameX0; /* viewport position */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameY0;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameX1;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int frameY1;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int zoomLocked; /* Disallow mode changes */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr modePool; /* list of compatible modes */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr modes; /* list of actual modes */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DisplayModePtr currentMode; /* current mode
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * This was previously
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * overloaded with the modes
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * field, which is a pointer
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * into a circular list */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync confScreenPtr confScreen; /* Screen config info */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MonPtr monitor; /* Monitor information */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DispPtr display; /* Display information */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int * entityList; /* List of device entities */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numEntities;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int widthmm; /* physical display dimensions
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * in mm */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int heightmm;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int xDpi; /* width DPI */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int yDpi; /* height DPI */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * name; /* Name to prefix messages */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer driverPrivate; /* Driver private area */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DevUnion * privates; /* Other privates can hook in
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * here */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DriverPtr drv; /* xf86DriverList[] entry */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer module; /* Pointer to module head */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int colorKey;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int overlayFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* Some of these may be moved out of here into the driver private area */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * chipset; /* chipset name */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * ramdac; /* ramdac name */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * clockchip; /* clock name */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool progClock; /* clock is programmable */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numClocks; /* number of clocks */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int clock[MAXCLOCKS]; /* list of clock frequencies */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int videoRam; /* amount of video ram (kb) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long biosBase; /* Base address of video BIOS */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long memPhysBase; /* Physical address of FB */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long fbOffset; /* Offset of FB in the above */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync IOADDRESS domainIOBase; /* Domain I/O base address */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int memClk; /* memory clock */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int textClockFreq; /* clock of text mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool flipPixels; /* swap default black/white */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer options;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int chipID;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int chipRev;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* Allow screens to be enabled/disabled individually */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool vtSema;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* hw cursor moves at SIGIO time */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool silkenMouse;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* Storage for clockRanges and adjustFlags for use with the VidMode ext */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ClockRangePtr clockRanges;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int adjustFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * These can be used when the minor ABI version is incremented.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The NUM_* parameters must be reduced appropriately to keep the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * structure size and alignment unchanged.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int reservedInt[NUM_RESERVED_INTS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int * entityInstanceList;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct pci_device *vgaDev;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer reservedPtr[NUM_RESERVED_POINTERS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Driver entry points.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86ProbeProc *Probe;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86PreInitProc *PreInit;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86ScreenInitProc *ScreenInit;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86SwitchModeProc *SwitchMode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86AdjustFrameProc *AdjustFrame;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86EnterVTProc *EnterVT;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86LeaveVTProc *LeaveVT;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86FreeScreenProc *FreeScreen;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86ValidModeProc *ValidMode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86EnableDisableFBAccessProc *EnableDisableFBAccess;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86SetDGAModeProc *SetDGAMode;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86ChangeGammaProc *ChangeGamma;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86PointerMovedProc *PointerMoved;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86PMEventProc *PMEvent;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86DPMSSetProc *DPMSSet;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86LoadPaletteProc *LoadPalette;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86SetOverscanProc *SetOverscan;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xorgDriverFuncProc *DriverFunc;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86ModeSetProc *ModeSet;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * This can be used when the minor ABI version is incremented.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The NUM_* parameter must be reduced appropriately to keep the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * structure size and alignment unchanged.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync funcPointer reservedFuncs[NUM_RESERVED_FUNCS];
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ScrnInfoRec;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*OpenFramebuffer)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char **name,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char **mem,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *size,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *offset,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *extra
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*CloseFramebuffer)(ScrnInfoPtr pScrn);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*SetMode)(ScrnInfoPtr pScrn, DGAModePtr pMode);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*SetViewport)(ScrnInfoPtr pScrn, int x, int y, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int (*GetViewport)(ScrnInfoPtr pScrn);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*Sync)(ScrnInfoPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*FillRect)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int x, int y, int w, int h,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long color
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*BlitRect)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int srcx, int srcy,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int w, int h,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int dstx, int dsty
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*BlitTransRect)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int srcx, int srcy,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int w, int h,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int dstx, int dsty,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long color
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} DGAFunctionRec, *DGAFunctionPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _SymTabRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int token; /* id of the token */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync const char * name; /* token name */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SymTabRec, *SymTabPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* flags for xf86LookupMode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_DEFAULT = 0, /* Use default mode lookup method */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_BEST_REFRESH, /* Pick modes with best refresh */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_CLOSEST_CLOCK, /* Pick modes with the closest clock */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_LIST_ORDER, /* Pick first useful mode in list */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_CLKDIV2 = 0x0100, /* Allow half clocks */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOOKUP_OPTIONAL_TOLERANCES = 0x0200 /* Allow missing hsync/vrefresh */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} LookupModeFlags;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define NoDepth24Support 0x00
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define Support24bppFb 0x01 /* 24bpp framebuffer supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define Support32bppFb 0x02 /* 32bpp framebuffer supported */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define SupportConvert24to32 0x04 /* Can convert 24bpp pixmap to 32bpp */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define SupportConvert32to24 0x08 /* Can convert 32bpp pixmap to 24bpp */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PreferConvert24to32 0x10 /* prefer 24bpp pixmap to 32bpp conv */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PreferConvert32to24 0x20 /* prefer 32bpp pixmap to 24bpp conv */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* For DPMS */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*DPMSSetProcPtr)(ScrnInfoPtr, int, int);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Input handler proc */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*InputHandlerProc)(int fd, pointer data);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* These are used by xf86GetClocks */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define CLK_REG_SAVE -1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define CLK_REG_RESTORE -2
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * misc constants
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define INTERLACE_REFRESH_WEIGHT 1.5
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define SYNC_TOLERANCE 0.01 /* 1 percent */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define CLOCK_TOLERANCE 2000 /* Clock matching tolerance (2MHz) */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define OVERLAY_8_32_DUALFB 0x00000001
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define OVERLAY_8_24_DUALFB 0x00000002
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define OVERLAY_8_16_DUALFB 0x00000004
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define OVERLAY_8_32_PLANAR 0x00000008
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Values of xf86Info.mouseFlags */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define MF_CLEAR_DTR 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define MF_CLEAR_RTS 2
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Action Events */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_TERMINATE = 0, /* Terminate Server */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_NEXT_MODE = 10, /* Switch to next video mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_PREV_MODE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_SWITCHSCREEN = 100, /* VT switch */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_SWITCHSCREEN_NEXT,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ACTION_SWITCHSCREEN_PREV,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} ActionEvent;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif /* _XF86STR_H */