Merge branches 'gemini' and 'misc' into devel
[GitHub/mt8127/android_kernel_alcatel_ttab.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