sisfb.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
- #ifndef _LINUX_SISFB
- #define _LINUX_SISFB
- #include <linux/spinlock.h>
- #include <asm/ioctl.h>
- #include <asm/types.h>
- #define DISPTYPE_CRT1 0x00000008L
- #define DISPTYPE_CRT2 0x00000004L
- #define DISPTYPE_LCD 0x00000002L
- #define DISPTYPE_TV 0x00000001L
- #define DISPTYPE_DISP1 DISPTYPE_CRT1
- #define DISPTYPE_DISP2 (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV)
- #define DISPMODE_SINGLE 0x00000020L
- #define DISPMODE_MIRROR 0x00000010L
- #define DISPMODE_DUALVIEW 0x00000040L
- #define HASVB_NONE 0x00
- #define HASVB_301 0x01
- #define HASVB_LVDS 0x02
- #define HASVB_TRUMPION 0x04
- #define HASVB_LVDS_CHRONTEL 0x10
- #define HASVB_302 0x20
- #define HASVB_303 0x40
- #define HASVB_CHRONTEL 0x80
- /* TW: *Never* change the order of the following enum */
- typedef enum _SIS_CHIP_TYPE {
- SIS_VGALegacy = 0,
- SIS_300,
- SIS_630,
- SIS_540,
- SIS_730,
- SIS_315H,
- SIS_315,
- SIS_550,
- SIS_315PRO,
- SIS_640,
- SIS_740,
- SIS_650,
- SIS_330,
- MAX_SIS_CHIP
- } SIS_CHIP_TYPE;
- typedef enum _VGA_ENGINE {
- UNKNOWN_VGA = 0,
- SIS_300_VGA,
- SIS_315_VGA,
- } VGA_ENGINE;
- typedef enum _TVTYPE {
- TVMODE_NTSC = 0,
- TVMODE_PAL,
- TVMODE_HIVISION,
- TVMODE_TOTAL
- } SIS_TV_TYPE;
- typedef enum _TVPLUGTYPE {
- TVPLUG_Legacy = 0,
- TVPLUG_COMPOSITE,
- TVPLUG_SVIDEO,
- TVPLUG_SCART,
- TVPLUG_TOTAL
- } SIS_TV_PLUG;
- struct sis_memreq {
- unsigned long offset;
- unsigned long size;
- };
- struct mode_info {
- int bpp;
- int xres;
- int yres;
- int v_xres;
- int v_yres;
- int org_x;
- int org_y;
- unsigned int vrate;
- };
- struct ap_data {
- struct mode_info minfo;
- unsigned long iobase;
- unsigned int mem_size;
- unsigned long disp_state;
- SIS_CHIP_TYPE chip;
- unsigned char hasVB;
- SIS_TV_TYPE TV_type;
- SIS_TV_PLUG TV_plug;
- unsigned long version;
- char reserved[256];
- };
- struct video_info {
- int chip_id;
- unsigned int video_size;
- unsigned long video_base;
- char * video_vbase;
- unsigned long mmio_base;
- char * mmio_vbase;
- unsigned long vga_base;
- unsigned long mtrr;
- unsigned long heapstart;
- int video_bpp;
- int video_cmap_len;
- int video_width;
- int video_height;
- int video_vwidth;
- int video_vheight;
- int org_x;
- int org_y;
- int video_linelength;
- unsigned int refresh_rate;
- unsigned long disp_state;
- unsigned char hasVB;
- unsigned char TV_type;
- unsigned char TV_plug;
- SIS_CHIP_TYPE chip;
- unsigned char revision_id;
- unsigned short DstColor; /* TW: For 2d acceleration */
- unsigned long SiS310_AccelDepth;
- unsigned long CommandReg;
- spinlock_t lockaccel;
- char reserved[256];
- };
- /* TW: Addtional IOCTL for communication sisfb <> X driver */
- /* If changing this, vgatypes.h must also be changed (for X driver) */
- /* TW: ioctl for identifying and giving some info (esp. memory heap start) */
- #define SISFB_GET_INFO _IOR('n',0xF8,sizeof(__u32))
- /* TW: Structure argument for SISFB_GET_INFO ioctl */
- typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
- struct _SISFB_INFO {
- unsigned long sisfb_id; /* for identifying sisfb */
- #ifndef SISFB_ID
- #define SISFB_ID 0x53495346 /* Identify myself with 'SISF' */
- #endif
- int chip_id; /* PCI ID of detected chip */
- int memory; /* video memory in KB which sisfb manages */
- int heapstart; /* heap start (= sisfb "mem" argument) in KB */
- unsigned char fbvidmode; /* current sisfb mode */
-
- unsigned char sisfb_version;
- unsigned char sisfb_revision;
- unsigned char sisfb_patchlevel;
- unsigned char sisfb_caps; /* Sisfb capabilities */
- int sisfb_tqlen; /* turbo queue length (in KB) */
- char reserved[249]; /* for future use */
- };
- #ifdef __KERNEL__
- extern struct video_info ivideo;
- extern void sis_malloc(struct sis_memreq *req);
- extern void sis_free(unsigned long base);
- extern void sis_dispinfo(struct ap_data *rec);
- #endif
- #endif