分类: LINUX
2008-05-13 15:16:03
Framebuffer驱动程序模型
下图会向你展示目前的framebuffer设备驱动的结构,最常用的是非标准驱动。很明显他所处的层次最高,程序编写是最容易的。理解了这个图的,你已
经很轻松的去完成一个fb驱动,比如给sa1100,s2410,s2440系列的ARM的LCD控制器写驱动。
|
|
|
|
|
本文介绍的设备是位于/video目录下面的anakinfb.c驱动程序。虽然我不清楚那个设备的特性,但是从对程序的分析中我们仍然知道如何编写一个frame buffer设备驱动。
本文是个标准的fb驱动。共221行,包含函数如下:
Stifb驱动模型
linux/drivers/video/stifb.c
- Generic frame buffer driver for HP * workstations with STI (standard
text interface) video firmware.
这个驱动程序和前面的anakin设备完全不同,因为他不是采用标准的格式,而是根据 based on skeletonfb, which
wasCreated 28 Dec 1997 by Geert Uytterhoeven也就是skeletonfb.c提供的框架完成的。
共230行,包含函数如下:
static int sti_encode_fix(struct fb_fix_screeninfo *fix, const void *par, struct fb_info_gen *info) 60行
static int sti_decode_var(const struct fb_var_screeninfo *var,void *par, struct fb_info_gen *info) 71行
static int sti_encode_var(struct fb_var_screeninfo *var, const void *par, struct fb_info_gen *info) 78行
static void sti_get_par(void *par, struct fb_info_gen *info) 94行
static void sti_set_par(const void *par, struct fb_info_gen *info) 99行
static int sti_getcolreg(unsigned regno, unsigned *red, unsigned *green, unsigned *blue, unsigned *transp, struct fb_info *info) 104行
static int sti_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info) 111行
static void sti_set_disp(const void *par, struct display *disp, struct fb_info_gen *info) 118行
static void sti_detect(void) 127行
static int sti_blank(int blank_mode, const struct fb_info *info) 132行
int __init stifb_init(void) 161行
void stifb_cleanup(struct fb_info *info) 201行
int __init stifb_setup(char *options) 208行