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