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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #include <linux/timer.h>
  2. #include <asm/sbus.h>
  3. #include <asm/oplib.h>
  4. #include <asm/fbio.h>
  5. #include <video/fbcon.h>
  6. struct bt_regs {
  7. volatile unsigned int addr;           /* address register */
  8. volatile unsigned int color_map;      /* color map */
  9. volatile unsigned int control;        /* control register */
  10. volatile unsigned int cursor;         /* cursor map register */
  11. };
  12. struct fb_info_creator {
  13. struct ffb_fbc *fbc;
  14. struct ffb_dac *dac;
  15. int xy_margin;
  16. int fifo_cache;
  17. u64 yx_margin;
  18. int fg_cache;
  19. int bg_cache;
  20. int dac_rev;
  21. };
  22. struct fb_info_cgsix {
  23. struct bt_regs *bt;
  24. struct cg6_fbc *fbc;
  25. struct cg6_thc *thc;
  26. struct cg6_tec *tec;
  27. volatile u32 *fhc;
  28. };
  29. struct fb_info_bwtwo {
  30. struct bw2_regs *regs;
  31. };
  32. struct fb_info_cgthree {
  33. struct cg3_regs *regs;
  34. };
  35. struct fb_info_tcx {
  36. struct bt_regs *bt;
  37. struct tcx_thc *thc;
  38. struct tcx_tec *tec;
  39. u32 *cplane;
  40. };
  41. struct fb_info_leo {
  42. struct leo_lx_krn *lx_krn;
  43. struct leo_lc_ss0_usr *lc_ss0_usr;
  44. struct leo_ld_ss0 *ld_ss0;
  45. struct leo_ld_ss1 *ld_ss1;
  46. struct leo_cursor *cursor;
  47. unsigned int extent;
  48. };
  49. struct fb_info_cgfourteen {
  50. struct cg14_regs *regs;
  51. struct cg14_cursor *cursor;
  52. struct cg14_clut *clut;
  53. int ramsize;
  54. int mode;
  55. };
  56. struct fb_info_p9100 {
  57. struct p9100_ctrl *ctrl;
  58. volatile u32 *fbmem;
  59. };
  60. struct cg_cursor {
  61. char enable;         /* cursor is enabled */
  62. char mode; /* cursor mode */
  63. struct fbcurpos cpos;  /* position */
  64. struct fbcurpos chot;  /* hot-spot */
  65. struct fbcurpos size;  /* size of mask & image fields */
  66. struct fbcurpos hwsize; /* hw max size */
  67. int bits[2][128];   /* space for mask & image bits */
  68. char color [6];      /* cursor colors */
  69. struct timer_list timer; /* cursor timer */
  70. int blink_rate; /* cursor blink rate */
  71. };
  72. struct sbus_mmap_map {
  73. unsigned long voff;
  74. unsigned long poff;
  75. unsigned long size;
  76. };
  77. #define SBUS_MMAP_FBSIZE(n) (-n)
  78. #define SBUS_MMAP_EMPTY 0x80000000
  79. struct fb_info_sbusfb {
  80. struct fb_info info;
  81. struct fb_fix_screeninfo fix;
  82. struct fb_var_screeninfo var;
  83. struct display disp;
  84. struct display_switch dispsw;
  85. struct fbtype type;
  86. struct sbus_dev *sbdp;
  87. spinlock_t lock;
  88. int prom_node, prom_parent;
  89. union {
  90. struct fb_info_creator ffb;
  91. struct fb_info_cgsix cg6;
  92. struct fb_info_bwtwo bw2;
  93. struct fb_info_cgthree cg3;
  94. struct fb_info_tcx tcx;
  95. struct fb_info_leo leo;
  96. struct fb_info_cgfourteen cg14;
  97. struct fb_info_p9100 p9100;
  98. } s;
  99. unsigned char *color_map;
  100. struct cg_cursor cursor;
  101. unsigned char open;
  102. unsigned char mmaped;
  103. unsigned char blanked;
  104. int x_margin;
  105. int y_margin;
  106. int vtconsole;
  107. int consolecnt;
  108. int graphmode;
  109. int emulations[4];
  110. struct sbus_mmap_map *mmap_map;
  111. unsigned long physbase;
  112. int iospace;
  113. /* Methods */
  114. void (*setup)(struct display *);
  115. void (*setcursor)(struct fb_info_sbusfb *);
  116. void (*setcurshape)(struct fb_info_sbusfb *);
  117. void (*setcursormap)(struct fb_info_sbusfb *, unsigned char *, unsigned char *, unsigned char *);
  118. void (*loadcmap)(struct fb_info_sbusfb *, struct display *, int, int);
  119. void (*blank)(struct fb_info_sbusfb *);
  120. void (*unblank)(struct fb_info_sbusfb *);
  121. void (*margins)(struct fb_info_sbusfb *, struct display *, int, int);
  122. void (*reset)(struct fb_info_sbusfb *);
  123. void (*fill)(struct fb_info_sbusfb *, struct display *, int, int, unsigned short *);
  124. void (*switch_from_graph)(struct fb_info_sbusfb *);
  125. void (*restore_palette)(struct fb_info_sbusfb *);
  126. int (*ioctl)(struct fb_info_sbusfb *, unsigned int, unsigned long);
  127. };
  128. extern char *creatorfb_init(struct fb_info_sbusfb *);
  129. extern char *cgsixfb_init(struct fb_info_sbusfb *);
  130. extern char *cgthreefb_init(struct fb_info_sbusfb *);
  131. extern char *tcxfb_init(struct fb_info_sbusfb *);
  132. extern char *leofb_init(struct fb_info_sbusfb *);
  133. extern char *bwtwofb_init(struct fb_info_sbusfb *);
  134. extern char *cgfourteenfb_init(struct fb_info_sbusfb *);
  135. extern char *p9100fb_init(struct fb_info_sbusfb *);
  136. #define sbusfbinfod(disp) ((struct fb_info_sbusfb *)(disp->fb_info))
  137. #define sbusfbinfo(info) ((struct fb_info_sbusfb *)(info))
  138. #define CM(i, j) [3*(i)+(j)]
  139. #define SBUSFBINIT_SIZECHANGE ((char *)-1)