1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/*
* linux/drivers/video/cyber2000fb.h
*
* Integraphics Cyber2000 frame buffer device
*/
#define arraysize(x) (sizeof(x)/sizeof(*(x)))
#define cyber2000_outb(dat,reg) (CyberRegs[reg] = dat)
#define cyber2000_outw(dat,reg) (*(unsigned short *)&CyberRegs[reg] = dat)
#define cyber2000_outl(dat,reg) (*(unsigned long *)&CyberRegs[reg] = dat)
#define cyber2000_inb(reg) (CyberRegs[reg])
#define cyber2000_inw(reg) (*(unsigned short *)&CyberRegs[reg])
#define cyber2000_inl(reg) (*(unsigned long *)&CyberRegs[reg])
static inline void cyber2000_crtcw(int reg, int val)
{
cyber2000_outb(reg, 0x3d4);
cyber2000_outb(val, 0x3d5);
}
static inline void cyber2000_grphw(int reg, int val)
{
cyber2000_outb(reg, 0x3ce);
cyber2000_outb(val, 0x3cf);
}
static inline void cyber2000_attrw(int reg, int val)
{
cyber2000_inb(0x3da);
cyber2000_outb(reg, 0x3c0);
cyber2000_inb(0x3c1);
cyber2000_outb(val, 0x3c0);
}
static inline void cyber2000_seqw(int reg, int val)
{
cyber2000_outb(reg, 0x3c4);
cyber2000_outb(val, 0x3c5);
}
struct cyber2000fb_par {
unsigned long screen_base;
unsigned long screen_base_p;
unsigned long regs_base;
unsigned long regs_base_p;
unsigned long screen_end;
unsigned long screen_size;
unsigned int palette_size;
signed int currcon;
/*
* palette
*/
struct {
u8 red;
u8 green;
u8 blue;
} palette[256];
/*
* colour mapping table
*/
union {
#ifdef FBCON_HAS_CFB16
u16 cfb16[16];
#endif
#ifdef FBCON_HAS_CFB24
u32 cfb24[16];
#endif
} c_table;
};
struct res {
int xres;
int yres;
unsigned char crtc_regs[18];
unsigned char crtc_ofl;
unsigned char clk_regs[4];
};
|