Table of Contents
Table of Contents | ||
---|---|---|
|
Introduction
The Xilinx® Video PHY Controller LogiCORE™ IP core is designed for enabling plug-and-play connectivity with Video (DisplayPort and HDMI® technology) MAC Transmit or Receive subsystems. VideoPhy driver supports only HDMI protocol as of now.
The interface between the video MAC and PHY layers are standardized to enable ease of use in accessing shared transceiver resources. The AXI4-Lite register interface is provided to enable dynamic accesses of transceiver controls/status
Video IP Layer
Driver Overview
The PHY is intended to simplify the use of serial transceivers and adds domain-specific configurability. The Video PHY Controller IP/Driver is not intended to be used as a stand alone IP and must be used with Xilinx Video MACs such as HDMI 1.4/2.0 Transmitter/Receiver Subsystems and DisplayPort TX/RX Subsystems.As such PHY Linux Driver is implemented within the kernel PHY framework and is tightly coupled with HDMI Rx/Tx Linux drivers. This driver also hosts the common video files shared between the 3 Xilinx connectivity drivers (Vphy, HDMI Rx and HDMI Tx) and exports the relevant API’s for inter-driver communication. On kernel boot-up both HDMI Rx & Tx drivers will request 3 PHY lanes each for Rx & Tx and will defer until PNY driver has been initialized.
IP/Driver Features
IP Feature | 2018.1 - 2019.1 | 2019.2 and onward | 2023.2 and onward |
compatible string for versal | xlnx,hdmi-gt-controller-1.0 | xlnx,hdmi-gt-controller-1.0 | xlnx,hdmi-gt-controller-1.0 |
compatible string for ZynqMP | xlnx,vid-phy-controller-2.2 | xlnx,vid-phy-controller-2.2 | xlnx,vid-phy-controller-2.2 |
IP Version Supported | 2.2 | 2.2 | 2.2 |
AXI4-Lite support for register accesses | Y | Y | Y |
Protocol Support: Display Port, HDMI | Only HDMI | Only HDMI | DisplayPort and HDMI |
Full transceiver dynamic reconfiguration port (DRP) accesses and transceiver functions | Y | Y | Y |
Independent TX and RX path line rates (device specific) | Y | Y | Y |
Single quad support | Y | Y | Y |
Phase-locked loop (PLL) switching support from software | Y | Y | Y |
Transmit and Receiver user clocking | Y | Y | Y |
Protocol specific functions (For example, HDMI Clock Detector) | Y | Y | Y |
Non-integer data recovery unit (NI-DRU) support for lower line rates. NI-DRU support is for the HDMI protocol only. | Y | Y | Y |
Advanced Clocking Support | N | N | Y |
Use of 4th GT channel as TX TMDS clock | N | Y | Y |
HW IP Configuration
Only below depicted IP configuration is supported at this time
Known Issues and Limitations
- Only 1 IP configuration supported (listed in HW IP Configuration section)
- Supports only HDMI protocol at this time
Kernel Configuration Options for Driver
2018.1 and onwards: CONFIG_ARCH_ZYNQMP and CONFIG_GENERIC_PHY should be enabledDriver is added as an out-of-tree kernel module and therefore requires no driver specific kernel configuration However to enable the driver user must include it in the rootfs. Following steps are required enable the driver
- Make sure the meta-user layer has the recipe-hdmi included
- For 2019.2 onwards
Add the recipe to petalinux image. Edit ./meta-user/conf/user-rootfsconfig and add the new recipe at the end
Code Block | ||
---|---|---|
| ||
CONFIG_kernel-module-hdmi |
- For 2018.1 to 2019.1
- Add the recipe to petalinux image. Edit ./meta-user/recipes-core/images/petalinux-image-full.bbappend and add the new recipe at the end
- NOTE - While using 2018.1 petalinux, the file name was ./meta-user/recipes-core/images/petalinux-image.bbappend
- Add the recipe to petalinux image. Edit ./meta-user/recipes-core/images/petalinux-image-full.bbappend and add the new recipe at the end
Code Block | ||
---|---|---|
| ||
IMAGE_INSTALL_append = " kernel-module-hdmi" |
- Next include the driver in the rootfs
Code Block | ||
---|---|---|
| ||
% petalinux-config -c rootfs |
- Select "user-pakages->modules->kernel-module-hdmi", save and exit
- Build the project
Code Block | ||
---|---|---|
| ||
%petalinux-build |
Device Tree Binding
The dts node should be defined with correct hardware configuration. How to define the node is documented in...
Change Log
2024.2
2024.1
2023.2
- Commits
- dt-bindings: hdmi-tx-ss: Fix the phy instance names
- dt-bindings: hdmi-rx-ss: Fix the phy instance names
- dt-bindings: vphy: Update phy lane nodes as per the IP
- phy: Fix max lanes supported by video phy in HDMI 2.O mode
- Revert "Create 0001-hdmitx-Fixed-hdmi-compilation-with-kernel-6.1.patch"
- Create 0001-hdmitx-Fixed-hdmi-compilation-with-kernel-6.1.patch
2023.1
2022.2
2022.1
- Commits
- hdmitx: Remove registring with hdmi-audio-codec driver
- hdmitx: Add support for 3 planar YUV444 10bpc
- hdmitx: Workaround for Versal display not coming up on boot
- hdmi: Fix the clean path in Makefile
- hdmitx: Add VPSS bridge support
- dt:bindings: Add entry to support vpss bridge
- videocommon: Added new attributes to the VIC table
- videocommon: Add enum for 64:27 and 256:135 aspect ratio
- hdmitx: Add NULL reference check for connector state
- hdmi: Fix compilation errors with v5.15 kernel
- dp159: Fix comments for setting VSWING_DATA/CLK
2021.2
- Commits
2021.1
- Summary
- Update the phy driver based on bare metal driver updates to components like hdcp, video common library, etc.
- Commits
- license: Update the license for 2021.1
- phy: hdmiphy1: Updates for 2021.1
- common: hdcp22_tx: Update the driver for 2021.1
- common: hdcp22_rx: Update driver for 2021.1
- common: hdcp1x: Update driver for 2021.1
- common: xhdmi_example: Fix styling issue in aes256
- common: tmrctr: Update the tmrctr driver
- commond: video_common: Update for 2021.1
- common: video_common: Fix the timings for 1440x480/576
- common: Update v_hdmi_common for 2021.1
- Fix compilation error for v5.10 kernel
2020.2
- Summary
- Fix coverity warnings
- Remove GT workaround patch
- Add helpers to parse and generate HDR Aux packets
- Commits
2020.1
- Summary
- Add support for Versal Phy (HDMI GT controller) in same driver
- Add minor fixes and updates
- Fix sha
- Add VIC entries
- memset packet structure to 0 while generating
- Commits
2019.2
- Summary
- Driver updated for 2019.2
- Enabled TX 4th GT channel support
- Enabled suspend and resume
- Updated license file for 2019.2
- Commits
2019.1
- Summary
- Made driver compliant with DTG tool generated Device tree nodes and updated the documentation.
- Updated license file for 2019.1
- Commits
2018.3
- Summary
- Made dru clock optional depending on NI-DRU configured value
- Commits
2018.1
- Summary
- Added 0.5% margin to user clock frequency
- Commits
Related Links
- Linux Drivers
- HDMI Tx Driver
- HDMI Rx Driver
- HDMI FrameBuffer Example Design 2019.2
- HDMI FrameBuffer Example Design 2019.1
- HDMI FrameBuffer Example Design 2018.3
- HDMI FrameBuffer Example Design 2018.1