作者:Zhang Yong,AMD工程師;來源:AMD開發者社區
DisplayPort 1.4 Tx Subsystem core的最簡pipeline就是如它的linux driver wiki page里的figure-4那樣,framebuffer_read+DP+video_phy。Zcu102板卡沒有PL DP的專用接口,所以要用到一個FMC子卡來擴展PL DP接口。為了增加系統靈活性,也可以在framebuffer_read core和DP core之間加入mixer core。本例為了增加Xorg server的支持,在mixer core里增加了一層AR24 format的plane,并在設備數里把它這一層設置為primary layer。Vivado工程參考附件vivado_prj.zip(點擊“閱讀原文”查看)
在petalinux 2023.1版本里,有一些問題需要用到一些patch來解決。比如device tree generator的問題需要用到下面這些patch以及system-user.dtsi里的一些特殊設定,參考附件device-tree.zip(點擊“閱讀原文”查看)
001-dptxss-common_proc.patch
001-dptxss-ddrpsv.patch
001-dptxss-dp_tx.patch
001-vid_phy_ctrl.patch
Kernel driver的問題需要用到0001_dp_hdcp_property_check.patch,參考附件recipes-kernel.zip(點擊“閱讀原文”查看)
另外需要增加kernel-module-dp,就是在project-spec/meta-user/conf/user-rootfsconfig里增加CONFIG_kernel-module-dp,然后在rootfs menuconfig里enable這個user module。
如果需要在板上使用Xorg、ffplay、modetest來測試,需要在rootfs里使能一些package, 比如,
libmali-xlnx
????????????? packagegroup-core-x11
???? ???????? packagegroup-core-x11-base
??? ????????? packagegroup-core-x11-xserver
????? ??????? v4l-utils
????? ??????? libv4l
????? ??????? media-ctl
????? ??????? v4l-utils-dbg
????? ??????? v4l-utils-dev
???? ???????? ?libv4l-dev
libdrm
????? ??????? libdrm-tests
???? ???????? ?libdrm-drivers
????? ??????? xserver-xorg
????? ??????? xserver-xorg-extension-dri
????? ??????? xserver-xorg-extension-glx
???? ???????? ?xserver-xorg-utils
????????????? ffmpeg
petalinux image在zcu102板卡加載到linux之后,可以在/dev/dri/by-path/里看到dri card0和dri card1,分別代碼PS DisplayPort和PL DisplayPort兩條pipeline,可以使用modetest或者ffplay+Xorg來測試。
命令modetest -D a0010000.v_mix可以顯示PL DP這個pipeline上的設備,可以看到connector的ID是40,命令modetest -D a0010000.v_mix -s 40:1920x1080-60@AR24可以通過PL DP在顯示器上顯示color bar。
另一種測試方式是ffplay+Xorg,首先在啟動Xorg前,配置etc/X11/xorg.conf,讓它使用PL DP通道,可以參考附件xorg.conf。然后可以使用下面命令啟動Xorg并用ffplay命令顯示USB camera設備/dev/video0的視頻流。
Sudo Xorg &
Export DISPLAY=:0.0
ffplay /dev/video0

