RK3288 mipi屏参数配置文件
RK3288 Android 5.1系统 Linux 3.10
mipi屏参数配置文件所在的路径:kernel/arch/arm/boot/dts/xxx_mipi.dtsi
屏参数配置文件包括四个部分:mipi host配置、屏电源控制配置、屏初始化序列和屏参。
mipi屏参数文件解析:
mipi host配置、屏电源控制配置、屏初始化序列是在 kernel/drivers/video/rockchip/screen/lcd_mipi.c 中解析。
屏参是在 kernel/drivers/video/of_display_timing.c 中解析。
1、mipi host 配置
// mipi host 配置结构
disp_mipi_init: mipi_dsi_init{
compatible = "rockchip,mipi_dsi_init";
rockchip,screen_init = <>;
rockchip,dsi_lane = <>;
rockchip,dsi_hs_clk = <>;
rockchip,mipi_dsi_num = <>;
};
screen_init:表示屏是否需要初始化,如果需要则置为1。
dsi_lane:mipi 数据传输需要几条数据 lane,这个一般根据原理图和 mipi 屏的规格书来配置。这个指的是每个 mipi 的数据 lane 数。例如是双 mipi,每个 mipi 为 4 lane,那么此处仍然设置为4。
dsi_hs_clk:屏 ddr clk,表示一条数据 lane 的传输速率,单位为 Mbits/s。
有个大概的计算公式:100 + H_Total * V_total * fps * 3 * 8 / lanes
100 为实际的结果要比理论值大 100M 左右。
H_total,V_total 包括active,bp,fp 和 sync_len 的和。
fps 为帧率,刚调试一款屏时,fps 为 50 多帧就好,然后慢慢抬高。
3 为一个像素点为 rgb 3 个字节,8 为 8 bits。
lanes 为(dsi_lane * mipi_dsi_num)。
上面计算得到的值只是大概值并非精确的值,但是对于一般的屏都适用,对于部分屏需要微调该值。
mipi_dsi_num:单 mipi 还是双 mipi,也是根据原理图和屏幕规格书来配置的。如果是双 mipi 则置为 2,。
2、屏电源控制配置
// 屏电源控制配置
disp_mipi_power_ctr: mipi_power_ctr {
compatible = "rockchip,mipi_power_ctr"; mipi_lcd_en:mipi_lcd_en {
compatible = "rockchip,lcd_en";
rockchip,gpios = <&gpio7 GPIO_A3 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
}; mipi_lcd_cs:mipi_lcd_cs {
compatible = "rockchip,lcd_cs";
rockchip,gpios = <&gpio7 GPIO_A4 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
}; mipi_lcd_rst:mipi_lcd_rst{
compatible = "rockchip,lcd_rst";
rockchip,gpios = <&gpio3 GPIO_D6 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
};
};
电源配置的 gpio 需要根据原理图来配置,也可能存在不需要三路电源控制的情况。
例如:rockchip,gpios = <&gpio7 GPIO_A3 GPIO_ACTIVE_HIGH>; LCD_EN 的引脚为 GPIO7_A4 引脚,高电平有效。
delay 部分是操作完后的延迟时间,这个关系到 mipi 的上电时序。在需要的时候要对延时时间进行调整。
kernel 中对应的操作函数在 kernel/driver/video/rockchip/screen/lcd_mipi.c 文件的 rk_mipi_screen_pwr_enable() 和 rk_mipi_screen_pwr_disable()。
u-boot 中对应的操作函数在 u-boot/driver/video/screen/lcd_mipi.c 文件的 rk_mipi_screen_pwr_enable() 和 rk_mipi_screen_pwr_disable()。
// dtsi文件中的lcdc配置如下
&lcdc0 {
status = "okay";
rockchip,mirror = <NO_MIRROR>;
rockchip,cabc_mode = <>;
power_ctr: power_ctr {
rockchip,debug = <>; lcd_en:lcd_en {
rockchip,power_type = <GPIO>;
gpios = <&gpio7 GPIO_A3 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
}; lcd_cs:lcd_cs {
rockchip,power_type = <GPIO>;
gpios = <&gpio7 GPIO_A4 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
}; lcd_rst:lcd_rst {
rockchip,power_type = <GPIO>;
gpios = <&gpio3 GPIO_D6 GPIO_ACTIVE_HIGH>;
rockchip,delay = <>;
};
};
};
kernel 中对应的操作函数在 kernel/driver/video/rockchip/rk_fb.c 文件的 rk_disp_pwr_enable() 和 rk_disp_pwr_disable()。
u-boot 中对应的操作函数在 u-boot/driver/video/rockchip_fb.c 文件的 rk_fb_pwr_enable() 和 rk_fb_pwr_disable()。
3、屏初始化序列
有的屏需要初始化,有的不需要,如果规格书上注明需要初始化,则需要屏厂提供初始化序列。
屏初始化命令在 kernel/driver/video/rockchip/screen/lcd_mipi.c 文件的 rk_mipi_screen_cmd_init() 中完成。
// 屏初始化序列结构如下
disp_mipi_init_cmds: screen-on-cmds {
rockchip,cmd_debug = <>;
compatible = "rockchip,screen-on-cmds"; rockchip,on-cmds1 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <>;
rockchip,cmd = <0x15 0x25 0x55>;
rockchip,cmd_delay = <>;
}; rockchip,on-cmds2 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <HSDT>;
rockchip,dsi_id = <>;
rockchip,cmd = <0x15 0x15 0x20>;
rockchip,cmd_delay = <>;
};
... ... ... ...
};
cmd_debug:是否打开 cmd 调好,1 表示打开调试,0 表示关闭调试。
rockchip,on-cmds1结构:这是第一条初始化命令结构,一般都需要多条初始化命令,就需要多个命令结构,实际上编号可以不按顺序,只要不重复就行。
cmd_type:命令是在low power(LPDT)还是high speed(HSDT)下发送。
dsi_id:命令通过哪个 mipi 发送。0 表示在 mipi0 发送,1 表示在 mipi1 发送,2 表示双 mipi 同时发送。
因为很少出现单独使用 mipi1 的情况,所以对于单 mipi,这个值默认是 0,对于双 mipi,这个值是 2。
cmd:初始化命令,格式:命令类型(如 0x05/0x15/0x39)+指令+参数。
0x05:只有指令,没有参数
0x15:只有一个参数
0x39:有多个参数,如果参数太长,程序可能会跑飞,需要增大源码中的指令数组长度。
解决指令过长问题:https://www.cnblogs.com/lialong1st/p/11218433.html
cmd_delay:命令发完后的延时,延时时间根据屏厂给的初始化序列来配置。
另外有一些特殊的标准命令(0x22,0x32),某些特殊屏有可能需要,这就需要修改控制器来发送,得联系RK官方修改。
如果屏幕不需要初始化,也就是mipi host 配置中 rockchip,screen_init = <0>; 的情况,不需要初始化并不是表示没有发送命令。
在不需要初始化的情况下,等 mipi host,phy 供电初始化完和屏的供电结束以后会按照 mipi 协议发送 exit_sleep_mode 和 set_display_on 命令。
dcs_exit_sleep_mode 表示退出 sleep 模式,dcs_set_display_on 表示通知显示屏开始显示图像数据,必须额外添加,而且延时特别重要。
4、屏幕参数
屏参包括屏的格式、dclk、时序等。
disp_timings: display-timings {
native-mode = <&timing0>;
compatible = "rockchip,display-timings";
timing0: timing0 {
screen-type = <SCREEN_MIPI>;
lvds-format = <LVDS_8BIT_2>;
out-face = <OUT_P666>;
clock-frequency = <>;
hactive = <>;
vactive = <>;
hsync-len = <>;
hback-porch = <>;
hfront-porch = <>;
vsync-len = <>;
vback-porch = <>;
vfront-porch = <>;
hsync-active = <>;
vsync-active = <>;
de-active = <>;
pixelclk-active = <>;
swap-rb = <>;
swap-rg = <>;
swap-gb = <>;
};
};
screen-type:屏幕类型,mipi 屏有两种:单 mipi(SCREEN_MIPI)、双 mipi(SCREEN_DUAL_MIPI)。
lvds-format:lvds 数据格式。对于 mipi 屏是无效参数,不用配置。
out-face:屏幕接线格式。
上述三个参数的取值在 kernel/include/dt-bindings/rkfb/rk_fb.h中定义。
clock-frequency:dclk 频率,单位为 Hz,一般屏的规格书中有,也可以通过公式计算:H*V(包括同步信号)*fps
Hactive:水平有效像素
Vactive:垂直有效像素
hback-porch/hfront-porch/hsync-len:水平同步信号
vback-porch/vfront-porch/vsync-len:水平同步信号
hsync-active、vsync-active、de-active、pixelclk-active:分别为 hync、vsync、DEN、dclk 的极性控制。置 1 将对极性进行翻转。
swap-rb、swap-rg、swap-gb:置 1 将对对应的颜色进行翻转。
5、板级文件配置
dtsi 文件配置好后,需要在板级文件中包含这个 dtsi 文件。
#include "xxx_mipi.dtsi"
在 dtsi 中,mipi host 默认是关闭的,需要在 dtsi 或者 dts 文件中开启。
&dsihost0 {
status = "okay";
};
&dsihost1 {
status = "okay";
};
单 mipi 只需开启对应的一个即可,双 mipi 两个都需要开启。
RK3288 mipi屏参数配置文件的更多相关文章
- RK3288 mipi屏调试流程
CPU:RK3288 系统:Android 5.1 1.修改kernel/arch/arm/configs/rockchip_defconfig,打开mipi屏开关 # CONFIG_LCD_GENE ...
- RK3288 st7703 mipi屏指令过长,程序跑飞
本文为博主原创文章,转载请注明出处:https://www.cnblogs.com/lialong1st/p/11218433.html CPU:RK3288 系统:Android 5.1 调试 mi ...
- mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
本文转载自:http://blog.csdn.net/fulinus/article/details/45071721 平台:瑞芯的rk3288 u-boot版本:u-boot-2014.10 ker ...
- android MIPI屏 导航栏丢失
/**************************************************************************** * android MIPI屏 导航栏丢失 ...
- ARM40-A5应用——fbset与液晶屏参数的适配【转】
转自:https://blog.csdn.net/vonchn/article/details/80784579 ARM40-A5应用——fbset与液晶屏参数的适配 2018.6.18 版权声明:本 ...
- mysql参数配置文件
(1)参数配置文件中的内容以键值对形式存在. (2)如何查看键值对?show variables like '%name%';或者查看information_schema库下的global_varia ...
- caffe-windows之网络描述文件和参数配置文件注释(mnist例程)
caffe-windows之网络描述文件和参数配置文件注释(mnist例程) lenet_solver.prototxt:在训练和测试时涉及到一些参数配置,训练超参数文件 <-----lenet ...
- matplotlib命令与格式:参数配置文件与参数配置
转自 https://my.oschina.net/swuly302/blog/94805 自定义matplotlib Created Saturday 08 December 2012 5.1 ma ...
- LCD屏参数及应用举例
1. LCD参数及原理 R G B 信号 PCLK(像素时钟),LCLK(HSYNC,线时钟,水平同步时钟),FCLK(VSYNC,帧时钟,垂直同步时钟) 7寸屏一般由两种工作模式DE和时钟模式, ...
随机推荐
- 弹性布局(Flex布局)整理
一. 弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...
- Gym - 101617F :Move Away (圆的交点)
pro:给定N个圆,求离原点最远的点,满足它在N个圆里.输出这个距离.N<50; sol:关键点一定是圆与圆的交点. 圆与 圆心到原点的直线 的交点. 然后去验证这些关键点是否在N个圆内. 实际 ...
- CCF-权限查询-201612-3
这道题,开始只有10分.....原因是将false 写成了 flase 我要吐血而亡....关键是还debug了半天,以为是逻辑错了 不过亮点是代码很简洁,网上140+的代码看着真复杂 核心: 做题之 ...
- alpha冲刺(2/10)
前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: 分配任务,还是不熟练,对后台不熟悉,不知 ...
- centos下配置maven编译环境
版本centos6jdk1.7findbugs-3.0.1maven-3.0.5protobuf-2.6.0安装yum install lzo-devel zlib-devel gcc gcc-c++ ...
- 使用miniconda创建python虚拟环境
安装python指定环境 conda create -n oldboy python=3.6.5 安装环境的同时安装相应的包 conda create -n oldboy python=3.6.5 p ...
- Vue 移动端常用tap事件封装
基于Vue的移动端项目,有些时间原生并没用提供,需要我们自己手动封装,可以封装一些自定义指令来供全局使用. 本文封装了 tap, swipe, swipeleft, swiperight, swipe ...
- PPTV(pplive)_forap_1084_9993.exe 木马清除经历
## 流氓行经 这几天电脑上突然自动安装pptv,金山毒霸清除了也不管用, 卸载了pptv过一会又自动安装上了,太嚣张了哈. ## 监控进程跟目录变化 接下来使用 ProcessMonitor 监控进 ...
- docker基本命令使用
学会使用docker命令帮助 docker help 子命令 查看docker镜像 docker images 搜索镜像 docker search 镜像名 下载镜像 docker pull 镜像名 ...
- asp.net:mv4 FileResult在IE8中下载不显示文件名和扩展名而显示Action方法名了!
IE8下,用户点击下载文件,会发现文件类型失丢的问题,解决方案如下: //IE8下载时,只显示action的名字,没有文件名和后缀 @仰止网Simba //return File(bufferbyte ...