1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#ifndef _VGATYPES_
#define _VGATYPES_
#include <linux/ioctl.h>
#ifndef VBIOS_VER_MAX_LENGTH
#define VBIOS_VER_MAX_LENGTH 4
#endif
#ifndef XGI_VB_CHIP_TYPE
enum XGI_VB_CHIP_TYPE {
VB_CHIP_Legacy = 0,
VB_CHIP_301,
VB_CHIP_301B,
VB_CHIP_301LV,
VB_CHIP_302,
VB_CHIP_302B,
VB_CHIP_302LV,
VB_CHIP_301C,
VB_CHIP_302ELV,
VB_CHIP_UNKNOWN, /* other video bridge or no video bridge */
MAX_VB_CHIP
};
#endif
#ifndef XGI_LCD_TYPE
enum XGI_LCD_TYPE {
LCD_INVALID = 0,
LCD_320x480, /* FSTN, DSTN */
LCD_640x480,
LCD_640x480_2, /* FSTN, DSTN */
LCD_640x480_3, /* FSTN, DSTN */
LCD_800x600,
LCD_848x480,
LCD_1024x600,
LCD_1024x768,
LCD_1152x768,
LCD_1152x864,
LCD_1280x720,
LCD_1280x768,
LCD_1280x800,
LCD_1280x960,
LCD_1280x1024,
LCD_1400x1050,
LCD_1600x1200,
LCD_1680x1050,
LCD_1920x1440,
LCD_2048x1536,
LCD_CUSTOM,
LCD_UNKNOWN
};
#endif
struct XGI_DSReg
{
unsigned char jIdx;
unsigned char jVal;
};
#ifndef XGI_HW_DEVICE_INFO
typedef struct _XGI_HW_DEVICE_INFO XGI_HW_DEVICE_INFO, *PXGI_HW_DEVICE_INFO;
typedef unsigned char (*PXGI_QUERYSPACE) (PXGI_HW_DEVICE_INFO, unsigned long, unsigned long, unsigned long *);
struct _XGI_HW_DEVICE_INFO
{
unsigned long ulExternalChip; /* NO VB or other video bridge*/
/* if ujVBChipID = VB_CHIP_UNKNOWN, */
unsigned char *pjVirtualRomBase; /* ROM image */
unsigned char UseROM; /* Use the ROM image if provided */
void *pDevice;
unsigned char *pjVideoMemoryAddress;/* base virtual memory address */
/* of Linear VGA memory */
unsigned long ulVideoMemorySize; /* size, in bytes, of the memory on the board */
unsigned char *pjIOAddress; /* base I/O address of VGA ports (0x3B0) */
unsigned char *pjCustomizedROMImage;
unsigned char *pj2ndVideoMemoryAddress;
unsigned long ul2ndVideoMemorySize;
unsigned char *pj2ndIOAddress;
unsigned char jChipType; /* Used to Identify Graphics Chip */
/* defined in the data structure type */
/* "XGI_CHIP_TYPE" */
unsigned char jChipRevision; /* Used to Identify Graphics Chip Revision */
unsigned char ujVBChipID; /* the ID of video bridge */
/* defined in the data structure type */
/* "XGI_VB_CHIP_TYPE" */
unsigned char bNewScratch;
unsigned long ulCRT2LCDType; /* defined in the data structure type */
unsigned long usExternalChip; /* NO VB or other video bridge (other than */
/* video bridge) */
unsigned char bIntegratedMMEnabled;/* supporting integration MM enable */
unsigned char bSkipDramSizing; /* True: Skip video memory sizing. */
unsigned char bSkipSense;
unsigned char bIsPowerSaving; /* True: XGIInit() is invoked by power management,
otherwise by 2nd adapter's initialzation */
struct XGI_DSReg *pSR; /* restore SR registers in initial function. */
/* end data :(idx, val) = (FF, FF). */
/* Note : restore SR registers if */
/* bSkipDramSizing = 1 */
struct XGI_DSReg *pCR; /* restore CR registers in initial function. */
/* end data :(idx, val) = (FF, FF) */
/* Note : restore cR registers if */
/* bSkipDramSizing = 1 */
/*
#endif
*/
PXGI_QUERYSPACE pQueryVGAConfigSpace;
PXGI_QUERYSPACE pQueryNorthBridgeSpace;
unsigned char szVBIOSVer[VBIOS_VER_MAX_LENGTH];
};
#endif
/* Addtional IOCTL for communication xgifb <> X driver */
/* If changing this, xgifb.h must also be changed (for xgifb) */
#endif
|