xref: /linux/Documentation/gpu/zynqmp.rst (revision 7f71507851fc7764b36a3221839607d3a45c2025)
1.. SPDX-License-Identifier: GPL-2.0+
2
3===============================================
4Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem
5===============================================
6
7This subsystem handles DisplayPort video and audio output on the ZynqMP. It
8supports in-memory framebuffers with the DisplayPort DMA controller
9(xilinx-dpdma), as well as "live" video and audio from the programmable logic
10(PL). This subsystem can perform several transformations, including color space
11conversion, alpha blending, and audio mixing, although not all features are
12currently supported.
13
14debugfs
15-------
16
17To support debugging and compliance testing, several test modes can be enabled
18though debugfs. The following files in /sys/kernel/debug/dri/X/DP-1/test/
19control the DisplayPort test modes:
20
21active:
22        Writing a 1 to this file will activate test mode, and writing a 0 will
23        deactivate test mode. Writing a 1 or 0 when the test mode is already
24        active/inactive will re-activate/re-deactivate test mode. When test
25        mode is inactive, changes made to other files will have no (immediate)
26        effect, although the settings will be saved for when test mode is
27        activated. When test mode is active, changes made to other files will
28        apply immediately.
29
30custom:
31        Custom test pattern value
32
33downspread:
34        Enable/disable clock downspreading (spread-spectrum clocking) by
35        writing 1/0
36
37enhanced:
38        Enable/disable enhanced framing
39
40ignore_aux_errors:
41        Ignore AUX errors when set to 1. Writes to this file take effect
42        immediately (regardless of whether test mode is active) and affect all
43        AUX transfers.
44
45ignore_hpd:
46        Ignore hotplug events (such as cable removals or monitor link
47        retraining requests) when set to 1. Writes to this file take effect
48        immediately (regardless of whether test mode is active).
49
50laneX_preemphasis:
51        Preemphasis from 0 (lowest) to 2 (highest) for lane X
52
53laneX_swing:
54        Voltage swing from 0 (lowest) to 3 (highest) for lane X
55
56lanes:
57        Number of lanes to use (1, 2, or 4)
58
59pattern:
60        Test pattern. May be one of:
61
62                video
63                        Use regular video input
64
65                symbol-error
66                        Symbol error measurement pattern
67
68                prbs7
69                        Output of the PRBS7 (x^7 + x^6 + 1) polynomial
70
71                80bit-custom
72                        A custom 80-bit pattern
73
74                cp2520
75                        HBR2 compliance eye pattern
76
77                tps1
78                        Link training symbol pattern TPS1 (/D10.2/)
79
80                tps2
81                        Link training symbol pattern TPS2
82
83                tps3
84                        Link training symbol pattern TPS3 (for HBR2)
85
86rate:
87        Rate in hertz. One of
88
89                * 5400000000 (HBR2)
90                * 2700000000 (HBR)
91                * 1620000000 (RBR)
92
93You can dump the displayport test settings with the following command::
94
95        for prop in /sys/kernel/debug/dri/1/DP-1/test/*; do
96                printf '%-17s ' ${prop##*/}
97                if [ ${prop##*/} = custom ]; then
98                        hexdump -C $prop | head -1
99                else
100                        cat $prop
101                fi
102        done
103
104The output could look something like::
105
106        active            1
107        custom            00000000  00 00 00 00 00 00 00 00  00 00                    |..........|
108        downspread        0
109        enhanced          1
110        ignore_aux_errors 1
111        ignore_hpd        1
112        lane0_preemphasis 0
113        lane0_swing       3
114        lane1_preemphasis 0
115        lane1_swing       3
116        lanes             2
117        pattern           prbs7
118        rate              1620000000
119
120The recommended test procedure is to connect the board to a monitor,
121configure test mode, activate test mode, and then disconnect the cable
122and connect it to your test equipment of choice. For example, one
123sequence of commands could be::
124
125        echo 1 > /sys/kernel/debug/dri/1/DP-1/test/enhanced
126        echo tps1 > /sys/kernel/debug/dri/1/DP-1/test/pattern
127        echo 1620000000 > /sys/kernel/debug/dri/1/DP-1/test/rate
128        echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_aux_errors
129        echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_hpd
130        echo 1 > /sys/kernel/debug/dri/1/DP-1/test/active
131
132at which point the cable could be disconnected from the monitor.
133
134Internals
135---------
136
137.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_disp.h
138
139.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_dpsub.h
140
141.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_kms.h
142
143.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_disp.c
144
145.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_dp.c
146
147.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_dpsub.c
148
149.. kernel-doc:: drivers/gpu/drm/xlnx/zynqmp_kms.c
150