Back to Linux

Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem

Documentation/gpu/zynqmp.rst

7.04.7 KB
Original Source

.. SPDX-License-Identifier: GPL-2.0+

=============================================== Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem

This subsystem handles DisplayPort video and audio output on the ZynqMP. It supports in-memory framebuffers with the DisplayPort DMA controller (xilinx-dpdma), as well as "live" video and audio from the programmable logic (PL). This subsystem can perform several transformations, including color space conversion, alpha blending, and audio mixing, although not all features are currently supported.

debugfs

To support debugging and compliance testing, several test modes can be enabled though debugfs. The following files in /sys/kernel/debug/dri/X/DP-1/test/ control the DisplayPort test modes:

active: Writing a 1 to this file will activate test mode, and writing a 0 will deactivate test mode. Writing a 1 or 0 when the test mode is already active/inactive will re-activate/re-deactivate test mode. When test mode is inactive, changes made to other files will have no (immediate) effect, although the settings will be saved for when test mode is activated. When test mode is active, changes made to other files will apply immediately.

custom: Custom test pattern value

downspread: Enable/disable clock downspreading (spread-spectrum clocking) by writing 1/0

enhanced: Enable/disable enhanced framing

ignore_aux_errors: Ignore AUX errors when set to 1. Writes to this file take effect immediately (regardless of whether test mode is active) and affect all AUX transfers.

ignore_hpd: Ignore hotplug events (such as cable removals or monitor link retraining requests) when set to 1. Writes to this file take effect immediately (regardless of whether test mode is active).

laneX_preemphasis: Preemphasis from 0 (lowest) to 2 (highest) for lane X

laneX_swing: Voltage swing from 0 (lowest) to 3 (highest) for lane X

lanes: Number of lanes to use (1, 2, or 4)

pattern: Test pattern. May be one of:

            video
                    Use regular video input

            symbol-error
                    Symbol error measurement pattern

            prbs7
                    Output of the PRBS7 (x^7 + x^6 + 1) polynomial

            80bit-custom
                    A custom 80-bit pattern

            cp2520
                    HBR2 compliance eye pattern

            tps1
                    Link training symbol pattern TPS1 (/D10.2/)

            tps2
                    Link training symbol pattern TPS2

            tps3
                    Link training symbol pattern TPS3 (for HBR2)

rate: Rate in hertz. One of

            * 5400000000 (HBR2)
            * 2700000000 (HBR)
            * 1620000000 (RBR)

You can dump the displayport test settings with the following command::

    for prop in /sys/kernel/debug/dri/1/DP-1/test/*; do
            printf '%-17s ' ${prop##*/}
            if [ ${prop##*/} = custom ]; then
                    hexdump -C $prop | head -1
            else
                    cat $prop
            fi
    done

The output could look something like::

    active            1
    custom            00000000  00 00 00 00 00 00 00 00  00 00                    |..........|
    downspread        0
    enhanced          1
    ignore_aux_errors 1
    ignore_hpd        1
    lane0_preemphasis 0
    lane0_swing       3
    lane1_preemphasis 0
    lane1_swing       3
    lanes             2
    pattern           prbs7
    rate              1620000000

The recommended test procedure is to connect the board to a monitor, configure test mode, activate test mode, and then disconnect the cable and connect it to your test equipment of choice. For example, one sequence of commands could be::

    echo 1 > /sys/kernel/debug/dri/1/DP-1/test/enhanced
    echo tps1 > /sys/kernel/debug/dri/1/DP-1/test/pattern
    echo 1620000000 > /sys/kernel/debug/dri/1/DP-1/test/rate
    echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_aux_errors
    echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_hpd
    echo 1 > /sys/kernel/debug/dri/1/DP-1/test/active

at which point the cable could be disconnected from the monitor.

Internals

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_disp.h

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_dpsub.h

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_kms.h

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_disp.c

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_dp.c

.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_kms.c