LCD
显示相关的内核驱动文件为
drivers/video/mxc/mxc_lcdif.c
,
添加对新的 LCD 液晶屏支持的方法是在内核 drivers/video/mxc/mxc_lcdif.c 文件中的结
构体数组 struct fb_videomode lcdif_modedb[] 中添加需要支持的 LCD 液晶屏参数。
u-boot 中设置 bootargs 中的 video 参数的设备名与此结构体的 name 成员同名,来选择使用
所添加的 LCD 显示参数。
{
/* 800x480 @ 57 Hz , pixel clk @ 27MHz */
"CLAA-WVGA" , 57 , 800 , 480 , 37037 , 40 , 60 , 10 , 10 , 20 , 10 ,
FB_SYNC_CLK_LAT_FALL ,
FB_VMODE_NONINTERLACED ,
0 , } ,
{
/* 800x480 @ 60 Hz , pixel clk @ 32MHz */
"SEIKO-WVGA" , 60 , 800 , 480 , 29850 , 89 , 164 , 23 , 10 , 10 , 10 ,
FB_SYNC_CLK_LAT_FALL ,
FB_VMODE_NONINTERLACED ,
0 , } ,
};
const char * name ; // 显示设备名,内核通过 u-boot 参数中 video 字段与此 name 作为匹配标识
u32 refresh; // 刷新率
u32 xres; // 行像素个数
u32 yres; // 列像素个数
u32 pixclock; // 每个像素时钟周期的长度,单位是皮秒
u32 left_margin; // 左边缘像素个数
u32 right_margin; // 右边缘像素个数
u32 upper_margin; // 上边缘像素个数
u32 lower_margin; // 下边缘像素个数
u32 hsync_len; // 行同步脉宽
u32 vsync_len; // 场同步脉宽
u32 sync; // 同步信号极性
u32 vmode; // 默认设置为 FB_VMODE_NONINTERLACED
u32 flag; // 默认设置为 FB_MODE_IS_DETAILED
};
添加对新的 LCD 液晶屏支持的方法是在内核 drivers/video/mxc/mxc_lcdif.c 文件中的结
构体数组 struct fb_videomode lcdif_modedb[] 中添加需要支持的 LCD 液晶屏参数。
u-boot 中设置 bootargs 中的 video 参数的设备名与此结构体的 name 成员同名,来选择使用
所添加的 LCD 显示参数。
LCD 显示参数结构体数组
{
/* 800x480 @ 57 Hz , pixel clk @ 27MHz */
"CLAA-WVGA" , 57 , 800 , 480 , 37037 , 40 , 60 , 10 , 10 , 20 , 10 ,
FB_SYNC_CLK_LAT_FALL ,
FB_VMODE_NONINTERLACED ,
0 , } ,
{
/* 800x480 @ 60 Hz , pixel clk @ 32MHz */
"SEIKO-WVGA" , 60 , 800 , 480 , 29850 , 89 , 164 , 23 , 10 , 10 , 10 ,
FB_SYNC_CLK_LAT_FALL ,
FB_VMODE_NONINTERLACED ,
0 , } ,
};
fb_videomode 结构体成员说明如下
fb_videomode 结构体
const char * name ; // 显示设备名,内核通过 u-boot 参数中 video 字段与此 name 作为匹配标识
u32 refresh; // 刷新率
u32 xres; // 行像素个数
u32 yres; // 列像素个数
u32 pixclock; // 每个像素时钟周期的长度,单位是皮秒
u32 left_margin; // 左边缘像素个数
u32 right_margin; // 右边缘像素个数
u32 upper_margin; // 上边缘像素个数
u32 lower_margin; // 下边缘像素个数
u32 hsync_len; // 行同步脉宽
u32 vsync_len; // 场同步脉宽
u32 sync; // 同步信号极性
u32 vmode; // 默认设置为 FB_VMODE_NONINTERLACED
u32 flag; // 默认设置为 FB_MODE_IS_DETAILED
};