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