Skip to content

Commit 1539f71

Browse files
committed
Merge tag 'drm-misc-next-2021-04-01' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 5.13: UAPI Changes: Cross-subsystem Changes: Core Changes: - mst: Improve topology logging - edid: Rework and improvements for displayid Driver Changes: - anx7625: Regulators support - bridge: Support for the Chipone ICN6211, Lontium LT8912B - lt9611: Fix 4k panels handling Signed-off-by: Dave Airlie <[email protected]> From: Maxime Ripard <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/20210401110552.2b3yetlgsjtlotcn@gilmour
2 parents fb457e0 + 6c74498 commit 1539f71

File tree

90 files changed

+4724
-577
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+4724
-577
lines changed

Documentation/devicetree/bindings/display/bridge/analogix,anx7625.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ properties:
3434
description: used for reset chip control, RESET_N pin B7.
3535
maxItems: 1
3636

37+
vdd10-supply:
38+
description: Regulator that provides the supply 1.0V power.
39+
40+
vdd18-supply:
41+
description: Regulator that provides the supply 1.8V power.
42+
43+
vdd33-supply:
44+
description: Regulator that provides the supply 3.3V power.
45+
3746
ports:
3847
$ref: /schemas/graph.yaml#/properties/ports
3948

@@ -55,6 +64,9 @@ properties:
5564
required:
5665
- compatible
5766
- reg
67+
- vdd10-supply
68+
- vdd18-supply
69+
- vdd33-supply
5870
- ports
5971

6072
additionalProperties: false
@@ -72,6 +84,9 @@ examples:
7284
reg = <0x58>;
7385
enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
7486
reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
87+
vdd10-supply = <&pp1000_mipibrdg>;
88+
vdd18-supply = <&pp1800_mipibrdg>;
89+
vdd33-supply = <&pp3300_mipibrdg>;
7590
7691
ports {
7792
#address-cells = <1>;
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/display/bridge/chipone,icn6211.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Chipone ICN6211 MIPI-DSI to RGB Converter bridge
8+
9+
maintainers:
10+
- Jagan Teki <[email protected]>
11+
12+
description: |
13+
ICN6211 is MIPI-DSI to RGB Converter bridge from chipone.
14+
15+
It has a flexible configuration of MIPI DSI signal input and
16+
produce RGB565, RGB666, RGB888 output format.
17+
18+
properties:
19+
compatible:
20+
enum:
21+
- chipone,icn6211
22+
23+
reg:
24+
maxItems: 1
25+
description: virtual channel number of a DSI peripheral
26+
27+
enable-gpios:
28+
description: Bridge EN pin, chip is reset when EN is low.
29+
30+
vdd1-supply:
31+
description: A 1.8V/2.5V/3.3V supply that power the MIPI RX.
32+
33+
vdd2-supply:
34+
description: A 1.8V/2.5V/3.3V supply that power the PLL.
35+
36+
vdd3-supply:
37+
description: A 1.8V/2.5V/3.3V supply that power the RGB output.
38+
39+
ports:
40+
$ref: /schemas/graph.yaml#/properties/ports
41+
42+
properties:
43+
port@0:
44+
$ref: /schemas/graph.yaml#/properties/port
45+
description:
46+
Video port for MIPI DSI input
47+
48+
port@1:
49+
$ref: /schemas/graph.yaml#/properties/port
50+
description:
51+
Video port for MIPI DPI output (panel or connector).
52+
53+
required:
54+
- port@0
55+
- port@1
56+
57+
required:
58+
- compatible
59+
- reg
60+
- enable-gpios
61+
- ports
62+
63+
additionalProperties: false
64+
65+
examples:
66+
- |
67+
#include <dt-bindings/gpio/gpio.h>
68+
69+
dsi {
70+
#address-cells = <1>;
71+
#size-cells = <0>;
72+
73+
bridge@0 {
74+
compatible = "chipone,icn6211";
75+
reg = <0>;
76+
enable-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */
77+
78+
ports {
79+
#address-cells = <1>;
80+
#size-cells = <0>;
81+
82+
port@0 {
83+
reg = <0>;
84+
85+
bridge_in_dsi: endpoint {
86+
remote-endpoint = <&dsi_out_bridge>;
87+
};
88+
};
89+
90+
port@1 {
91+
reg = <1>;
92+
93+
bridge_out_panel: endpoint {
94+
remote-endpoint = <&panel_out_bridge>;
95+
};
96+
};
97+
};
98+
};
99+
};
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/display/bridge/lontium,lt8912b.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Lontium LT8912B MIPI to HDMI Bridge
8+
9+
maintainers:
10+
- Adrien Grassein <[email protected]>
11+
12+
description: |
13+
The LT8912B is a bridge device which convert DSI to HDMI
14+
15+
properties:
16+
compatible:
17+
enum:
18+
- lontium,lt8912b
19+
20+
reg:
21+
maxItems: 1
22+
23+
reset-gpios:
24+
maxItems: 1
25+
description: GPIO connected to active high RESET pin.
26+
27+
ports:
28+
$ref: /schemas/graph.yaml#/properties/ports
29+
30+
properties:
31+
port@0:
32+
$ref: /schemas/graph.yaml#/properties/port
33+
description:
34+
Primary MIPI port for MIPI input
35+
36+
properties:
37+
endpoint:
38+
$ref: /schemas/media/video-interfaces.yaml#
39+
unevaluatedProperties: false
40+
41+
properties:
42+
data-lanes: true
43+
44+
required:
45+
- data-lanes
46+
47+
port@1:
48+
$ref: /schemas/graph.yaml#/properties/port
49+
description: |
50+
HDMI port, should be connected to a node compatible with the
51+
hdmi-connector binding.
52+
53+
required:
54+
- port@0
55+
- port@1
56+
57+
required:
58+
- compatible
59+
- reg
60+
- reset-gpios
61+
- ports
62+
63+
additionalProperties: false
64+
65+
examples:
66+
- |
67+
#include <dt-bindings/gpio/gpio.h>
68+
69+
i2c4 {
70+
#address-cells = <1>;
71+
#size-cells = <0>;
72+
73+
hdmi-bridge@48 {
74+
compatible = "lontium,lt8912b";
75+
reg = <0x48>;
76+
reset-gpios = <&max7323 0 GPIO_ACTIVE_LOW>;
77+
78+
ports {
79+
#address-cells = <1>;
80+
#size-cells = <0>;
81+
82+
port@0 {
83+
reg = <0>;
84+
85+
hdmi_out_in: endpoint {
86+
data-lanes = <0 1 2 3>;
87+
remote-endpoint = <&mipi_dsi_out>;
88+
};
89+
};
90+
91+
port@1 {
92+
reg = <1>;
93+
94+
endpoint {
95+
remote-endpoint = <&hdmi_in>;
96+
};
97+
};
98+
};
99+
};
100+
};
101+
102+
...

Documentation/devicetree/bindings/display/panel/panel-simple.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ properties:
161161
# Innolux Corporation 12.1" G121X1-L03 XGA (1024x768) TFT LCD panel
162162
- innolux,g121x1-l03
163163
# Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel
164+
- innolux,n116bca-ea1
165+
# Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel
164166
- innolux,n116bge
165167
# InnoLux 13.3" FHD (1920x1080) eDP TFT LCD panel
166168
- innolux,n125hce-gn1

Documentation/driver-api/dma-buf.rst

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,3 +257,79 @@ fences in the kernel. This means:
257257
userspace is allowed to use userspace fencing or long running compute
258258
workloads. This also means no implicit fencing for shared buffers in these
259259
cases.
260+
261+
Recoverable Hardware Page Faults Implications
262+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
263+
264+
Modern hardware supports recoverable page faults, which has a lot of
265+
implications for DMA fences.
266+
267+
First, a pending page fault obviously holds up the work that's running on the
268+
accelerator and a memory allocation is usually required to resolve the fault.
269+
But memory allocations are not allowed to gate completion of DMA fences, which
270+
means any workload using recoverable page faults cannot use DMA fences for
271+
synchronization. Synchronization fences controlled by userspace must be used
272+
instead.
273+
274+
On GPUs this poses a problem, because current desktop compositor protocols on
275+
Linux rely on DMA fences, which means without an entirely new userspace stack
276+
built on top of userspace fences, they cannot benefit from recoverable page
277+
faults. Specifically this means implicit synchronization will not be possible.
278+
The exception is when page faults are only used as migration hints and never to
279+
on-demand fill a memory request. For now this means recoverable page
280+
faults on GPUs are limited to pure compute workloads.
281+
282+
Furthermore GPUs usually have shared resources between the 3D rendering and
283+
compute side, like compute units or command submission engines. If both a 3D
284+
job with a DMA fence and a compute workload using recoverable page faults are
285+
pending they could deadlock:
286+
287+
- The 3D workload might need to wait for the compute job to finish and release
288+
hardware resources first.
289+
290+
- The compute workload might be stuck in a page fault, because the memory
291+
allocation is waiting for the DMA fence of the 3D workload to complete.
292+
293+
There are a few options to prevent this problem, one of which drivers need to
294+
ensure:
295+
296+
- Compute workloads can always be preempted, even when a page fault is pending
297+
and not yet repaired. Not all hardware supports this.
298+
299+
- DMA fence workloads and workloads which need page fault handling have
300+
independent hardware resources to guarantee forward progress. This could be
301+
achieved through e.g. through dedicated engines and minimal compute unit
302+
reservations for DMA fence workloads.
303+
304+
- The reservation approach could be further refined by only reserving the
305+
hardware resources for DMA fence workloads when they are in-flight. This must
306+
cover the time from when the DMA fence is visible to other threads up to
307+
moment when fence is completed through dma_fence_signal().
308+
309+
- As a last resort, if the hardware provides no useful reservation mechanics,
310+
all workloads must be flushed from the GPU when switching between jobs
311+
requiring DMA fences or jobs requiring page fault handling: This means all DMA
312+
fences must complete before a compute job with page fault handling can be
313+
inserted into the scheduler queue. And vice versa, before a DMA fence can be
314+
made visible anywhere in the system, all compute workloads must be preempted
315+
to guarantee all pending GPU page faults are flushed.
316+
317+
- Only a fairly theoretical option would be to untangle these dependencies when
318+
allocating memory to repair hardware page faults, either through separate
319+
memory blocks or runtime tracking of the full dependency graph of all DMA
320+
fences. This results very wide impact on the kernel, since resolving the page
321+
on the CPU side can itself involve a page fault. It is much more feasible and
322+
robust to limit the impact of handling hardware page faults to the specific
323+
driver.
324+
325+
Note that workloads that run on independent hardware like copy engines or other
326+
GPUs do not have any impact. This allows us to keep using DMA fences internally
327+
in the kernel even for resolving hardware page faults, e.g. by using copy
328+
engines to clear or copy memory needed to resolve the page fault.
329+
330+
In some ways this page fault problem is a special case of the `Infinite DMA
331+
Fences` discussions: Infinite fences from compute workloads are allowed to
332+
depend on DMA fences, but not the other way around. And not even the page fault
333+
problem is new, because some other CPU thread in userspace might
334+
hit a page fault which holds up a userspace fence - supporting page faults on
335+
GPUs doesn't anything fundamentally new.

Documentation/gpu/todo.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ Outside DRM
677677
Convert fbdev drivers to DRM
678678
----------------------------
679679

680-
There are plenty of fbdev drivers for older hardware. Some hwardware has
680+
There are plenty of fbdev drivers for older hardware. Some hardware has
681681
become obsolete, but some still provides good(-enough) framebuffers. The
682682
drivers that are still useful should be converted to DRM and afterwards
683683
removed from fbdev.

MAINTAINERS

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5568,6 +5568,12 @@ S: Maintained
55685568
F: Documentation/devicetree/bindings/display/panel/boe,himax8279d.yaml
55695569
F: drivers/gpu/drm/panel/panel-boe-himax8279d.c
55705570

5571+
DRM DRIVER FOR CHIPONE ICN6211 MIPI-DSI to RGB CONVERTER BRIDGE
5572+
M: Jagan Teki <[email protected]>
5573+
S: Maintained
5574+
F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
5575+
F: drivers/gpu/drm/bridge/chipone-icn6211.c
5576+
55715577
DRM DRIVER FOR FARADAY TVE200 TV ENCODER
55725578
M: Linus Walleij <[email protected]>
55735579
S: Maintained
@@ -5586,6 +5592,14 @@ S: Maintained
55865592
F: Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.yaml
55875593
F: drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c
55885594

5595+
DRM DRIVER FOR GENERIC USB DISPLAY
5596+
M: Noralf Trønnes <[email protected]>
5597+
S: Maintained
5598+
W: https://github.com/notro/gud/wiki
5599+
T: git git://anongit.freedesktop.org/drm/drm-misc
5600+
F: drivers/gpu/drm/gud/
5601+
F: include/drm/gud.h
5602+
55895603
DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS
55905604
M: Hans de Goede <[email protected]>
55915605
S: Maintained
@@ -5894,6 +5908,7 @@ F: drivers/gpu/drm/atmel-hlcdc/
58945908
DRM DRIVERS FOR BRIDGE CHIPS
58955909
M: Andrzej Hajda <[email protected]>
58965910
M: Neil Armstrong <[email protected]>
5911+
M: Robert Foss <[email protected]>
58975912
R: Laurent Pinchart <[email protected]>
58985913
R: Jonas Karlman <[email protected]>
58995914
R: Jernej Skrabec <[email protected]>
@@ -10460,6 +10475,12 @@ S: Maintained
1046010475
T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
1046110476
F: drivers/hid/hid-lg-g15.c
1046210477

10478+
LONTIUM LT8912B MIPI TO HDMI BRIDGE
10479+
M: Adrien Grassein <[email protected]>
10480+
S: Maintained
10481+
F: Documentation/devicetree/bindings/display/bridge/lontium,lt8912b.yaml
10482+
F: drivers/gpu/drm/bridge/lontium-lt8912b.c
10483+
1046310484
LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
1046410485
M: Sathya Prakash <[email protected]>
1046510486
M: Sreekanth Reddy <[email protected]>

drivers/gpu/drm/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,8 @@ source "drivers/gpu/drm/tidss/Kconfig"
384384

385385
source "drivers/gpu/drm/xlnx/Kconfig"
386386

387+
source "drivers/gpu/drm/gud/Kconfig"
388+
387389
# Keep legacy drivers last
388390

389391
menuconfig DRM_LEGACY

0 commit comments

Comments
 (0)