Firefly开源社区

标题: 调试rk3399的LVDS屏! [打印本页]

作者: 风在摇曳风铃    时间: 2019-8-7 16:21
标题: 调试rk3399的LVDS屏!
本帖最后由 风在摇曳风铃 于 2019-8-13 14:02 编辑

屏尺寸:15inch
分辨率:1024x768
接口:单八LVDS
由于rk3399没有原生LVDS接口,需要用到toshiba_tc358775芯片mipi2lvds,因此配置屏参需要在两部分配置,一部分是配置mipi的初始化指令,一部分是配置lvds的参数。
一.由于要用到mipi接口,所以先要在menuconfig里打开mipi。
(1)-> Device Drivers
  |       -> Graphics support
  |         -> Rockchip Misc Video drive
  |           -> LCD Panel Select (rk mipi dsi lcd)

(2)-> Device Drivers  
  |       -> Graphics support
  |         -> Rockchip Misc Video driver
  |           -> RockChip display transmitter support

                     RK32 RGB to DisplayPort transmitter support
                     Rockchip MIPI DSI support
配置完上面的驱动保存后,打开.config文件,如果文件里面有如下3条数据,说明配置成功。
CONFIG_LCD_MIPI=y
CONFIG_MIPI_DSI=y
CONFIG_RK32_MIPI_DSI=y


还有个驱动需要勾选上
      -> Device Drivers  
  |       -> Graphics support
  |         -> Display Panels  ---><*> support for simple panel

不管是edp,还是mipi,在rk3399里面都要用到这个panel-simple驱动

二.设备树配置
1.由于要用到MIPI_DSI_MODE_VIDEO等宏定义,所以设备树里先添加头文件
#include <dt-bindings/display/drm_mipi_dsi.h>

2.绑定vop
&dsi_in_vopl {
            status = "okay";
};
&dsi_in_vopb {
            status = "disabled";
};

rk3399有两路vop,vopb支持到4k,vopl支持到2k,由于lvds的4k屏很少(目前为止我还没接触过),所以这里我把lvds绑定到vopl上,hdmi的4k屏比较常见,可以绑定到vopb上。

3.在pinctrl 节点上添加en脚和reset脚
两个脚的GPIO号需要自行查看自己的原理图来确定
&pinctrl {
    /*add lcd panel by louhn*/
    lcd-panel {
            lcd_panel_reset: lcd-panel-reset {
                rockchip,pins = <4 29 RK_FUNC_GPIO &pcfg_pull_down>;
            };

            lcd_panel_pwr_en: lcd-panel-pwr-en {
                rockchip,pins = <4 30 RK_FUNC_GPIO &pcfg_pull_down>;
        };

    };

4.添加dsi节点
先附上我的dsi配置:
&dsi {
        enable-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
    status = "okay";
        rockchip,lane-rate = <891>;
        panel@0 {
                compatible ="simple-panel-dsi";
                reg = <0>;
                backlight = <&backlight>;

        dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
        dsi,format = <MIPI_DSI_FMT_RGB888>;
                bus-format = <MEDIA_BUS_FMT_RGB888_1X24>;
                dsi,lanes = <4>;
                panel-init-sequence = [
                        29 00 06 3C 01 08 00 06 00
                        29 00 06 14 01 05 00 00 00
                        29 00 06 64 01 12 00 00 00
                        29 00 06 68 01 12 00 00 00
                        29 00 06 6C 01 12 00 00 00
                        29 00 06 70 01 12 00 00 00
                        29 00 06 34 01 1F 00 00 00
                        29 00 06 10 02 1F 00 00 00
                        29 00 06 04 01 01 00 00 00
                        29 00 06 04 02 01 00 00 00
                        29 00 06 50 04 20 01 F0 03
                        29 00 06 54 04 88 00 A0 00
                        29 00 06 58 04 00 04 58 00
                        29 00 06 5C 04 06 00 1D 00
                        29 00 06 60 04 00 03 03 00
                        29 00 06 64 04 01 00 00 00
                        29 01 06 A0 04 06 80 44 00
                        29 00 06 A0 04 06 80 04 00
                        29 00 06 04 05 04 00 00 00
                        29 00 06 80 04 00 01 02 03
                        29 00 06 84 04 04 07 05 08
                        29 00 06 88 04 09 0A 0E 0F
                        29 00 06 8C 04 0B 0C 0D 10
                        29 00 06 90 04 16 17 11 12
                        29 00 06 94 04 13 14 15 1B
                        29 00 06 98 04 18 19 1A 06
                        29 78 06 9C 04 61 02 00 00
                ];
         panel-exit-sequence = [
             05 05 01 28
             05 78 01 10
         ];
        display-timings {
            native-mode = <&timing_15inch>;  
                        timing0: timing0 {
                        hactive = <1024>;
                            vactive = <768>;
                            hback-porch = <160>;
                            hfront-porch = <24>;
                            vback-porch = <29>;
                            vfront-porch = <3>;
                            hsync-len = <136>;
                            vsync-len = <6>;
                            hsync-active = <0>;
                            vsync-active = <0>;
                            de-active = <0>;
                            pixelclk-active = <0>;
                        };
        
                };        
      };
};


dsi节点分析
1.enable和reset的gpio脚:按照前面pinctrl里面配置的写
2.rockchip,lane-rate:
  先在附上我调试的屏的屏参(在2楼)
  dsi时钟计算公式:dsi_hs_clk = ((h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps * bpp) / lane_number
  即:dsi_hs_clk = 1344x806x60x24/4   = 390M
  而实际的dsi clk会比设定的要小100左右,所以这里填写490比较合理,但是当我设置rockchip,lane-rate = <490>时,发现屏幕显示不正常,测量了下dsi的clock引脚的频率,发现没有达到390M。而瑞芯微官方文档里有这么一句话:
MIPI_DSI_HS_CLK 是各个 LANE 传输时的速率(ddr 双边沿),最小值 80Mbps,
最大 1Gbps,默认是 1Gbps,这个也基本上不用改,除非板子布线有问题,跑不了
1Gbps 的。
因此这里直接写rockchip,lane-rate = <1000>,应该也没问题。


3.,flags,format。flags照抄就行,瑞芯微已经设置好了会去自动匹配对应的flags,format根据屏幕来选择,如果是24位就用MIPI_DSI_FMT_RGB888,18为就用MIPI_DSI_FMT_RGB666

3.panel-init-sequence:mipi 的初始化指令是通过TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm.xls的excel工具导出的,该工具只要在对应地方输入屏参,配置完后就能导出对应的指令。(3楼附上我配好的对应的我调试的屏的excel表,供参考)

4.panel-exit-sequence这个是标准的退出指令,默认照抄就行,不用改。

5.display-timings:配置一些屏参,也没啥好说的。

作者: 风在摇曳风铃    时间: 2019-8-7 16:24
屏参

屏参.JPG (83.79 KB, 下载次数: 2431)

屏参.JPG

作者: 风在摇曳风铃    时间: 2019-8-7 16:36
execl初始化指令计算工具

TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm-15inch.zip

278.5 KB, 下载次数: 348, 下载积分: 灯泡 -1 , 经验 -1


作者: 拼命奋斗焦双猪    时间: 2019-9-10 16:07
1就iayou学习加油
作者: wx_only_F_aBaJx    时间: 2019-9-26 11:33
学习学习
作者: genify    时间: 2019-10-18 17:50
新人报道,学习学习
作者: shalilien    时间: 2019-11-21 23:46
display-timings:配置一些屏参  如何写?楼主写的跟手册表对不上啊,还有clock-frequency = ???
作者: hfss    时间: 2020-2-15 12:11
学习 学习
作者: wshini7316    时间: 2020-3-3 09:58
学习学习
作者: visionwx    时间: 2020-3-16 16:00
支不支持10bit显示哈?
作者: jpchen    时间: 2020-3-17 10:54

作者: bo123456    时间: 2020-3-30 13:15
好东西,收下了, 谢谢啦!
作者: 771961621    时间: 2020-4-21 15:40
11111111111111111111111111111
作者: renfei    时间: 2020-4-25 10:35
版主,我的rk33999pro从hdmi改为lvds 发现内核启动阶段不显示 logo ,请问是否遇到了整个问题,怎么解决的
作者: 风在摇曳风铃    时间: 2020-4-26 11:53
renfei 发表于 2020-4-25 10:35
版主,我的rk33999pro从hdmi改为lvds 发现内核启动阶段不显示 logo ,请问是否遇到了整个问题,怎么解决的

设备树里打开
&route_dsi {
    status = "okay";
};

作者: rockhard    时间: 2020-4-26 18:03
新用户,还不能下载,感谢分享,正在调这个芯片,有点头大。
作者: alvin427    时间: 2020-5-2 15:21
Good Study

作者: aru1202    时间: 2020-5-12 11:33
good
作者: alvin427    时间: 2020-5-13 11:26
Good Study,学习学习
作者: 安凯臣君    时间: 2020-6-3 20:32
execl初始化指令计算工具,具体如何使用。完全搞不懂,能不能指点一二
作者: shexujia    时间: 2020-7-21 15:06
学习学习
作者: Cody2020    时间: 2020-7-31 17:11

作者: 南京绿叶    时间: 2020-10-14 08:21
感谢分享
作者: zhangyuge001    时间: 2020-11-24 17:00
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

下载一下看看
作者: ljl_xyz    时间: 2020-11-27 09:44
bucuo,bucuo!
作者: diaodiao    时间: 2020-12-16 20:15
学习学习
作者: wx_阿松_D74RF    时间: 2020-12-31 09:43
看看看看,学习下
作者: Ander_Chen    时间: 2021-5-24 10:22
panel-init-sequence:mipi 的初始化指令是通过TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm.xls的excel工具导出的
-->因为没有权限下载,xls可以帮忙发一份到我邮箱吗:821857045@qq.com,不胜感激
作者: ZH_bQPXh    时间: 2021-6-15 18:38
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

学习学习
作者: fyyy4030    时间: 2021-6-25 01:28
好东西,不错!!!
作者: chke    时间: 2021-7-15 14:53
学习
作者: 会_JW3na    时间: 2021-7-20 09:35
学习学习
作者: 海峡西岸    时间: 2021-8-12 21:23
版主,设备树配置文件是不是rk3399_linux_release_v2.5.1_20210301/kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-aiojd4-lvds.dts这个配置文件?
求回复
我用的板子是Core-3399-JD4

作者: 18811004485    时间: 2021-8-18 14:29
积分不够下载不了
作者: 18811004485    时间: 2021-8-18 14:31
请问800X480,单LVDS应该怎么配置呢,麻烦提醒一下,谢谢
作者: zhoscar    时间: 2021-8-18 15:36
学习学习

作者: auo\sunnyzhong    时间: 2021-9-24 17:08
1111111
作者: liangfx    时间: 2021-10-26 18:12
学习学习
作者: Meteor    时间: 2021-10-28 13:49
学习
作者: 宿命风    时间: 2021-11-23 09:54
感谢分享!
作者: 宿命风    时间: 2021-11-23 10:36
这个表格好复杂啊.
作者: 270474276@qq    时间: 2021-11-23 13:35
谢谢分享
作者: lucky55661    时间: 2021-12-2 17:50
学习了
作者: songlx    时间: 2022-2-16 16:49
学习学习
作者: RobinXu    时间: 2022-3-9 23:12
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

学习一下
作者: beijingasd    时间: 2022-3-14 22:41
发帖后不打扰他还让他、

作者: beijingasd    时间: 2022-3-15 10:01
分摊表儿童
作者: 隔了哈    时间: 2022-8-31 10:19
renfei 发表于 2020-4-25 10:35
版主,我的rk33999pro从hdmi改为lvds 发现内核启动阶段不显示 logo ,请问是否遇到了整个问题,怎么解决的

大佬 你这rk3399从hdmi改成 lvds不能出现logo的情况解决了吗
作者: 朱勇    时间: 2022-9-6 15:11
对于初学者很需要高手的帮助,希望有更多的高手来答疑解惑
作者: 小问号    时间: 2022-10-12 08:57
学习学习
作者: seven.xu    时间: 2022-11-25 09:45
学习了
作者: yuxhuitx    时间: 2023-12-1 18:00
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

看看是啥,学习中
作者: dfysy    时间: 2023-12-12 18:03
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

不错的数据表
作者: moonshadow    时间: 2023-12-27 10:13
风在摇曳风铃 发表于 2019-8-7 16:36
execl初始化指令计算工具

感谢分享,学习
作者: YONGBIN    时间: 2024-4-7 11:35
好文 需要需要。。。。。
作者: yangkang_lemid    时间: 2024-4-10 11:17
如何才能获得灯泡??
作者: yangkang_lemid    时间: 2024-4-10 11:43
我看20年东芝提交了tc358775的内核驱动,一定程度上可以简化该操作
作者: 水流年    时间: 2024-4-12 22:29
苦苦研究中,想要驱动笔记本LVDS 屏幕,背光亮,屏幕不显示
作者: etherwind    时间: 2024-4-23 15:33
同问,如何才能获得灯泡呢?
作者: wx__oQ16Jq    时间: 2024-5-5 22:46
感謝分享
作者: qw1031150349    时间: 2024-5-13 16:22
etherwind 发表于 2024-4-23 15:33
同问,如何才能获得灯泡呢?

去首页签到可以获得
作者: kylintang    时间: 2024-8-20 22:45

学习学习
作者: todo9351    时间: 2024-9-24 15:56
学习学习,非常感谢




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1