The purpose of this page is to describe the Linux Phy driver for Xilinx HDMI Video PHY Soft IP for Zynq Ultrascale+ MPSOC


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. 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

phy.jpg
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.

HW IP Features

  • AXI4-Lite support for register accesses
  • Protocol Support: DisplayPort, HDMI
  • Full transceiver dynamic reconfiguration port (DRP) accesses and transceiver functions
  • Independent TX and RX path line rates (device specific)
  • Single quad support
  • Phase-locked loop (PLL) switching support from software
  • Transmit and Receiver user clocking
  • Protocol specific functions (For example, HDMI Clock Detector)
  • Non-integer data recovery unit (NI-DRU) support for lower line rates. NI-DRU support is for the HDMI protocol only.
  • Advanced Clocking Support (DisplayPort protocol only)

HW IP Configuration

Only below depicted IP configuration is supported at this time
phy_ip.jpg

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: CONFIG_ARCH_ZYNQMP and CONFIG_GENERIC_PHY should be enabled
Driver 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
  • Add the recipe to petalinux image. Edit ./meta-user/recipes-core/images/petalinux-image.bbappend and add the new recipe at the end
IMAGE_INSTALL_append = " kernel-module-hdmi"
  • Next include the driver in the rootfs
% petalinux-config –c rootfs
  • Select "user-pakages->modules->kernel-module-hdmi", save and exit
  • Build the project
%petalinux-build
2017.3: CONFIG_ARCH_ZYNQMP, CONFIG_GENERIC_PHY and CONFIG_ PHY_XILINX_VPHY should be enabled


Device Tree Binding

The dts node should be defined with correct hardware configuration. How to define the node is documented in
2018.1: Documentation/devicetree/bindings/xlnx,vphy.txt
2017.3: Documentation/devicetree/bindings/phy/xlnx,vphy.txt

DEBUG Capability

Video PHY Linux driver implements the capability to tap IP status at pre-defined points in the control flow. User can enable the debug taps by uncommenting the pre-processor directive (#define DEBUG) to monitor the progress within the driver. All debug prints are sent to serial console and can be viewed in kernel dmesg buffer

Boards Supported

Driver has been tested on following boards
  • zcu102 Rev 1.0
  • Zcu106 Rev C

Related Links