-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drm: zynqmp_dp: Add debugfs interface for compliance testing
Add a debugfs interface for exercising the various test modes supported by the DisplayPort controller. This allows performing compliance testing, or performing signal integrity measurements on a failing link. At the moment, we do not support sink-driven link quality testing, although such support would be fairly easy to add. Additionally, add some debugfs files for ignoring AUX errors and HPD events, as this can allow testing with equipment that cannot emulate a DPRX. Signed-off-by: Sean Anderson <sean.anderson@linux.dev> [Tomi: fixed a few minor formatting issues] Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240809193600.3360015-9-sean.anderson@linux.dev
- Loading branch information
Sean Anderson
authored and
Tomi Valkeinen
committed
Oct 30, 2024
1 parent
76f2c96
commit 28edaac
Showing
4 changed files
with
828 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,6 +22,7 @@ GPU Driver Documentation | |
afbc | ||
komeda-kms | ||
panfrost | ||
zynqmp | ||
|
||
.. only:: subproject and html | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
.. 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_dpsub.c | ||
|
||
.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_kms.c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.