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