sisfb.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _LINUX_SISFB
  2. #define _LINUX_SISFB
  3. #include <linux/spinlock.h>
  4. #include <asm/ioctl.h>
  5. #include <asm/types.h>
  6. #define DISPTYPE_CRT1       0x00000008L
  7. #define DISPTYPE_CRT2       0x00000004L
  8. #define DISPTYPE_LCD        0x00000002L
  9. #define DISPTYPE_TV         0x00000001L
  10. #define DISPTYPE_DISP1      DISPTYPE_CRT1
  11. #define DISPTYPE_DISP2      (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV)
  12. #define DISPMODE_SINGLE     0x00000020L
  13. #define DISPMODE_MIRROR     0x00000010L
  14. #define DISPMODE_DUALVIEW   0x00000040L
  15. #define HASVB_NONE       0x00
  16. #define HASVB_301        0x01
  17. #define HASVB_LVDS       0x02
  18. #define HASVB_TRUMPION   0x04
  19. #define HASVB_LVDS_CHRONTEL 0x10
  20. #define HASVB_302        0x20
  21. #define HASVB_303        0x40
  22. #define HASVB_CHRONTEL   0x80
  23. /* TW: *Never* change the order of the following enum */
  24. typedef enum _SIS_CHIP_TYPE {
  25. SIS_VGALegacy = 0,
  26. SIS_300,
  27. SIS_630,
  28. SIS_540,
  29. SIS_730, 
  30. SIS_315H,
  31. SIS_315,
  32. SIS_550,
  33. SIS_315PRO,
  34. SIS_640,
  35. SIS_740,
  36. SIS_650,
  37. SIS_330,
  38. MAX_SIS_CHIP
  39. } SIS_CHIP_TYPE;
  40. typedef enum _VGA_ENGINE {
  41. UNKNOWN_VGA = 0,
  42. SIS_300_VGA,
  43. SIS_315_VGA,
  44. } VGA_ENGINE;
  45. typedef enum _TVTYPE {
  46. TVMODE_NTSC = 0,
  47. TVMODE_PAL,
  48. TVMODE_HIVISION,
  49. TVMODE_TOTAL
  50. } SIS_TV_TYPE;
  51. typedef enum _TVPLUGTYPE {
  52. TVPLUG_Legacy = 0,
  53. TVPLUG_COMPOSITE,
  54. TVPLUG_SVIDEO,
  55. TVPLUG_SCART,
  56. TVPLUG_TOTAL
  57. } SIS_TV_PLUG;
  58. struct sis_memreq {
  59. unsigned long offset;
  60. unsigned long size;
  61. };
  62. struct mode_info {
  63. int    bpp;
  64. int    xres;
  65. int    yres;
  66. int    v_xres;
  67. int    v_yres;
  68. int    org_x;
  69. int    org_y;
  70. unsigned int  vrate;
  71. };
  72. struct ap_data {
  73. struct mode_info minfo;
  74. unsigned long iobase;
  75. unsigned int  mem_size;
  76. unsigned long disp_state;    
  77. SIS_CHIP_TYPE chip;
  78. unsigned char hasVB;
  79. SIS_TV_TYPE TV_type;
  80. SIS_TV_PLUG TV_plug;
  81. unsigned long version;
  82. char reserved[256];
  83. };
  84. struct video_info {
  85. int           chip_id;
  86. unsigned int  video_size;
  87. unsigned long video_base;
  88. char  *       video_vbase;
  89. unsigned long mmio_base;
  90. char  *       mmio_vbase;
  91. unsigned long vga_base;
  92. unsigned long mtrr;
  93. unsigned long heapstart;
  94. int    video_bpp;
  95. int    video_cmap_len;
  96. int    video_width;
  97. int    video_height;
  98. int    video_vwidth;
  99. int    video_vheight;
  100. int    org_x;
  101. int    org_y;
  102. int    video_linelength;
  103. unsigned int refresh_rate;
  104. unsigned long disp_state;
  105. unsigned char hasVB;
  106. unsigned char TV_type;
  107. unsigned char TV_plug;
  108. SIS_CHIP_TYPE chip;
  109. unsigned char revision_id;
  110.         unsigned short DstColor; /* TW: For 2d acceleration */
  111. unsigned long  SiS310_AccelDepth;
  112. unsigned long  CommandReg;
  113. spinlock_t     lockaccel;
  114. char reserved[256];
  115. };
  116. /* TW: Addtional IOCTL for communication sisfb <> X driver                 */
  117. /*     If changing this, vgatypes.h must also be changed (for X driver)    */
  118. /* TW: ioctl for identifying and giving some info (esp. memory heap start) */
  119. #define SISFB_GET_INFO   _IOR('n',0xF8,sizeof(__u32))
  120. /* TW: Structure argument for SISFB_GET_INFO ioctl  */
  121. typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
  122. struct _SISFB_INFO {
  123. unsigned long sisfb_id;         /* for identifying sisfb */
  124. #ifndef SISFB_ID
  125. #define SISFB_ID   0x53495346    /* Identify myself with 'SISF' */
  126. #endif
  127.   int    chip_id; /* PCI ID of detected chip */
  128. int    memory; /* video memory in KB which sisfb manages */
  129. int    heapstart;               /* heap start (= sisfb "mem" argument) in KB */
  130. unsigned char fbvidmode; /* current sisfb mode */
  131. unsigned char sisfb_version;
  132. unsigned char sisfb_revision;
  133. unsigned char sisfb_patchlevel;
  134. unsigned char sisfb_caps; /* Sisfb capabilities */
  135. int    sisfb_tqlen; /* turbo queue length (in KB) */
  136. char reserved[249];  /* for future use */
  137. };
  138. #ifdef __KERNEL__
  139. extern struct video_info ivideo;
  140. extern void sis_malloc(struct sis_memreq *req);
  141. extern void sis_free(unsigned long base);
  142. extern void sis_dispinfo(struct ap_data *rec);
  143. #endif
  144. #endif