1 #ifdef HAVE_DIX_CONFIG_H 2 #include <dix-config.h> 3 #endif 4 5 #ifndef _DISMODEPROC_H_ 6 #define _DISMODEPROC_H_ 7 8 #include "scrnintstr.h" 9 10 #define MAXCLOCKS 128 11 12 /* These are possible return values for xf86CheckMode() and ValidMode() */ 13 typedef enum { 14 MODE_OK = 0, /* Mode OK */ 15 MODE_HSYNC, /* hsync out of range */ 16 MODE_VSYNC, /* vsync out of range */ 17 MODE_H_ILLEGAL, /* mode has illegal horizontal timings */ 18 MODE_V_ILLEGAL, /* mode has illegal horizontal timings */ 19 MODE_BAD_WIDTH, /* requires an unsupported linepitch */ 20 MODE_NOMODE, /* no mode with a matching name */ 21 MODE_NO_INTERLACE, /* interlaced mode not supported */ 22 MODE_NO_DBLESCAN, /* doublescan mode not supported */ 23 MODE_NO_VSCAN, /* multiscan mode not supported */ 24 MODE_MEM, /* insufficient video memory */ 25 MODE_VIRTUAL_X, /* mode width too large for specified virtual size */ 26 MODE_VIRTUAL_Y, /* mode height too large for specified virtual size */ 27 MODE_MEM_VIRT, /* insufficient video memory given virtual size */ 28 MODE_NOCLOCK, /* no fixed clock available */ 29 MODE_CLOCK_HIGH, /* clock required is too high */ 30 MODE_CLOCK_LOW, /* clock required is too low */ 31 MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */ 32 MODE_BAD_HVALUE, /* horizontal timing was out of range */ 33 MODE_BAD_VVALUE, /* vertical timing was out of range */ 34 MODE_BAD_VSCAN, /* VScan value out of range */ 35 MODE_HSYNC_NARROW, /* horizontal sync too narrow */ 36 MODE_HSYNC_WIDE, /* horizontal sync too wide */ 37 MODE_HBLANK_NARROW, /* horizontal blanking too narrow */ 38 MODE_HBLANK_WIDE, /* horizontal blanking too wide */ 39 MODE_VSYNC_NARROW, /* vertical sync too narrow */ 40 MODE_VSYNC_WIDE, /* vertical sync too wide */ 41 MODE_VBLANK_NARROW, /* vertical blanking too narrow */ 42 MODE_VBLANK_WIDE, /* vertical blanking too wide */ 43 MODE_PANEL, /* exceeds panel dimensions */ 44 MODE_INTERLACE_WIDTH, /* width too large for interlaced mode */ 45 MODE_ONE_WIDTH, /* only one width is supported */ 46 MODE_ONE_HEIGHT, /* only one height is supported */ 47 MODE_ONE_SIZE, /* only one resolution is supported */ 48 MODE_NO_REDUCED, /* monitor doesn't accept reduced blanking */ 49 MODE_BANDWIDTH, /* mode requires too much memory bandwidth */ 50 MODE_BAD = -2, /* unspecified reason */ 51 MODE_ERROR = -1 /* error condition */ 52 } ModeStatus; 53 54 /* Video mode */ 55 typedef struct _DisplayModeRec { 56 struct _DisplayModeRec *prev; 57 struct _DisplayModeRec *next; 58 const char *name; /* identifier for the mode */ 59 ModeStatus status; 60 int type; 61 62 /* These are the values that the user sees/provides */ 63 int Clock; /* pixel clock freq (kHz) */ 64 int HDisplay; /* horizontal timing */ 65 int HSyncStart; 66 int HSyncEnd; 67 int HTotal; 68 int HSkew; 69 int VDisplay; /* vertical timing */ 70 int VSyncStart; 71 int VSyncEnd; 72 int VTotal; 73 int VScan; 74 int Flags; 75 76 /* These are the values the hardware uses */ 77 int ClockIndex; 78 int SynthClock; /* Actual clock freq to 79 * be programmed (kHz) */ 80 int CrtcHDisplay; 81 int CrtcHBlankStart; 82 int CrtcHSyncStart; 83 int CrtcHSyncEnd; 84 int CrtcHBlankEnd; 85 int CrtcHTotal; 86 int CrtcHSkew; 87 int CrtcVDisplay; 88 int CrtcVBlankStart; 89 int CrtcVSyncStart; 90 int CrtcVSyncEnd; 91 int CrtcVBlankEnd; 92 int CrtcVTotal; 93 Bool CrtcHAdjusted; 94 Bool CrtcVAdjusted; 95 int PrivSize; 96 INT32 *Private; 97 int PrivFlags; 98 99 float HSync, VRefresh; 100 } DisplayModeRec, *DisplayModePtr; 101 102 #endif 103