1 #include <linux/timer.h>
6 #include <video/fbcon.h>
9 volatile unsigned int addr; /* address register */
10 volatile unsigned int color_map; /* color map */
11 volatile unsigned int control; /* control register */
12 volatile unsigned int cursor; /* cursor map register */
15 struct fb_info_creator {
25 struct fb_info_cgsix {
32 struct fb_info_bwtwo {
33 struct bw2_regs *regs;
35 struct fb_info_cgthree {
36 struct cg3_regs *regs;
45 struct leo_lx_krn *lx_krn;
46 struct leo_lc_ss0_usr *lc_ss0_usr;
47 struct leo_ld_ss0 *ld_ss0;
48 struct leo_ld_ss1 *ld_ss1;
49 struct leo_cursor *cursor;
52 struct fb_info_cgfourteen {
53 struct cg14_regs *regs;
54 struct cg14_cursor *cursor;
55 struct cg14_clut *clut;
59 struct fb_info_p9100 {
60 struct p9100_ctrl *ctrl;
65 char enable; /* cursor is enabled */
66 char mode; /* cursor mode */
67 struct fbcurpos cpos; /* position */
68 struct fbcurpos chot; /* hot-spot */
69 struct fbcurpos size; /* size of mask & image fields */
70 struct fbcurpos hwsize; /* hw max size */
71 int bits[2][128]; /* space for mask & image bits */
72 char color [6]; /* cursor colors */
73 struct timer_list timer; /* cursor timer */
74 int blink_rate; /* cursor blink rate */
77 struct sbus_mmap_map {
83 #define SBUS_MMAP_FBSIZE(n) (-n)
84 #define SBUS_MMAP_EMPTY 0x80000000
86 struct fb_info_sbusfb {
88 struct fb_fix_screeninfo fix;
89 struct fb_var_screeninfo var;
91 struct display_switch dispsw;
93 struct sbus_dev *sbdp;
95 int prom_node, prom_parent;
97 struct fb_info_creator ffb;
98 struct fb_info_cgsix cg6;
99 struct fb_info_bwtwo bw2;
100 struct fb_info_cgthree cg3;
101 struct fb_info_tcx tcx;
102 struct fb_info_leo leo;
103 struct fb_info_cgfourteen cg14;
104 struct fb_info_p9100 p9100;
106 unsigned char *color_map;
107 struct cg_cursor cursor;
109 unsigned char mmaped;
110 unsigned char blanked;
117 struct sbus_mmap_map *mmap_map;
118 unsigned long physbase;
121 void (*setup)(struct display *);
122 void (*setcursor)(struct fb_info_sbusfb *);
123 void (*setcurshape)(struct fb_info_sbusfb *);
124 void (*setcursormap)(struct fb_info_sbusfb *, unsigned char *, unsigned char *, unsigned char *);
125 void (*loadcmap)(struct fb_info_sbusfb *, struct display *, int, int);
126 void (*blank)(struct fb_info_sbusfb *);
127 void (*unblank)(struct fb_info_sbusfb *);
128 void (*margins)(struct fb_info_sbusfb *, struct display *, int, int);
129 void (*reset)(struct fb_info_sbusfb *);
130 void (*fill)(struct fb_info_sbusfb *, struct display *, int, int, unsigned short *);
131 void (*switch_from_graph)(struct fb_info_sbusfb *);
132 void (*restore_palette)(struct fb_info_sbusfb *);
133 int (*ioctl)(struct fb_info_sbusfb *, unsigned int, unsigned long);
136 extern char *creatorfb_init(struct fb_info_sbusfb *);
137 extern char *cgsixfb_init(struct fb_info_sbusfb *);
138 extern char *cgthreefb_init(struct fb_info_sbusfb *);
139 extern char *tcxfb_init(struct fb_info_sbusfb *);
140 extern char *leofb_init(struct fb_info_sbusfb *);
141 extern char *bwtwofb_init(struct fb_info_sbusfb *);
142 extern char *cgfourteenfb_init(struct fb_info_sbusfb *);
143 extern char *p9100fb_init(struct fb_info_sbusfb *);
145 #define sbusfbinfod(disp) ((struct fb_info_sbusfb *)(disp->fb_info))
146 #define sbusfbinfo(info) ((struct fb_info_sbusfb *)(info))
147 #define CM(i, j) [3*(i)+(j)]
149 #define SBUSFBINIT_SIZECHANGE ((char *)-1)