imx6dl需要支持lcd接口的屏,imx6dl的datasheet并没有明确的说明lcd相关的配置,只在Display Content Integrity Checker (DCIC)一章中介绍。本文记录imx6支持lcd的方法。

参考链接

http://developer.toradex.com/knowledge-base/display-output-resolution-and-timings-linux

https://community.nxp.com/thread/307613

http://cache.freescale.com/files/32bit/doc/user_guide/MX53UG.pdf

https://boundarydevices.com/configuring-i-mx6-machines-different-screens-nitrogen6x-sabre-lite/

uboot

更改bootargs,添加lcd支持:video=mxcfb0:dev=lcd,SEIKO-WVGA,if=RGB24,bpp=32

include/configs/mx6dl_sabresd_android.h

#define CONFIG_EXTRA_ENV_SETTINGS                   \
"netdev=eth0\0" \
"ethprime=FEC0\0" \
"uboot=u-boot.bin\0" \
"kernel=uImage\0" \
"nfsroot=/opt/eldk/arm\0" \
"bootargs_base=setenv bootargs console=ttymxc0,115200 video=mxcfb0:dev=lcd,SEIKO-WVGA,if=RGB24,bpp=32\0"\
"bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs "\
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0"\
"bootcmd_net=run bootargs_base bootargs_nfs; " \
"tftpboot ${loadaddr} ${kernel}; bootm\0" \
"bootargs_mmc=setenv bootargs ${bootargs} ip=none " \
"root=/dev/mmcblk0p1 rootwait\0" \
"bootcmd_mmc=run bootargs_base bootargs_mmc; " \
"mmc dev 2; " \
"mmc read ${loadaddr} 0x800 0x3000; bootm\0" \
"bootcmd=run bootcmd_mmc\0 " \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"lvds_num=1\0"

kernel

需要注册设备和驱动

device

配置引脚复用

arch/arm/mach-mx6/board-mx6dl_sabresd.h

static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {
......
MX6DL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,
MX6DL_PAD_DI0_PIN15__IPU1_DI0_PIN15, /* DE */
MX6DL_PAD_DI0_PIN2__IPU1_DI0_PIN2, /* HSync */
MX6DL_PAD_DI0_PIN3__IPU1_DI0_PIN3, /* VSync */
MX6DL_PAD_DI0_PIN4__IPU1_DI0_PIN4, /* Contrast */
MX6DL_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0,
MX6DL_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1,
MX6DL_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2,
MX6DL_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3,
MX6DL_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4,
MX6DL_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5,
MX6DL_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6,
MX6DL_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7,
MX6DL_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8,
MX6DL_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9,
MX6DL_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10,
MX6DL_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11,
MX6DL_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12,
MX6DL_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13,
MX6DL_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14,
MX6DL_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15,
MX6DL_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16,
MX6DL_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17,
MX6DL_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18,
MX6DL_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19,
MX6DL_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20,
MX6DL_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21,
MX6DL_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22,
MX6DL_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23,
......
};

设备初始化

arch/arm/mach-mx6/board-mx6q_sabresd.c

// 与bootargs中"dev=lcd,SEIKO-WVGA" 对应
static struct ipuv3_fb_platform_data sabresd_fb_data[] = {
// Tony 2016-11-22
{
.disp_dev = "lcd",
.interface_pix_fmt = IPU_PIX_FMT_RGB24,
.mode_str = "SEIKO-WVGA",
.default_bpp = 32,
.int_clk = false,
},
{ /*fb0*/
.disp_dev = "ldb",
.interface_pix_fmt = IPU_PIX_FMT_RGB24,
.mode_str = "LDB-XGA",
//.default_bpp = 16,
.default_bpp = 24,
.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,
}, {
}; static struct fsl_mxc_lcd_platform_data lcdif_data = {
.ipu_id = 0, // ipu 0
.disp_id = 0, // 第0个接口
.default_ifmt = IPU_PIX_FMT_RGB24,
}; // lcd初始化
static void __init mx6_sabresd_board_init(void)
{
......
imx6q_add_ipuv3(0, &ipu_data[0]);
if (cpu_is_mx6q()) {
imx6q_add_ipuv3(1, &ipu_data[1]);
for (i = 0; i < 4 && i < ARRAY_SIZE(sabresd_fb_data); i++)
imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]);
} else
for (i = 0; i < 2 && i < ARRAY_SIZE(sabresd_fb_data); i++) //不知道这里为什么要i<2,难道因为imx6的ipu只有2个接口?
imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]); imx6q_add_lcdif(&lcdif_data);
......
}

driver

添加lcd的驱动支持

make menuconfig

选择 SEIKO WVGA Panel

Prompt: SEIKO WVGA Panel
Defined at drivers/video/mxc/Kconfig:55
Depends on: HAS_IOMEM [=y] && ARCH_MXC [=y] && FB_MXC_SYNC_PANEL [=y]
Location:
-> Device Drivers
-> Graphics support
-> MXC Framebuffer support (FB_MXC [=y])
-> Synchronous Panel Framebuffer (FB_MXC_SYNC_PANEL [=y])

更改LCD参数。

drivers/video/mxc/mxc_lcdif.c

static struct fb_videomode lcdif_modedb[] = {
...
{
/* 640x480 @ 60 Hz , pixel clk @ 25MHz */
"SEIKO-WVGA", 60, 640, 480, 40000, 89, 164, 23, 10, 10, 10,
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},
...
};

Tony Liu

2016-11-28, Shenzhen

imx6 RGB LCD的更多相关文章

  1. I.MX6 Parallel RGB LCD Datasheet描述

    /******************************************************************** * I.MX6 Parallel RGB LCD Datas ...

  2. imx6 uboot lcd

    本文记录imx6 uboot中关于lcd初始化的过程. uboot中相关的文件: cpu/arm_cortexa8/start.S lib_arm/board.c board/freescale/mx ...

  3. LCD接口和RGB介绍【转】

    转自:https://www.cnblogs.com/hzl6255/p/5470583.html 阅读目录 1. 介绍 2. 接口类型 3. RGB 4. YUV 5. FOURCC 回到顶部 1. ...

  4. LCD接口和RGB介绍

    1. 介绍 Video的显示离不开LCD, 所以这里简单介绍一下LCD的接口和RGB LCD的全称是Liquid Crystal Display 的简称, 即液晶显示器LCD目前已经取代CRT, 成为 ...

  5. LCD RGB 控制技术讲解 — 时钟篇(上)

    时序图 下面是LCD RGB 控制的典型时序图  天啊,一下就上这玩意,怎么看??? 其实要解释上面的时序图,我们还需要了解一些LCD的显示过程.所以现在只是有个印象,稍后我们详细讲解. LCD显示流 ...

  6. LCD RGB 控制技术讲解 — 时钟篇(上)【转】

    1. 时序图 下面是LCD RGB 控制的典型时序图 天啊,一下就上这玩意,怎么看??? 其实要解释上面的时序图,我们还需要了解一些LCD的显示过程.所以现在只是有个印象,稍后我们详细讲解. 2. L ...

  7. 【团购活动】接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!

    接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!http://bbs.eeworld.com.cn/forum.php?mod=viewthread& ...

  8. 【原创】在RT1050 LittleVgl GUI中嵌入中文输入法框架

    时隔一年多终于又冒泡了,哎,随着工作越来越忙,自己踏实坐下来写点东西真是越来越费劲,这篇文章也是准备了好久好久才打算发表出来(不瞒大家,东西做完好久了,文章憋了一年了,当真"高产" ...

  9. LCD LED OLED区别 以及RGB、YUV和HSV颜色空间模型

    led 液晶本身不发光,而是有背光作为灯源,白色是由红绿蓝三色组成,黑色是,液晶挡住了led灯光穿过显示器. lcd比led更薄. oled:显示黑色时,灯是灭的,所以显示黑色更深,效果更好. 这就不 ...

随机推荐

  1. WebRTC手记之本地音频采集

    转载请注明出处:http://www.cnblogs.com/fangkm/p/4374668.html 上一篇博文介绍了本地视频采集,这一篇就介绍下音频采集流程,也是先介绍WebRTC原生的音频采集 ...

  2. BZOJ4260: Codechef REBXOR

    Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN.     Output 输出一行包含给定表达式可能的最大值.   S ...

  3. Windows环境下Redis

    Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...

  4. Asp.Net:Repeater 详情 备用

    页面 repeator就想for循环一样,没有编辑模板,有删除delete和详情detail模板 <%@ Page Language="C#" AutoEventWireup ...

  5. Using Vertex Texture Displacement for Realistic Water Rendering

    http://blog.csdn.net/soilwork/article/details/709869 Using Vertex Texture Displacement for Realistic ...

  6. jQuery 判断表单中多个 input text 中至少有一个不为空

    html: 名称1:<input class="seasoning_name" type="text" name="seasoning_name ...

  7. 浅析php学习的路线图

    一直都想走上码农的道路,奈何当年没有学好.一直与码农无缘.现在又想做一些码农就下了一套某个培训机构的php视频来看.希望能走上码农的道路     1.php初级教程 初级教程主要的页面设置的,就是 h ...

  8. markdown 书写表格

    Tables Are Cool col 3 is right-aligned $1600 col 2 is centered $12 zebra stripes are neat $1 Refs ma ...

  9. (转)maven 配置在eclipse中

    maven3 下载配置 下载地址 http://maven.apache.org/download.cgi 在线文档 http://maven.apache.org/ref/3.0.5/ 安装 一.安 ...

  10. mysqli_multi_query($link, $wsql)

    if (mysqli_multi_query($link, $wsql)) { do { if ($result = mysqli_store_result($link)) { mysqli_free ...