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