使用可装入内核模块修改framebuffer(/ dev / graphics / fb0)参数

时间:2013-12-24 22:58:04

标签: c linux linux-kernel arm embedded-linux

问题:我必须配置Android平台使用的各种LCD显示器。几乎在所有情况下,没有可用于LCD显示器的电气规格。但通过经验和逆向工程,可以很好地猜测参数。我正在尝试使用可加载内核模块来微调显示参数(欢迎任何其他建议)。请在下面找到相关信息。

HW: Atmel SAMA5D31-EK(ARM 5处理器)

SW: Andriod Linux(目标),Ubuntu(主机系统),Sourcery CodeBench(交叉编译器) 来自board-dt.c文件的代码片段

static struct fb_videomode at91_tft_vga_modes[] = {
..... 
.xres =435;
.yres =235;
....
}
static struct fb_monspecs at91fb_default_monspecs = {
.........
.modedb = at91_tft_vga_modes,
......
}
static struct atmel_lcd_fb_info __initdata ek_lcdc_data = {
..........
.default_monspecs = & at91fb_default_monspecs;
.........
}

我添加了此代码,以便可加载内核模块可以访问lcdc_data结构

extern void set_fb_video(struct fb_videomode *mg_set_tft_vga_modes)
{
   ek_lcdc_data.default_monspecs->modedb->xres = mg_set_tft_vga_modes->xres;
}
EXPORT_SYMBOL(set_fb_video);

当我执行可加载内核模块时,我没有注意到显示内容有任何变化。我怀疑虽然我正在更改变量(内存)但寄存器没有受到影响。

问题:我错过了什么?我读过有关调用platform_driver_register()和platform_driver_unregister()的内容。

提前感谢您的帮助。

0 个答案:

没有答案