rk3128 lcd 驱动调试记录

本文档详细记录了基于rk3128平台的LCD驱动调试过程,包括代码架构、开机流程图、移植步骤及常见问题。重点讨论了framebuffer架构、dts配置、屏参文件的编写,以及在调试中遇到的屏闪和休眠唤醒问题的解决方法。
摘要由CSDN通过智能技术生成

最近刚调试了基于rk3128平台的lcd驱动,顺便记录总结一下,有不足之处,望各位不吝赐教!


关于framebuffer(帧缓冲设备)的架构这里就不多罗嗦了,不会的可以网上百度,这个很多的


1.代码架构

       drivers/video/rockchip/transmitter/
                |_ rk32_mipi_dsi.c /* MIPI 驱动主体文件 */
                |_ rk32_mipi_dsi.h /* 寄存器以及结构体的定义 */
                |_ mipi_dsi.c /* 封装的函数指针接口函数, 供 lcd_mipi.c 调用, 函数的具体实现

       在 rk32_mipi_dsi.c 中 */
                |_ mipi_dsi.h /* mipi 协议相关的宏定义以及函数指针结构体定义 */

       drivers/video/rockchip/screen/
                |_ lcd_mipi.c /* 屏参 dtsi 文件的解析 */

由于rk3128平台使用了3.10以后的内核,所以采用了dts的形式来管理驱动,刚开始的时候会觉得顺手,用多了还是相当方便的


2.代码架构图

        无论是正常的开机流程以及休眠唤醒的流程,显示相关的模块都是要和 fb 以及
vop(lcdc)交互的。rk32_dsi_enable()和 rk32_dsi_disable()函数作为 MIPI 和 vop 之
间 的 交 互 的 总 入 口 函 数 。 另 外 还 有 一 对 rk32_mipi_power_up_DDR() 和
rk32_mipi_power_down_DDR()函数是单独供 ddr 变频的时候使用,
正常的开机以及休
眠唤醒流程不走这两个函数。开机流程图如下图所示:


dsi_init() : 该函数主要实现 mipi host 和 phy 的上电以及初始化工作。

rk_mipi_screen_standby() : 屏的供电以及屏的初始化工作(屏初始化命令的发送)

dsi_enable_video_mode() : command 模式和 video 模式的切换,发送命令一般是在 command 模式下,正常数据传输是在 video 模下。

dsi_is_enable() : mipi host 的关闭与开启。


3.移植过程

      a.配置menuconfig

            


            


    b.添加关于lcd的dtsi文件(屏参文件)

         在kernel/arch/arm/boot/dts中随便一个其他mipi屏的dtsi文件参考其写法(3.10内核的新变化,也可以不用


           屏参文件包含四个部分:mipi host 配置、屏电源控制配置、屏初始化序列和屏参。

           b.1   mipi host的配置

                    disp_mipi_init: mipi_dsi_init{
                        compatible = "rockchip,mipi_dsi_init";
                        rockchip,screen_init    = <1>;
                

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值