OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [LINUX_2_4_26_OR32/] [linux/] [linux-2.4/] [include/] [linux/] [sisfb.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 * Copyright (C) 2001-2004 by Thomas Winischhofer, Vienna, Austria.
3
 *
4
 * This program is free software; you can redistribute it and/or modify
5
 * it under the terms of the GNU General Public License as published by
6
 * the Free Software Foundation; either version 2 of the named License,
7
 * or any later version.
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program; if not, write to the Free Software
16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
17
 */
18
 
19
#ifndef _LINUX_SISFB
20
#define _LINUX_SISFB
21
 
22
#include <asm/ioctl.h>
23
#include <asm/types.h>
24
 
25
/**********************************************/
26
/*                   PUBLIC                   */
27
/**********************************************/
28
 
29
/* vbflags */
30
#define CRT2_DEFAULT            0x00000001
31
#define CRT2_LCD                0x00000002  /* TW: Never change the order of the CRT2_XXX entries */
32
#define CRT2_TV                 0x00000004  /*     (see SISCycleCRT2Type())                       */
33
#define CRT2_VGA                0x00000008
34
#define TV_NTSC                 0x00000010
35
#define TV_PAL                  0x00000020
36
#define TV_HIVISION             0x00000040
37
#define TV_YPBPR                0x00000080
38
#define TV_AVIDEO               0x00000100
39
#define TV_SVIDEO               0x00000200
40
#define TV_SCART                0x00000400
41
#define VB_CONEXANT             0x00000800      /* 661 series only */
42
#define VB_TRUMPION             VB_CONEXANT     /* 300 series only */
43
#define TV_PALM                 0x00001000
44
#define TV_PALN                 0x00002000
45
#define TV_NTSCJ                0x00001000
46
#define VB_302ELV               0x00004000
47
#define TV_CHSCART              0x00008000
48
#define TV_CHYPBPR525I          0x00010000
49
#define CRT1_VGA                0x00000000
50
#define CRT1_LCDA               0x00020000
51
#define VGA2_CONNECTED          0x00040000
52
#define VB_DISPTYPE_CRT1        0x00080000      /* CRT1 connected and used */
53
#define VB_301                  0x00100000      /* Video bridge type */
54
#define VB_301B                 0x00200000
55
#define VB_302B                 0x00400000
56
#define VB_30xBDH               0x00800000      /* 30xB DH version (w/o LCD support) */
57
#define VB_LVDS                 0x01000000
58
#define VB_CHRONTEL             0x02000000
59
#define VB_301LV                0x04000000
60
#define VB_302LV                0x08000000
61
#define VB_301C                 0x10000000
62
#define VB_SINGLE_MODE          0x20000000      /* CRT1 or CRT2; determined by DISPTYPE_CRTx */
63
#define VB_MIRROR_MODE          0x40000000      /* CRT1 + CRT2 identical (mirror mode) */
64
#define VB_DUALVIEW_MODE        0x80000000      /* CRT1 + CRT2 independent (dual head mode) */
65
 
66
/* Aliases: */
67
#define CRT2_ENABLE             (CRT2_LCD | CRT2_TV | CRT2_VGA)
68
#define TV_STANDARD             (TV_NTSC | TV_PAL | TV_PALM | TV_PALN | TV_NTSCJ)
69
#define TV_INTERFACE            (TV_AVIDEO|TV_SVIDEO|TV_SCART|TV_HIVISION|TV_YPBPR|TV_CHSCART|TV_CHYPBPR525I)
70
 
71
/* Only if TV_YPBPR is set: */
72
#define TV_YPBPR525I            TV_NTSC
73
#define TV_YPBPR525P            TV_PAL
74
#define TV_YPBPR750P            TV_PALM
75
#define TV_YPBPR1080I           TV_PALN
76
#define TV_YPBPRALL             (TV_YPBPR525I | TV_YPBPR525P | TV_YPBPR750P | TV_YPBPR1080I)
77
 
78
#define VB_SISBRIDGE            (VB_301|VB_301B|VB_301C|VB_302B|VB_301LV|VB_302LV|VB_302ELV)
79
#define VB_SISTVBRIDGE          (VB_301|VB_301B|VB_301C|VB_302B|VB_301LV|VB_302LV)
80
#define VB_VIDEOBRIDGE          (VB_SISBRIDGE | VB_LVDS | VB_CHRONTEL | VB_CONEXANT)
81
 
82
#define VB_DISPTYPE_DISP2       CRT2_ENABLE
83
#define VB_DISPTYPE_CRT2        CRT2_ENABLE
84
#define VB_DISPTYPE_DISP1       VB_DISPTYPE_CRT1
85
#define VB_DISPMODE_SINGLE      VB_SINGLE_MODE
86
#define VB_DISPMODE_MIRROR      VB_MIRROR_MODE
87
#define VB_DISPMODE_DUAL        VB_DUALVIEW_MODE
88
#define VB_DISPLAY_MODE         (SINGLE_MODE | MIRROR_MODE | DUALVIEW_MODE)
89
 
90
/* *Never* change the order of the following enum */
91
typedef enum _SIS_CHIP_TYPE {
92
        SIS_VGALegacy = 0,       /* chip_id in sisfb_info */
93
        SIS_300,
94
        SIS_630,
95
        SIS_540,
96
        SIS_730,
97
        SIS_315H,
98
        SIS_315,
99
        SIS_315PRO,
100
        SIS_550,
101
        SIS_650,
102
        SIS_740,
103
        SIS_330,
104
        SIS_661,
105
        SIS_741,
106
        SIS_660,
107
        SIS_760,
108
        MAX_SIS_CHIP
109
} SIS_CHIP_TYPE;
110
 
111
/* Addtional IOCTLs for communication sisfb <> X driver                */
112
/* If changing this, vgatypes.h must also be changed (for X driver)    */
113
 
114
/* ioctl for identifying and giving some info (esp. memory heap start) */
115
#define SISFB_GET_INFO          _IOR('n',0xF8,__u32)
116
/* ioctrl to get current vertical retrace status */
117
#define SISFB_GET_VBRSTATUS     _IOR('n',0xF9,__u32)
118
/* ioctl to enable/disable panning auto-maximize (like nomax parameter) */
119
#define SISFB_GET_AUTOMAXIMIZE  _IOR('n',0xFA,__u32)
120
#define SISFB_SET_AUTOMAXIMIZE  _IOW('n',0xFA,__u32)
121
 
122
/* TW: Structure argument for SISFB_GET_INFO ioctl  */
123
typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
124
 
125
struct _SISFB_INFO {
126
        u32     sisfb_id;               /* for identifying sisfb */
127
#ifndef SISFB_ID
128
#define SISFB_ID          0x53495346    /* Identify myself with 'SISF' */
129
#endif
130
        u32     chip_id;                /* PCI ID of detected chip */
131
        u32     memory;                 /* video memory in KB which sisfb manages */
132
        u32     heapstart;              /* heap start (= sisfb "mem" argument) in KB */
133
        u8      fbvidmode;              /* current sisfb mode */
134
 
135
        u8      sisfb_version;
136
        u8      sisfb_revision;
137
        u8      sisfb_patchlevel;
138
 
139
        u8      sisfb_caps;             /* Sisfb capabilities */
140
 
141
        u32     sisfb_tqlen;            /* turbo queue length (in KB) */
142
 
143
        u32     sisfb_pcibus;           /* The card's PCI ID */
144
        u32     sisfb_pcislot;
145
        u32     sisfb_pcifunc;
146
 
147
        u8      sisfb_lcdpdc;           /* PanelDelayCompensation */
148
 
149
        u8      sisfb_lcda;             /* Detected status of LCDA for low res/text modes */
150
 
151
        u32     sisfb_vbflags;
152
        u32     sisfb_currentvbflags;
153
 
154
        u32     sisfb_scalelcd;
155
        u32     sisfb_specialtiming;
156
 
157
        u8      sisfb_haveemi;
158
        u8      sisfb_emi30,sisfb_emi31,sisfb_emi32,sisfb_emi33;
159
        u8      sisfb_haveemilcd;
160
 
161
        u8      sisfb_lcdpdca;          /* PanelDelayCompensation for LCD-via-CRT1 */
162
 
163
        u8      reserved[212];          /* for future use */
164
};
165
 
166
/* For fb memory manager */
167
struct sis_memreq {
168
        unsigned long offset;
169
        unsigned long size;
170
};
171
 
172
/* More or less deprecated stuff follows: */
173
typedef enum _TVTYPE {
174
        TVMODE_NTSC = 0,
175
        TVMODE_PAL,
176
        TVMODE_HIVISION,
177
        TVMODE_TOTAL
178
} SIS_TV_TYPE;
179
 
180
typedef enum _TVPLUGTYPE {
181
        TVPLUG_Legacy = 0,
182
        TVPLUG_COMPOSITE,
183
        TVPLUG_SVIDEO,
184
        TVPLUG_SCART,
185
        TVPLUG_TOTAL
186
} SIS_TV_PLUG;
187
 
188
struct mode_info {
189
        int    bpp;
190
        int    xres;
191
        int    yres;
192
        int    v_xres;          /* deprecated - use var instead */
193
        int    v_yres;          /* deprecated - use var instead */
194
        int    org_x;           /* deprecated - use var instead */
195
        int    org_y;           /* deprecated - use var instead */
196
        unsigned int  vrate;
197
};
198
 
199
struct ap_data {
200
        struct mode_info minfo;
201
        unsigned long iobase;
202
        unsigned int  mem_size;
203
        unsigned long disp_state;  /* deprecated */
204
        SIS_CHIP_TYPE chip;
205
        unsigned char hasVB;
206
        SIS_TV_TYPE TV_type;       /* deprecated */
207
        SIS_TV_PLUG TV_plug;       /* deprecated */
208
        unsigned long version;
209
        unsigned long vbflags;     /* replaces deprecated entries above */
210
        unsigned long currentvbflags;
211
        char reserved[248];
212
};
213
 
214
/**********************************************/
215
/*                  PRIVATE                   */
216
/**********************************************/
217
 
218
#ifdef __KERNEL__
219
#include <linux/spinlock.h>
220
 
221
typedef enum _VGA_ENGINE {
222
        UNKNOWN_VGA = 0,
223
        SIS_300_VGA,
224
        SIS_315_VGA,
225
} VGA_ENGINE;
226
 
227
struct video_info {
228
        int             chip_id;
229
        unsigned int    video_size;
230
        unsigned long   video_base;
231
        char  *         video_vbase;
232
        unsigned long   mmio_size;
233
        unsigned long   mmio_base;
234
        char  *         mmio_vbase;
235
        unsigned long   vga_base;
236
        unsigned long   mtrr;
237
        unsigned long   heapstart;
238
        char  *         bios_vbase;
239
        char  *         bios_abase;
240
 
241
        int             video_bpp;
242
        int             video_cmap_len;
243
        int             video_width;
244
        int             video_height;
245
        int             video_vwidth;           /* DEPRECATED - use var instead */
246
        int             video_vheight;          /* DEPRECATED - use var instead */
247
        int             org_x;                  /* DEPRECATED - use var instead */
248
        int             org_y;                  /* DEPRECATED - use var instead */
249
        int             video_linelength;
250
        unsigned int    refresh_rate;
251
 
252
        unsigned long   disp_state;             /* DEPRECATED */
253
        unsigned char   hasVB;                  /* DEPRECATED */
254
        unsigned char   TV_type;                /* DEPRECATED */
255
        unsigned char   TV_plug;                /* DEPRECATED */
256
 
257
        SIS_CHIP_TYPE chip;
258
        unsigned char revision_id;
259
 
260
        unsigned short  DstColor;               /* For 2d acceleration */
261
        unsigned long   SiS310_AccelDepth;
262
        unsigned long   CommandReg;
263
 
264
        spinlock_t      lockaccel;              /* Do not use outside of kernel! */
265
 
266
        unsigned int    pcibus;
267
        unsigned int    pcislot;
268
        unsigned int    pcifunc;
269
 
270
        int             accel;
271
 
272
        unsigned short  subsysvendor;
273
        unsigned short  subsysdevice;
274
 
275
        unsigned long   vbflags;                /* Replacing deprecated stuff from above */
276
        unsigned long   currentvbflags;
277
 
278
        int             current_bpp;
279
        int             current_width;
280
        int             current_height;
281
        int             current_htotal;
282
        int             current_vtotal;
283
        __u32           current_pixclock;
284
        int             current_refresh_rate;
285
 
286
        u8              mode_no;
287
        u8              rate_idx;
288
        int             modechanged;
289
        unsigned char   modeprechange;
290
 
291
        int             newrom;
292
        int             registered;
293
 
294
        VGA_ENGINE      sisvga_engine;
295
        int             hwcursor_size;
296
        int             CRT2_write_enable;
297
        u8              caps;
298
 
299
        unsigned char   detectedpdc;
300
        unsigned char   detectedpdca;
301
        unsigned char   detectedlcda;
302
 
303
        unsigned long   hwcursor_vbase;
304
 
305
        char reserved[166];
306
};
307
 
308
extern struct video_info ivideo;
309
 
310
extern void sis_malloc(struct sis_memreq *req);
311
extern void sis_free(unsigned long base);
312
extern void sis_dispinfo(struct ap_data *rec);
313
#endif
314
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.