在iTOP-RK3568的底板设计中,默认配备了一个EDP(Embedded DisplayPort)接口,这为连接高分辨率显示屏提供了便利。然而,在默认的源码配置中,系统并未对EDP屏幕进行完整的驱动适配。随着越来越多客户提出使用EDP屏幕的需求,为了满足这一实际应用场景,接下来将详细讲解如何完成EDP屏幕的适配工作。  

RK3568开发板介绍

iTOP-3568开发板采用瑞芯微RK3568处理器,集成4核arm架构A55处理器和Mali G52 2EE图形处理器,支持4K解码和1080P编码。RK3568支持SATA/PCIE/USB3.0等各类型外围接口,内置独立的NPU,同时支持HDMI、EDP、MIPI、VGA、LVDS多个显示接口,可用于轻量级人工智能应用。 

 底板EDP接口介绍

RK3568 SOC 支持EDP屏幕,具体特性如下所示:
(1)支持1个eDP 1.3接口
(2)最多4条物理通道,每条通道支持2.7Gbps
(3)支持面板自刷新(Panel Self Refresh, PSR)
(4)最大支持2560x1600 @ 60Hz 分辨率
(5)支持RGB格式(最高10位色深) 

迅为iTOP-RK3568底板的EDP屏幕接口如下所示: 

 而EDP信号除了引到该接口之外,还应用到了EDP转VGA电路上,EDP转VGA电路如下所示:

迅为默认已经提供了VGA镜像,VGA屏幕可以被正常点亮,而由于VGA和EDP共用同一个信号,所以需要自己绘制底板来实现EDP屏幕的正常使用(已测试),底板EDP接口部分只需跟第一张原理图部分保持一致即可。

至此,关于硬件部分就介绍完成了,而默认的源码是不支持EDP屏幕的,所以在下个小节中将对EDP的软件配置进行说明。

设备树内容修改

关于屏幕配置相关的设备树路径为SDK的kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi,如下图所示: 

 首先在该文件的最上面添加EDP屏幕的宏定义,添加完成如下所示:

#define LCD_TYPE_EDP

然后添加在根节点添加edp屏幕的配置,具体内容如下所示:

	panel-edp0 {
		compatible = "simple-panel";
		power-supply = <&vcc3v3_lcd0_n>;
		backlight = <&backlight>;
		prepare-delay-ms = <120>; 
		enable-delay-ms = <120>;                               
		unprepare-delay-ms = <120>;                            
		disable-delay-ms = <120>;                              
		bus-format = <MEDIA_BUS_FMT_RGB888_1X24>;             
		bpc = <8>;                                            


		port {
			panel_in_edp: endpoint {
				remote-endpoint = <&edp_out_panel>;          
			};
		};
	};

 然后来到该设备树的最下方,继续追加如下edp屏幕的相关配置,追加完成如下所示:

#if defined(LCD_TYPE_EDP)

&pwm4{
    status = "okay";
};

&backlight {
    status = "okay";
    pwms = <&pwm4 0 25000 0>;
};

&edp {
    force-hpd;                                                 
    status = "okay";
    connect = <&vp0_out_edp>;  
    ports {
        port@1 {
            reg = <1>;

            edp_out_panel: endpoint {
                remote-endpoint = <&panel_in_edp>; 
            };
        };
    };
};

// 启用 eDP PHY
&edp_phy {
    status = "okay";
};

// 启用 eDP 输入 VP0
&edp_in_vp0 {
    status = "okay";
};

// 禁用 eDP 输入 VP1
&edp_in_vp1 {
    status = "disabled";
};

// 路由 eDP
&route_edp {
    status = "okay";
    connect = <&vp0_out_edp>; // 连接到 VP0 的 eDP 输出
};

#endif 

至此,关于关于设备树的修改就完成了,然后编译内核,连接好EDP屏幕之后,单独烧写内核镜像boot.img,即可成功点亮EDP屏幕。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐