DM365 使用BT656协议驱动LCD的实现
2011-06-02 09:24
204 查看
前两天已经调好了,主要是对davinci_platform.c的修改
因为输入输出都为pal的制式,所以就在pal的函数中进行了修改。
在PAL设置的函数中,修改如下:
/*
* setting PAL mode
*/
static void davinci_enc_set_pal(struct vid_enc_mode_info *mode_info)
{
enableDigitalOutput(0); //gjx orignal : 0
if (cpu_is_davinci_dm355()) {
dispc_reg_out(VENC_CLKCTL, 0x1);
dispc_reg_out(VENC_VIDCTL, 0);
/* DM350 Configure VDAC_CONFIG */
davinci_writel(0x0E21A6B6, DM3XX_VDAC_CONFIG);
} else if (cpu_is_davinci_dm365()) {
dispc_reg_out(VENC_VMOD,0x1043);//gjx 1:YCC8; 0: ;4:PAL; 3:Composite output enable.Video encoder enable.
dispc_reg_out(VENC_CLKCTL, 0x11); //gjx enable digital lcd clock;orignal:0x1
dispc_reg_out(VENC_VIDCTL, 0x6000); //gjx vclk pin output enable & vclk polarity inverse(6000)
dispc_reg_out(VENC_YCCCTL, 0x1); //gjx bt656
/* Set OSD clock and OSD Sync Adavance registers */
dispc_reg_out(VENC_OSDCLK0, 1); //gjx
dispc_reg_out(VENC_OSDCLK1, 2); //gjx
dispc_reg_out(VENC_VDPRO, 0x20);//xjx
davinci_writel(0x081141CF, DM3XX_VDAC_CONFIG);
} else {
/* to set VENC CLK DIV to 1 - final clock is 54 MHz */
dispc_reg_merge(VENC_VIDCTL, 0, 1 << 1);
/* Set REC656 Mode */
dispc_reg_out(VENC_YCCCTL, 0x1);
}
dispc_reg_out(VENC_SYNCCTL,0);//gjx
if (cpu_is_davinci_dm355()) {
davinci_writel(mode_info->left_margin,
(DM355_OSD_REG_BASE + OSD_BASEPX));
davinci_writel(mode_info->upper_margin,
(DM355_OSD_REG_BASE + OSD_BASEPY));
} else if (cpu_is_davinci_dm365()) {
davinci_writel(mode_info->left_margin,
(DM365_OSD_REG_BASE + OSD_BASEPX));
/* PAL display shows shakiness in the OSD0 when
* this is set to upper margin. Need to bump it
* by 2
*/
davinci_writel((mode_info->upper_margin + 2),
(DM365_OSD_REG_BASE + OSD_BASEPY));
} else {
davinci_writel(mode_info->left_margin,
(DM644X_OSD_REG_BASE + OSD_BASEPX));
davinci_writel(mode_info->upper_margin,
(DM644X_OSD_REG_BASE + OSD_BASEPY));
}
dispc_reg_merge(VENC_VMOD, VENC_VMOD_VENC, VENC_VMOD_VENC);
dispc_reg_out(VENC_DACTST, 0x0);
dispc_reg_out(VENC_CMPNT, 0);
}
环境变量
setenv bootargs mem=70M console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=192.168.0.168:/home/gjx/workdir/filesys ip=192.168.0.3:192.168.0.168:192.168.0.1:255.255.255.0::eth0:off eth=00:40:01:2B:64:60 video=davincifb:vid0=OFF:vid1=OFF:osd0=720x576x16,4050K dm365_imp.oper_mode=0 davinci_capture.device_type=1 davinci_enc_mngr.ch0_mode=pal
这样重新编译内核就直接可以输出bt656的视频了,直接接支持BT656的LCD就显示成功了。
因为输入输出都为pal的制式,所以就在pal的函数中进行了修改。
在PAL设置的函数中,修改如下:
/*
* setting PAL mode
*/
static void davinci_enc_set_pal(struct vid_enc_mode_info *mode_info)
{
enableDigitalOutput(0); //gjx orignal : 0
if (cpu_is_davinci_dm355()) {
dispc_reg_out(VENC_CLKCTL, 0x1);
dispc_reg_out(VENC_VIDCTL, 0);
/* DM350 Configure VDAC_CONFIG */
davinci_writel(0x0E21A6B6, DM3XX_VDAC_CONFIG);
} else if (cpu_is_davinci_dm365()) {
dispc_reg_out(VENC_VMOD,0x1043);//gjx 1:YCC8; 0: ;4:PAL; 3:Composite output enable.Video encoder enable.
dispc_reg_out(VENC_CLKCTL, 0x11); //gjx enable digital lcd clock;orignal:0x1
dispc_reg_out(VENC_VIDCTL, 0x6000); //gjx vclk pin output enable & vclk polarity inverse(6000)
dispc_reg_out(VENC_YCCCTL, 0x1); //gjx bt656
/* Set OSD clock and OSD Sync Adavance registers */
dispc_reg_out(VENC_OSDCLK0, 1); //gjx
dispc_reg_out(VENC_OSDCLK1, 2); //gjx
dispc_reg_out(VENC_VDPRO, 0x20);//xjx
davinci_writel(0x081141CF, DM3XX_VDAC_CONFIG);
} else {
/* to set VENC CLK DIV to 1 - final clock is 54 MHz */
dispc_reg_merge(VENC_VIDCTL, 0, 1 << 1);
/* Set REC656 Mode */
dispc_reg_out(VENC_YCCCTL, 0x1);
}
dispc_reg_out(VENC_SYNCCTL,0);//gjx
if (cpu_is_davinci_dm355()) {
davinci_writel(mode_info->left_margin,
(DM355_OSD_REG_BASE + OSD_BASEPX));
davinci_writel(mode_info->upper_margin,
(DM355_OSD_REG_BASE + OSD_BASEPY));
} else if (cpu_is_davinci_dm365()) {
davinci_writel(mode_info->left_margin,
(DM365_OSD_REG_BASE + OSD_BASEPX));
/* PAL display shows shakiness in the OSD0 when
* this is set to upper margin. Need to bump it
* by 2
*/
davinci_writel((mode_info->upper_margin + 2),
(DM365_OSD_REG_BASE + OSD_BASEPY));
} else {
davinci_writel(mode_info->left_margin,
(DM644X_OSD_REG_BASE + OSD_BASEPX));
davinci_writel(mode_info->upper_margin,
(DM644X_OSD_REG_BASE + OSD_BASEPY));
}
dispc_reg_merge(VENC_VMOD, VENC_VMOD_VENC, VENC_VMOD_VENC);
dispc_reg_out(VENC_DACTST, 0x0);
dispc_reg_out(VENC_CMPNT, 0);
}
环境变量
setenv bootargs mem=70M console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=192.168.0.168:/home/gjx/workdir/filesys ip=192.168.0.3:192.168.0.168:192.168.0.1:255.255.255.0::eth0:off eth=00:40:01:2B:64:60 video=davincifb:vid0=OFF:vid1=OFF:osd0=720x576x16,4050K dm365_imp.oper_mode=0 davinci_capture.device_type=1 davinci_enc_mngr.ch0_mode=pal
这样重新编译内核就直接可以输出bt656的视频了,直接接支持BT656的LCD就显示成功了。
相关文章推荐
- DM365 使用BT656协议驱动LCD的实现
- DM365 使用BT656协议驱动LCD的实现
- dm365 linux2.6.32内核实现656传输驱动lcd
- Netty使用websocket协议实现汽车行驶轨迹追踪demo
- 使用nodeMCU平台mqtt协议实现物联网通信
- Linux LCD驱动(四)--驱动的实现
- Epics下 使用asyn、StreamDevice实现串口/网络设备的驱动开发
- 使用ComponentArt.WebUI.for.Asp.net.3.0的TreeView控件实现数据驱动的无限级分类管理[图文教程]
- 使用SuperSocket实现TLV自定义协议网络通信的Demo
- 如何使用W7100A实现网络字符LCD(二)
- 使用Ruby实现简单的事物驱动的web应用的教程
- [译] 使用流动控制器(Flow Controller )实现 MVVM 协议模型
- LED背光学习_可变模式分数电荷泵实现低功耗手机LCD背光驱动方案
- jmx使用jmxmp协议连接器的实现
- LCD-Framebuffer驱动实现
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
- 关于如何使用block实现和协议一样的功能分析
- Linux Framebuffer驱动剖析之二—驱动框架、接口实现和使用
- 嵌入式系统中LCD驱动的实现原理《转》
- LCD驱动的实现