[IMX6Q][Android4.4] LCD参数匹配过程分析

Platform: IMX6QOS: Android 4.4本例只讨论lvds接口的是lcd参数匹配的过程,mipi dsi以及其他接口部分会有一点差异。重要参数说明: fb_find_mode 用于匹配最佳的lcd时序参数,其中有三部分重要参数。1. ldb.c中的 ldb_modedbstatic struct fb_videomode ldb_
摘要由CSDN通过智能技术生成

Platform: IMX6Q

OS: Android 4.4


本文只讨论lvds接口的是lcd参数匹配的过程,mipi dsi以及其他接口部分会有一点差异。


核心函数fb_find_mode(),在分析之前先了解下几个参数。


重要参数说明:


1. ldb.c中的 ldb_modedb

static struct fb_videomode ldb_modedb[] = {
    {
     "LDB-WXGA", 60, 1280, 800, 14065,
     40, 40,
     10, 3,
     80, 10,
     0,
     FB_VMODE_NONINTERLACED,
     FB_MODE_IS_DETAILED,},
    {
     "LDB-XGA", 60, 1024, 768, 15385,
     220, 40,
     21, 7,
     60, 10,
     0,
     FB_VMODE_NONINTERLACED,
     FB_MODE_IS_DETAILED,},
    {
     "LDB-1080P60", 60, 1920, 1080, 7692,
     100, 40,
     30, 3,
     10, 2,
     0,
     FB_VMODE_NONINTERLACED,
     FB_MODE_IS_DETAILED,},
     {
     "LDB-WSVGA", //Name
     60, //refresh
     1024, //xres
     600, //yres
     19531,//pixclock
     220, 40,//left/right margin
     21, 7,//upper/lower margin
     60, 7,//hsync_len,vsync_len
     0,//sync
     FB_VMODE_NONINTERLACED,//vmode
     FB_MODE_IS_DETAILED,},
};
static int ldb_modedb_sz = ARRAY_SIZE(ldb_modedb);

系统lvds接口支持的lcd时序参数都在此了。

2. board-mx6-xxx.c中的ipuv3_fb_platform_data结构

本例是:

static struct ipuv3_fb_platform_data tek_fb_data[] = {
    { /*fb0*/
    .disp_dev = "ldb",
    .interface_pix_fmt = IPU_PIX_FMT_RGB24,
    .mode_str = "LDB-WSVGA",
    .default_bpp = 32,
    .int_clk = false,
    .late_init = false,
    }, {
    .disp_dev = "hdmi",
    .interface_pix_fmt = IPU_PIX_FMT_RGB24,
    .mode_str = "1920x1080M@60",
    .default_bpp = 32,
    .int_clk = false,
    .late_init = false,
    },
    {
    .disp_dev = "lcd",
    .interface_pix_fmt = IPU_PIX_FMT_RGB565,
    .mode_str = "CLAA-WVGA",
    .default_bpp = 16,
    .int_clk = false,
    .late_init = false,
    }, {
    .disp_dev = "ldb",
    .interface_pix_fmt = IPU_PIX_FMT_RGB666,
    .mode_str = "LDB-VGA",
    .default_bpp = 16,
    .int_clk = false,
    .late_init = false,
    },
};

fb_find_mode()用到其mode_str里的值去ldb_modedb查找有没有对应lcd时序参数。

此mode_str其实就是后面会提到的mode_options, 格式如下:

  <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m] or
    <name>[-<bpp>][@<refresh>]

所以有两种类型:

1. 字符规则形, 如 “LDB-WXVGA”

2. 数字规则形,如"1920*1080"

具体各个参数意义可参照fb_find_mode()函数注释。


3.  kernel cmdline里设置的

本例是:

video=mxcfb0:dev=ldb,LDB-WSVGA,if=RGB24,bpp=32

它会覆盖 tek_fb_data中的值,覆盖规则根据mxcfb后面的值。

比如mxcfb0覆盖tek_fb_data[0], 以此类推。

了解了参数意义之后下面就方便理解了.


系统有如下调用:


                
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值