]> Pileus Git - ~andy/linux/blob - drivers/staging/xgifb/XGIfb.h
staging: xgifb: eliminate a global variable
[~andy/linux] / drivers / staging / xgifb / XGIfb.h
1 #ifndef _LINUX_XGIFB
2 #define _LINUX_XGIFB
3 #include <linux/spinlock.h>
4 #include <asm/ioctl.h>
5 #include <asm/types.h>
6
7 #define DISPTYPE_CRT1       0x00000008L
8 #define DISPTYPE_CRT2       0x00000004L
9 #define DISPTYPE_LCD        0x00000002L
10 #define DISPTYPE_TV         0x00000001L
11 #define DISPTYPE_DISP1      DISPTYPE_CRT1
12 #define DISPTYPE_DISP2      (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV)
13 #define DISPMODE_SINGLE     0x00000020L
14 #define DISPMODE_MIRROR     0x00000010L
15 #define DISPMODE_DUALVIEW   0x00000040L
16
17 #define HASVB_NONE              0x00
18 #define HASVB_301               0x01
19 #define HASVB_LVDS              0x02
20 #define HASVB_TRUMPION          0x04
21 #define HASVB_LVDS_CHRONTEL     0x10
22 #define HASVB_302               0x20
23 #define HASVB_303               0x40
24 #define HASVB_CHRONTEL          0x80
25
26 #ifndef XGIFB_ID
27 #define XGIFB_ID          0x53495346    /* Identify myself with 'XGIF' */
28 #endif
29
30 enum XGI_CHIP_TYPE {
31     XGI_VGALegacy = 0,
32     XGI_300,
33     XGI_630,
34     XGI_730,
35     XGI_540,
36     XGI_315H,
37     XGI_315,
38     XGI_315PRO,
39     XGI_550,
40     XGI_640,
41     XGI_740,
42     XGI_650,
43     XGI_650M,
44     XGI_330 = 16,
45     XGI_660,
46     XGI_661,
47     XGI_760,
48     XG40 = 32,
49     XG41,
50     XG42,
51     XG45,
52     XG20 = 48,
53     XG21,
54     XG27,
55     MAX_XGI_CHIP
56 };
57
58 enum xgi_tvtype {
59         TVMODE_NTSC = 0,
60         TVMODE_PAL,
61         TVMODE_HIVISION,
62         TVTYPE_PALM,    // vicki@030226
63         TVTYPE_PALN,    // vicki@030226
64         TVTYPE_NTSCJ,   // vicki@030226
65         TVMODE_TOTAL
66 };
67
68
69 struct XGIfb_info {
70         unsigned long XGIfb_id;
71         int    chip_id;                 /* PCI ID of detected chip */
72         int    memory;                  /* video memory in KB which XGIfb manages */
73         int    heapstart;               /* heap start (= XGIfb "mem" argument) in KB */
74         unsigned char fbvidmode;        /* current XGIfb mode */
75
76         unsigned char XGIfb_version;
77         unsigned char XGIfb_revision;
78         unsigned char XGIfb_patchlevel;
79
80         unsigned char XGIfb_caps;       /* XGIfb capabilities */
81
82         int    XGIfb_tqlen;             /* turbo queue length (in KB) */
83
84         unsigned int XGIfb_pcibus;      /* The card's PCI ID */
85         unsigned int XGIfb_pcislot;
86         unsigned int XGIfb_pcifunc;
87
88         unsigned char XGIfb_lcdpdc;     /* PanelDelayCompensation */
89
90         unsigned char XGIfb_lcda;       /* Detected status of LCDA for low res/text modes */
91
92         char reserved[235];             /* for future use */
93 };
94
95
96
97
98 enum xgi_tv_plug {      /* vicki@030226 */
99 //      TVPLUG_Legacy = 0,
100 //      TVPLUG_COMPOSITE,
101 //      TVPLUG_SVIDEO,
102 //      TVPLUG_SCART,
103 //      TVPLUG_TOTAL
104         TVPLUG_UNKNOWN = 0,
105         TVPLUG_COMPOSITE = 1,
106         TVPLUG_SVIDEO = 2,
107         TVPLUG_COMPOSITE_AND_SVIDEO = 3,
108         TVPLUG_SCART = 4,
109         TVPLUG_YPBPR_525i = 5,
110         TVPLUG_YPBPR_525P = 6,
111         TVPLUG_YPBPR_750P = 7,
112         TVPLUG_YPBPR_1080i = 8,
113         TVPLUG_TOTAL
114 };
115
116
117 struct mode_info {
118         int    bpp;
119         int    xres;
120         int    yres;
121         int    v_xres;
122         int    v_yres;
123         int    org_x;
124         int    org_y;
125         unsigned int  vrate;
126 };
127
128 struct ap_data {
129         struct mode_info minfo;
130         unsigned long iobase;
131         unsigned int  mem_size;
132         unsigned long disp_state;
133         enum XGI_CHIP_TYPE chip;
134         unsigned char hasVB;
135         enum xgi_tvtype TV_type;
136         enum xgi_tv_plug TV_plug;
137         unsigned long version;
138         char reserved[256];
139 };
140
141
142
143 /*     If changing this, vgatypes.h must also be changed (for X driver)    */
144
145
146 /*
147  * NOTE! The ioctl types used to be "size_t" by mistake, but were
148  * really meant to be __u32. Changed to "__u32" even though that
149  * changes the value on 64-bit architectures, because the value
150  * (with a 4-byte size) is also hardwired in vgatypes.h for user
151  * space exports. So "__u32" is actually more compatible, duh!
152  */
153 #define XGIFB_GET_INFO          _IOR('n',0xF8,__u32)
154 #define XGIFB_GET_VBRSTATUS     _IOR('n',0xF9,__u32)
155
156
157
158 struct video_info{
159         int           chip_id;
160         unsigned int  video_size;
161         unsigned long video_base;
162         char  *       video_vbase;
163         unsigned long mmio_base;
164         unsigned long mmio_size;
165         char  *       mmio_vbase;
166         unsigned long vga_base;
167         unsigned long mtrr;
168         unsigned long heapstart;
169
170         int    video_bpp;
171         int    video_cmap_len;
172         int    video_width;
173         int    video_height;
174         int    video_vwidth;
175         int    video_vheight;
176         int    org_x;
177         int    org_y;
178         int    video_linelength;
179         unsigned int refresh_rate;
180
181         unsigned long disp_state;
182         unsigned char hasVB;
183         unsigned char TV_type;
184         unsigned char TV_plug;
185
186         enum XGI_CHIP_TYPE chip;
187         unsigned char revision_id;
188
189         unsigned short DstColor;
190         unsigned long  XGI310_AccelDepth;
191         unsigned long  CommandReg;
192
193         spinlock_t     lockaccel;
194
195         unsigned int   pcibus;
196         unsigned int   pcislot;
197         unsigned int   pcifunc;
198
199         int            accel;
200         unsigned short subsysvendor;
201         unsigned short subsysdevice;
202
203         char reserved[236];
204 };
205
206
207 extern struct video_info xgi_video_info;
208
209 #endif