9.2.2. LVDS屏调试配置

9.2.2.1. 概述

相比MIPI屏的调试,LVDS屏的调试相对简单,只需要把规格书中所描述的时序和规格参数加入相应的配置文件即可,不需要额外的驱动程序。 此章节详细的描述一款LVDS显示屏的调试过程和配置方法。

9.2.2.2. 内核配置

驱动源码目录:linux-5.10/drivers/video/fbdev/zx/panel/

配置请参考 显示部分章节说明

9.2.2.3. DTS参数配置

这些参数主要在文件board.dts中,功能参数的设置必须和硬件原理图相匹配

  • 首先设置显示模块数据通路关系,RGB屏幕数据通路如下:

    &fb0 {
            port {
                    fb0_out: endpoint {
                            remote-endpoint = <&de0_in>;
                    };
            };
    };
    
    &de0 {
            status = "okay";
            port@0 {
                    reg = <0>;
                    de0_in: endpoint {
                            remote-endpoint = <&fb0_out>;
                    };
            };
    
            port@1 {
                    reg = <1>;
                    de0_out: endpoint {
                            remote-endpoint = <&lvds0_in>;
                    };
            };
    };
    
    &lvds0 {
            status = "okay";
            port@0 {
                    reg = <0>;
                    lvds0_in: endpoint {
                            remote-endpoint = <&de0_out>;
                    };
            };
    
            port@1 {
                    reg = <1>;
                    lvds0_out: endpoint {
                            remote-endpoint = <&panel_lvds_in>;
                    };
            };
    };
    

    在上述例子中,board.dts通过port和status结点,定义了一条数据通道。

    fb       |      de    |     |     lvds    |     panel
    port  --> port0   port1 -->  port0   port1 -->  port
    

    如果board.dts中没有正确定义一条数据通道,显示驱动可能无法完成初始化。

  • 设置屏幕参数

    panel_lvds {
            compatible = "zx,aic-general-lvds-panel";
            enable-gpios = <&gpio_a 4 GPIO_ACTIVE_HIGH>;
            data-mapping = "vesa-24";
            data-channel = "single-link0";
            status = "okay";
    
            port {
                    panel_lvds_in: endpoint {
                            remote-endpoint = <&lvds0_out>;
                    };
            };
    
            display-timings {
                    native-mode = <&timing1>;
                    timing1: 1024x600 {
                            clock-frequency = <60000000>;
                            hactive = <1024>;
                            vactive = <600>;
                            hback-porch = <140>;
                            hfront-porch = <160>;
                            hsync-len = <20>;
                            vback-porch = <20>;
                            vfront-porch = <12>;
                            vsync-len = <3>;
                            de-active = <1>;
                            pixelclk-active = <1>;
                    };
            };
    };
    

    其中类似 enable-gpios 控制引脚需要根据实际显示屏的需要增加或减少,驱动中做相应修改, data-mapping data-channel 需要从规格书中获取, 关于参数详细的解析请参考 显示部分章节DTS关于pannel_lvds的配置说明

    其中参数 display-timings 需要从屏幕规格书中或供应商处获取,例如规格书会有如下信息:

../../../_images/lvds_timing.png

9.2.2.4. 调试

调试部分请查看 显示部分章节关于常见问题的调试说明