]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/xgifb/XGIfb.h
staging: Add framebuffer driver for XGI chipsets
[net-next-2.6.git] / 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 typedef 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 } XGI_CHIP_TYPE;
57
58 typedef enum _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 } XGI_TV_TYPE;
67
68
69 typedef struct _XGIFB_INFO XGIfb_info;
70 struct _XGIFB_INFO {
71
72 unsigned long XGIfb_id;
73         int    chip_id;                 /* PCI ID of detected chip */
74         int    memory;                  /* video memory in KB which XGIfb manages */
75         int    heapstart;               /* heap start (= XGIfb "mem" argument) in KB */
76         unsigned char fbvidmode;        /* current XGIfb mode */
77
78         unsigned char XGIfb_version;
79         unsigned char XGIfb_revision;
80         unsigned char XGIfb_patchlevel;
81
82         unsigned char XGIfb_caps;       /* XGIfb capabilities */
83
84         int    XGIfb_tqlen;             /* turbo queue length (in KB) */
85
86         unsigned int XGIfb_pcibus;      /* The card's PCI ID */
87         unsigned int XGIfb_pcislot;
88         unsigned int XGIfb_pcifunc;
89
90         unsigned char XGIfb_lcdpdc;     /* PanelDelayCompensation */
91
92         unsigned char XGIfb_lcda;       /* Detected status of LCDA for low res/text modes */
93
94         char reserved[235];             /* for future use */
95 };
96
97
98
99
100 typedef enum _TVPLUGTYPE {      // vicki@030226
101 //      TVPLUG_Legacy = 0,
102 //      TVPLUG_COMPOSITE,
103 //      TVPLUG_SVIDEO,
104 //      TVPLUG_SCART,
105 //      TVPLUG_TOTAL
106         TVPLUG_UNKNOWN = 0,
107         TVPLUG_COMPOSITE = 1,
108         TVPLUG_SVIDEO = 2,
109         TVPLUG_COMPOSITE_AND_SVIDEO = 3,
110         TVPLUG_SCART = 4,
111         TVPLUG_YPBPR_525i = 5,
112         TVPLUG_YPBPR_525P = 6,
113         TVPLUG_YPBPR_750P = 7,
114         TVPLUG_YPBPR_1080i = 8,
115         TVPLUG_TOTAL
116 } XGI_TV_PLUG;
117
118
119 struct mode_info {
120         int    bpp;
121         int    xres;
122         int    yres;
123         int    v_xres;
124         int    v_yres;
125         int    org_x;
126         int    org_y;
127         unsigned int  vrate;
128 };
129
130 struct ap_data {
131         struct mode_info minfo;
132         unsigned long iobase;
133         unsigned int  mem_size;
134         unsigned long disp_state;
135         XGI_CHIP_TYPE chip;
136         unsigned char hasVB;
137         XGI_TV_TYPE TV_type;
138         XGI_TV_PLUG TV_plug;
139         unsigned long version;
140         char reserved[256];
141 };
142
143
144
145 /*     If changing this, vgatypes.h must also be changed (for X driver)    */
146
147
148 /*
149  * NOTE! The ioctl types used to be "size_t" by mistake, but were
150  * really meant to be __u32. Changed to "__u32" even though that
151  * changes the value on 64-bit architectures, because the value
152  * (with a 4-byte size) is also hardwired in vgatypes.h for user
153  * space exports. So "__u32" is actually more compatible, duh!
154  */
155 #define XGIFB_GET_INFO          _IOR('n',0xF8,__u32)
156 #define XGIFB_GET_VBRSTATUS     _IOR('n',0xF9,__u32)
157
158
159
160 struct video_info{
161         int           chip_id;
162         unsigned int  video_size;
163         unsigned long video_base;
164         char  *       video_vbase;
165         unsigned long mmio_base;
166         char  *       mmio_vbase;
167         unsigned long vga_base;
168         unsigned long mtrr;
169         unsigned long heapstart;
170
171         int    video_bpp;
172         int    video_cmap_len;
173         int    video_width;
174         int    video_height;
175         int    video_vwidth;
176         int    video_vheight;
177         int    org_x;
178         int    org_y;
179         int    video_linelength;
180         unsigned int refresh_rate;
181
182         unsigned long disp_state;
183         unsigned char hasVB;
184         unsigned char TV_type;
185         unsigned char TV_plug;
186
187         XGI_CHIP_TYPE chip;
188         unsigned char revision_id;
189
190         unsigned short DstColor;
191         unsigned long  XGI310_AccelDepth;
192         unsigned long  CommandReg;
193
194         spinlock_t     lockaccel;
195
196         unsigned int   pcibus;
197         unsigned int   pcislot;
198         unsigned int   pcifunc;
199
200         int            accel;
201         unsigned short subsysvendor;
202         unsigned short subsysdevice;
203
204         char reserved[236];
205 };
206
207
208 extern struct video_info xgi_video_info;
209
210 #ifdef __KERNEL__
211 //extern void xgi_malloc(struct xgi_memreq *req);
212 extern void xgi_free(unsigned long base);
213 extern void xgi_dispinfo(struct ap_data *rec);
214 #endif
215 #endif