The purpose of this page is to describe the Linux DRM KMS driver for Xilinx soft IPs.

Overview

The Xilinx Linux DRM KMS driver configures the display pipeline which can be integrated with multiple Xilinx VIdeo IPs and DRM KMS compatible external IPs(ex, adv7511 encoder slave). The ZynqMP DisplayPort subsystem driver, ZynqMP MIPI DSI2 Tx subsystem driver, and ZynqMP SDI Tx subsystem driver are part of Xilinx DRM KMS.

Linux Kernel defconfig

CONFIG_DRM_XILINX should be enabled. CONFIG_DRM_XILINX depends on CONFIG_DRM and CONFIG_HAVE_CLK, and selects DRM_KMS_HELPER, DRM_KMS_CMA_HELPER, DRM_GEM_CMA_HELPER, DMA_ENGINE, DRM_XILINX_DP_SUB.

FOR MIPI DSI2 Tx drivers, CONFIG_DRM_XILINX_MIPI_DSI should be enabled. This depends on CONFIG_DRM_XILINX and selects CONFIG_DRM_MIPI_DSI and CONFIG_DRM_PANEL

For SDI Tx driver, CONFIG_DRM_XILINX_SDI should be enabled, it depends on CONFIG_DRM_XILINX.

Device tree binding

The dts node should be defined with correct hardware configuration. How to define the node is documented here, Documentation/devicetree/bindings/drm/xilinx/.

Supporting IPs

  • Chroma resampler(CRESAMPLE)
    • * The Chroma resampler IP is in maintenance mode and not recommended for new designs. For all new designs, users are recommended to use Video Processing Subsystem.The Linux drivers for the Video Processing Subsystem will be available soon *
  • On Screen Display(OSD)
    • * The OSD IP is in maintenance mode and not recommended for new designs. For all new designs, users are recommended to use Video Mixer. The Linux drivers for the video mixer will be available soon *
  • RGB to YUV converter(RGB2YUV)
  • Video Timing Controller(VTC)
  • DisplayPort(DP)
  • MIPI DSI2 Tx(DSI)
    • Soft IP
  • Video Mixer (Video Mixer)
    • Available in a special branch for the time being. See documentation link for more details.
  • HDMI Tx (Xilinx DRM KMS HDMI-Tx Driver)
    • Available in a special branch for the time being. See documentation link for more details.
  • SDI Tx (Xilinx DRM KMS SDI-TX Driver)
    • Soft IP

Supporting features

  • Transmitting SW(graphics library) / HW(GPU) rendered frames from RAM to the display device(HDMI or DisplayPort monitors or DSI Panels)
  • Allowing different pixel formats by having format IPs(CRESAMPLE, and/or RGB2YUV) in any path of pipeline.
  • Overlaying multiple planes with different sizes and positions using OSD IP core and/or Video Mixer
  • Configuring each plane's z-order and alpha value can be configured at runtime using DRM property API
  • Supporting HDMI or DisplayPort or MIPI DSI Video interface (or any other interface with DRM compatible driver)
  • Supporting multiple IP configurations of the pipeline (blocks with dotted line are optional, and Xilinx DisplayPort/Xilinx DSI IP/HDMI Tx or SDI Tx can be used in place of adv7511)
  • Xilinx DSI drivers (encoder and connector) are connected to the Xilinx CRTC using component framework
  • Xilinx SDI drivers (encoder and connector) are connected to the Xilinx CRTC using component framework

Xlnx DRM KMS.png

Work to be done

  • Implement the subdevice driver interface to handle subdevices in noble way

Changelog

  • 2018.1
    • Summary
      • Switched to new drm driver
        • drivers/gpu/drm/xilinx to drivers/gpu/drm/xlnx
        • ZU+ DP, Mixer, SDI, DSI, Scaler, CSC
        • Atomic modesetting
        • Modular structure: of graph, component,,,
      • 10bit format support
    • Commits
      • git log --oneline b450e90...4ac76ff ./drivers/gpu/drm/xlnx
    • Note page for ZU+ DP driver
  • 2017.4
    • Summary
      • Bug fix:
        • ZU+ DP debugfs
      • SDI support
      • Skip ZU+ DP aux communication when there's no connected monitor
    • Commits
      • git log --oneline f1b1e07...b450e90 ./drivers/gpu/drm/xilinx/

  • 2017.3
    • Summary
      • Style changes
      • Add a SDI Tx driver
      • Fix for HDMI adapter issue of ZU+ DP
      • Fix for some inter-op issue of ZU+ DP
      • Add debugfs for ZU+ DP
    • Commits
      • git log --oneline 6199cfd...49629fb drivers/gpu/drm/xilinx/
  • 2017.2
    • Summary
      • Add DSI driver to Kconfig / Makefile
    • Commits
      • git log --oneline b2b8e1f...6199cfd drivers/gpu/drm/xilinx/
  • 2017.1
    • Summary
      • Align with 4.7/4.8/4.9 changes
      • Add a MIPI DSI driver
      • Support PS clock through CCF
      • Fix the issue with DP v1.1
      • Handle the AUX timeout for DP
      • Support busid
      • Support suspend/resume
    • Commits
      • git log --oneline 6199cfd...ac26233^ drivers/gpu/drm/xilinx/
  • 2016.4
    • Summary
      • Support more formats by swapping color components
      • Support runtime format change
      • Support multiple master
      • Minor clean up and fixes: style, document,,,
    • Commits
      • git log --oneline a58c219...fe081e6^ drivers/gpu/drm/xilinx/
  • 2016.3
    • Summary
      • Support multi-plane YUV format for ZynqMP DP
      • Follow the training sequence per specfor ZynqMP DP
      • Fix some issues: Styles, crashes,,,
    • Commits
      • git log --oneline 28a0dcf...8a36af9^ drivers/gpu/drm/xilinx/

Related Links