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 linux_sbus_device
*sbdp
;
94 int prom_node
, prom_parent
;
96 struct fb_info_creator ffb
;
97 struct fb_info_cgsix cg6
;
98 struct fb_info_bwtwo bw2
;
99 struct fb_info_cgthree cg3
;
100 struct fb_info_tcx tcx
;
101 struct fb_info_leo leo
;
102 struct fb_info_cgfourteen cg14
;
103 struct fb_info_p9100 p9100
;
105 unsigned char *color_map
;
106 struct cg_cursor cursor
;
108 unsigned char mmaped
;
109 unsigned char blanked
;
116 struct sbus_mmap_map
*mmap_map
;
117 unsigned long physbase
;
120 void (*setup
)(struct display
*);
121 void (*setcursor
)(struct fb_info_sbusfb
*);
122 void (*setcurshape
)(struct fb_info_sbusfb
*);
123 void (*setcursormap
)(struct fb_info_sbusfb
*, unsigned char *, unsigned char *, unsigned char *);
124 void (*loadcmap
)(struct fb_info_sbusfb
*, struct display
*, int, int);
125 void (*blank
)(struct fb_info_sbusfb
*);
126 void (*unblank
)(struct fb_info_sbusfb
*);
127 void (*margins
)(struct fb_info_sbusfb
*, struct display
*, int, int);
128 void (*reset
)(struct fb_info_sbusfb
*);
129 void (*fill
)(struct fb_info_sbusfb
*, struct display
*, int, int, unsigned short *);
130 void (*switch_from_graph
)(struct fb_info_sbusfb
*);
131 void (*restore_palette
)(struct fb_info_sbusfb
*);
132 int (*ioctl
)(struct fb_info_sbusfb
*, unsigned int, unsigned long);
135 extern char *creatorfb_init(struct fb_info_sbusfb
*);
136 extern char *cgsixfb_init(struct fb_info_sbusfb
*);
137 extern char *cgthreefb_init(struct fb_info_sbusfb
*);
138 extern char *tcxfb_init(struct fb_info_sbusfb
*);
139 extern char *leofb_init(struct fb_info_sbusfb
*);
140 extern char *bwtwofb_init(struct fb_info_sbusfb
*);
141 extern char *cgfourteenfb_init(struct fb_info_sbusfb
*);
142 extern char *p9100fb_init(struct fb_info_sbusfb
*);
144 #define sbusfbinfod(disp) ((struct fb_info_sbusfb *)(disp->fb_info))
145 #define sbusfbinfo(info) ((struct fb_info_sbusfb *)(info))
146 #define CM(i, j) [3*(i)+(j)]
148 #define SBUSFBINIT_SIZECHANGE ((char *)-1)