diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-28 20:49:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-28 20:49:53 -0400 |
commit | 53b3b6bbfde6aae8d1ededc86ad4e0e1e00eb5f8 (patch) | |
tree | b29473f21270aefd113b298c9402be8b4b3c91b4 /Documentation | |
parent | 746bb4ed6d626f3f9e431a7f9b20504538e62ded (diff) | |
parent | f2bfc71aee75feff33ca659322b72ffeed5a243d (diff) |
Merge tag 'drm-next-2018-10-24' of git://anongit.freedesktop.org/drm/drm
Pull drm updates from Dave Airlie:
"This is going to rebuild more than drm as it adds a new helper to
list.h for doing bulk updates. Seemed like a reasonable addition to
me.
Otherwise the usual merge window stuff lots of i915 and amdgpu, not so
much nouveau, and piles of everything else.
Core:
- Adds a new list.h helper for doing bulk list updates for TTM.
- Don't leak fb address in smem_start to userspace (comes with EXPORT
workaround for people using mali out of tree hacks)
- udmabuf device to turn memfd regions into dma-buf
- Per-plane blend mode property
- ref/unref replacements with get/put
- fbdev conflicting framebuffers code cleaned up
- host-endian format variants
- panel orientation quirk for Acer One 10
bridge:
- TI SN65DSI86 chip support
vkms:
- GEM support.
- Cursor support
amdgpu:
- Merge amdkfd and amdgpu into one module
- CEC over DP AUX support
- Picasso APU support + VCN dynamic powergating
- Raven2 APU support
- Vega20 enablement + kfd support
- ACP powergating improvements
- ABGR/XBGR display support
- VCN jpeg support
- xGMI support
- DC i2c/aux cleanup
- Ycbcr 4:2:0 support
- GPUVM improvements
- Powerplay and powerplay endian fixes
- Display underflow fixes
vmwgfx:
- Move vmwgfx specific TTM code to vmwgfx
- Split out vmwgfx buffer/resource validation code
- Atomic operation rework
bochs:
- use more helpers
- format/byteorder improvements
qxl:
- use more helpers
i915:
- GGTT coherency getparam
- Turn off resource streamer API
- More Icelake enablement + DMC firmware
- Full PPGTT for Ivybridge, Haswell and Valleyview
- DDB distribution based on resolution
- Limited range DP display support
nouveau:
- CEC over DP AUX support
- Initial HDMI 2.0 support
virtio-gpu:
- vmap support for PRIME objects
tegra:
- Initial Tegra194 support
- DMA/IOMMU integration fixes
msm:
- a6xx perf improvements + clock prefix
- GPU preemption optimisations
- a6xx devfreq support
- cursor support
rockchip:
- PX30 support
- rgb output interface support
mediatek:
- HDMI output support on mt2701 and mt7623
rcar-du:
- Interlaced modes on Gen3
- LVDS on R8A77980
- D3 and E3 SoC support
hisilicon:
- misc fixes
mxsfb:
- runtime pm support
sun4i:
- R40 TCON support
- Allwinner A64 support
- R40 HDMI support
omapdrm:
- Driver rework changing display pipeline ordering to use common code
- DMM memory barrier and irq fixes
- Errata workarounds
exynos:
- out-bridge support for LVDS bridge driver
- Samsung 16x16 tiled format support
- Plane alpha and pixel blend mode support
tilcdc:
- suspend/resume update
mali-dp:
- misc updates"
* tag 'drm-next-2018-10-24' of git://anongit.freedesktop.org/drm/drm: (1382 commits)
firmware/dmc/icl: Add missing MODULE_FIRMWARE() for Icelake.
drm/i915/icl: Fix signal_levels
drm/i915/icl: Fix DDI/TC port clk_off bits
drm/i915/icl: create function to identify combophy port
drm/i915/gen9+: Fix initial readout for Y tiled framebuffers
drm/i915: Large page offsets for pread/pwrite
drm/i915/selftests: Disable shrinker across mmap-exhaustion
drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit panel's native mode
drm/i915: Fix intel_dp_mst_best_encoder()
drm/i915: Skip vcpi allocation for MSTB ports that are gone
drm/i915: Don't unset intel_connector->mst_port
drm/i915: Only reset seqno if actually idle
drm/i915: Use the correct crtc when sanitizing plane mapping
drm/i915: Restore vblank interrupts earlier
drm/i915: Check fb stride against plane max stride
drm/amdgpu/vcn:Fix uninitialized symbol error
drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003)
drm/amd/amdgpu: Fix debugfs error handling
drm/amdgpu: Update gc_9_0 golden settings.
drm/amd/powerplay: update PPtable with DC BTC and Tvr SocLimit fields
...
Diffstat (limited to 'Documentation')
16 files changed, 396 insertions, 93 deletions
diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt index 82f2acb3d374..0398aec488ac 100644 --- a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt +++ b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt | |||
@@ -15,6 +15,13 @@ Required children nodes: | |||
15 | to external devices using the OF graph reprensentation (see ../graph.txt). | 15 | to external devices using the OF graph reprensentation (see ../graph.txt). |
16 | At least one port node is required. | 16 | At least one port node is required. |
17 | 17 | ||
18 | Optional properties in grandchild nodes: | ||
19 | Any endpoint grandchild node may specify a desired video interface | ||
20 | according to ../../media/video-interfaces.txt, specifically | ||
21 | - bus-width: recognized values are <12>, <16>, <18> and <24>, and | ||
22 | override any output mode selection heuristic, forcing "rgb444", | ||
23 | "rgb565", "rgb666" and "rgb888" respectively. | ||
24 | |||
18 | Example: | 25 | Example: |
19 | 26 | ||
20 | hlcdc: hlcdc@f0030000 { | 27 | hlcdc: hlcdc@f0030000 { |
@@ -50,3 +57,19 @@ Example: | |||
50 | #pwm-cells = <3>; | 57 | #pwm-cells = <3>; |
51 | }; | 58 | }; |
52 | }; | 59 | }; |
60 | |||
61 | Example 2: With a video interface override to force rgb565; as above | ||
62 | but with these changes/additions: | ||
63 | |||
64 | &hlcdc { | ||
65 | hlcdc-display-controller { | ||
66 | pinctrl-names = "default"; | ||
67 | pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb565>; | ||
68 | |||
69 | port@0 { | ||
70 | hlcdc_panel_output: endpoint@0 { | ||
71 | bus-width = <16>; | ||
72 | }; | ||
73 | }; | ||
74 | }; | ||
75 | }; | ||
diff --git a/Documentation/devicetree/bindings/display/bridge/lvds-transmitter.txt b/Documentation/devicetree/bindings/display/bridge/lvds-transmitter.txt index fd39ad34c383..50220190c203 100644 --- a/Documentation/devicetree/bindings/display/bridge/lvds-transmitter.txt +++ b/Documentation/devicetree/bindings/display/bridge/lvds-transmitter.txt | |||
@@ -22,7 +22,13 @@ among others. | |||
22 | 22 | ||
23 | Required properties: | 23 | Required properties: |
24 | 24 | ||
25 | - compatible: Must be "lvds-encoder" | 25 | - compatible: Must be one or more of the following |
26 | - "ti,ds90c185" for the TI DS90C185 FPD-Link Serializer | ||
27 | - "lvds-encoder" for a generic LVDS encoder device | ||
28 | |||
29 | When compatible with the generic version, nodes must list the | ||
30 | device-specific version corresponding to the device first | ||
31 | followed by the generic version. | ||
26 | 32 | ||
27 | Required nodes: | 33 | Required nodes: |
28 | 34 | ||
diff --git a/Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt b/Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt index 4f0ab3ed3b6f..3aeb0ec06fd0 100644 --- a/Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt +++ b/Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt | |||
@@ -14,10 +14,22 @@ Required properties: | |||
14 | - "renesas,r8a7795-lvds" for R8A7795 (R-Car H3) compatible LVDS encoders | 14 | - "renesas,r8a7795-lvds" for R8A7795 (R-Car H3) compatible LVDS encoders |
15 | - "renesas,r8a7796-lvds" for R8A7796 (R-Car M3-W) compatible LVDS encoders | 15 | - "renesas,r8a7796-lvds" for R8A7796 (R-Car M3-W) compatible LVDS encoders |
16 | - "renesas,r8a77970-lvds" for R8A77970 (R-Car V3M) compatible LVDS encoders | 16 | - "renesas,r8a77970-lvds" for R8A77970 (R-Car V3M) compatible LVDS encoders |
17 | - "renesas,r8a77980-lvds" for R8A77980 (R-Car V3H) compatible LVDS encoders | ||
18 | - "renesas,r8a77990-lvds" for R8A77990 (R-Car E3) compatible LVDS encoders | ||
17 | - "renesas,r8a77995-lvds" for R8A77995 (R-Car D3) compatible LVDS encoders | 19 | - "renesas,r8a77995-lvds" for R8A77995 (R-Car D3) compatible LVDS encoders |
18 | 20 | ||
19 | - reg: Base address and length for the memory-mapped registers | 21 | - reg: Base address and length for the memory-mapped registers |
20 | - clocks: A phandle + clock-specifier pair for the functional clock | 22 | - clocks: A list of phandles + clock-specifier pairs, one for each entry in |
23 | the clock-names property. | ||
24 | - clock-names: Name of the clocks. This property is model-dependent. | ||
25 | - The functional clock, which mandatory for all models, shall be listed | ||
26 | first, and shall be named "fck". | ||
27 | - On R8A77990 and R8A77995, the LVDS encoder can use the EXTAL or | ||
28 | DU_DOTCLKINx clocks. Those clocks are optional. When supplied they must be | ||
29 | named "extal" and "dclkin.x" respectively, with "x" being the DU_DOTCLKIN | ||
30 | numerical index. | ||
31 | - When the clocks property only contains the functional clock, the | ||
32 | clock-names property may be omitted. | ||
21 | - resets: A phandle + reset specifier for the module reset | 33 | - resets: A phandle + reset specifier for the module reset |
22 | 34 | ||
23 | Required nodes: | 35 | Required nodes: |
diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt new file mode 100644 index 000000000000..0a3fbb53a16e --- /dev/null +++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt | |||
@@ -0,0 +1,87 @@ | |||
1 | SN65DSI86 DSI to eDP bridge chip | ||
2 | -------------------------------- | ||
3 | |||
4 | This is the binding for Texas Instruments SN65DSI86 bridge. | ||
5 | http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: Must be "ti,sn65dsi86" | ||
9 | - reg: i2c address of the chip, 0x2d as per datasheet | ||
10 | - enable-gpios: gpio specification for bridge_en pin (active high) | ||
11 | |||
12 | - vccio-supply: A 1.8V supply that powers up the digital IOs. | ||
13 | - vpll-supply: A 1.8V supply that powers up the displayport PLL. | ||
14 | - vcca-supply: A 1.2V supply that powers up the analog circuits. | ||
15 | - vcc-supply: A 1.2V supply that powers up the digital core. | ||
16 | |||
17 | Optional properties: | ||
18 | - interrupts-extended: Specifier for the SN65DSI86 interrupt line. | ||
19 | |||
20 | - gpio-controller: Marks the device has a GPIO controller. | ||
21 | - #gpio-cells : Should be two. The first cell is the pin number and | ||
22 | the second cell is used to specify flags. | ||
23 | See ../../gpio/gpio.txt for more information. | ||
24 | - #pwm-cells : Should be one. See ../../pwm/pwm.txt for description of | ||
25 | the cell formats. | ||
26 | |||
27 | - clock-names: should be "refclk" | ||
28 | - clocks: Specification for input reference clock. The reference | ||
29 | clock rate must be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. | ||
30 | |||
31 | - data-lanes: See ../../media/video-interface.txt | ||
32 | - lane-polarities: See ../../media/video-interface.txt | ||
33 | |||
34 | - suspend-gpios: specification for GPIO1 pin on bridge (active low) | ||
35 | |||
36 | Required nodes: | ||
37 | This device has two video ports. Their connections are modelled using the | ||
38 | OF graph bindings specified in Documentation/devicetree/bindings/graph.txt. | ||
39 | |||
40 | - Video port 0 for DSI input | ||
41 | - Video port 1 for eDP output | ||
42 | |||
43 | Example | ||
44 | ------- | ||
45 | |||
46 | edp-bridge@2d { | ||
47 | compatible = "ti,sn65dsi86"; | ||
48 | #address-cells = <1>; | ||
49 | #size-cells = <0>; | ||
50 | reg = <0x2d>; | ||
51 | |||
52 | enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; | ||
53 | suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; | ||
54 | |||
55 | interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; | ||
56 | |||
57 | vccio-supply = <&pm8916_l17>; | ||
58 | vcca-supply = <&pm8916_l6>; | ||
59 | vpll-supply = <&pm8916_l17>; | ||
60 | vcc-supply = <&pm8916_l6>; | ||
61 | |||
62 | clock-names = "refclk"; | ||
63 | clocks = <&input_refclk>; | ||
64 | |||
65 | ports { | ||
66 | #address-cells = <1>; | ||
67 | #size-cells = <0>; | ||
68 | |||
69 | port@0 { | ||
70 | reg = <0>; | ||
71 | |||
72 | edp_bridge_in: endpoint { | ||
73 | remote-endpoint = <&dsi_out>; | ||
74 | }; | ||
75 | }; | ||
76 | |||
77 | port@1 { | ||
78 | reg = <1>; | ||
79 | |||
80 | edp_bridge_out: endpoint { | ||
81 | data-lanes = <2 1 3 0>; | ||
82 | lane-polarities = <0 1 0 1>; | ||
83 | remote-endpoint = <&edp_panel_in>; | ||
84 | }; | ||
85 | }; | ||
86 | }; | ||
87 | } | ||
diff --git a/Documentation/devicetree/bindings/display/bridge/toshiba,tc358764.txt b/Documentation/devicetree/bindings/display/bridge/toshiba,tc358764.txt new file mode 100644 index 000000000000..8f9abf28a8fa --- /dev/null +++ b/Documentation/devicetree/bindings/display/bridge/toshiba,tc358764.txt | |||
@@ -0,0 +1,35 @@ | |||
1 | TC358764 MIPI-DSI to LVDS panel bridge | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "toshiba,tc358764" | ||
5 | - reg: the virtual channel number of a DSI peripheral | ||
6 | - vddc-supply: core voltage supply, 1.2V | ||
7 | - vddio-supply: I/O voltage supply, 1.8V or 3.3V | ||
8 | - vddlvds-supply: LVDS1/2 voltage supply, 3.3V | ||
9 | - reset-gpios: a GPIO spec for the reset pin | ||
10 | |||
11 | The device node can contain following 'port' child nodes, | ||
12 | according to the OF graph bindings defined in [1]: | ||
13 | 0: DSI Input, not required, if the bridge is DSI controlled | ||
14 | 1: LVDS Output, mandatory | ||
15 | |||
16 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
17 | |||
18 | Example: | ||
19 | |||
20 | bridge@0 { | ||
21 | reg = <0>; | ||
22 | compatible = "toshiba,tc358764"; | ||
23 | vddc-supply = <&vcc_1v2_reg>; | ||
24 | vddio-supply = <&vcc_1v8_reg>; | ||
25 | vddlvds-supply = <&vcc_3v3_reg>; | ||
26 | reset-gpios = <&gpd1 6 GPIO_ACTIVE_LOW>; | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | port@1 { | ||
30 | reg = <1>; | ||
31 | lvds_ep: endpoint { | ||
32 | remote-endpoint = <&panel_ep>; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
diff --git a/Documentation/devicetree/bindings/display/exynos/exynos_dsim.txt b/Documentation/devicetree/bindings/display/exynos/exynos_dsim.txt index 2fff8b406f4c..be377786e8cd 100644 --- a/Documentation/devicetree/bindings/display/exynos/exynos_dsim.txt +++ b/Documentation/devicetree/bindings/display/exynos/exynos_dsim.txt | |||
@@ -21,6 +21,9 @@ Required properties: | |||
21 | - samsung,pll-clock-frequency: specifies frequency of the oscillator clock | 21 | - samsung,pll-clock-frequency: specifies frequency of the oscillator clock |
22 | - #address-cells, #size-cells: should be set respectively to <1> and <0> | 22 | - #address-cells, #size-cells: should be set respectively to <1> and <0> |
23 | according to DSI host bindings (see MIPI DSI bindings [1]) | 23 | according to DSI host bindings (see MIPI DSI bindings [1]) |
24 | - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst | ||
25 | mode | ||
26 | - samsung,esc-clock-frequency: specifies DSI frequency in escape mode | ||
24 | 27 | ||
25 | Optional properties: | 28 | Optional properties: |
26 | - power-domains: a phandle to DSIM power domain node | 29 | - power-domains: a phandle to DSIM power domain node |
@@ -29,25 +32,9 @@ Child nodes: | |||
29 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). | 32 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). |
30 | 33 | ||
31 | Video interfaces: | 34 | Video interfaces: |
32 | Device node can contain video interface port nodes according to [2]. | 35 | Device node can contain following video interface port nodes according to [2]: |
33 | The following are properties specific to those nodes: | 36 | 0: RGB input, |
34 | 37 | 1: DSI output | |
35 | port node inbound: | ||
36 | - reg: (required) must be 0. | ||
37 | port node outbound: | ||
38 | - reg: (required) must be 1. | ||
39 | |||
40 | endpoint node connected from mic node (reg = 0): | ||
41 | - remote-endpoint: specifies the endpoint in mic node. This node is required | ||
42 | for Exynos5433 mipi dsi. So mic can access to panel node | ||
43 | throughout this dsi node. | ||
44 | endpoint node connected to panel node (reg = 1): | ||
45 | - remote-endpoint: specifies the endpoint in panel node. This node is | ||
46 | required in all kinds of exynos mipi dsi to represent | ||
47 | the connection between mipi dsi and panel. | ||
48 | - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst | ||
49 | mode | ||
50 | - samsung,esc-clock-frequency: specifies DSI frequency in escape mode | ||
51 | 38 | ||
52 | [1]: Documentation/devicetree/bindings/display/mipi-dsi-bus.txt | 39 | [1]: Documentation/devicetree/bindings/display/mipi-dsi-bus.txt |
53 | [2]: Documentation/devicetree/bindings/media/video-interfaces.txt | 40 | [2]: Documentation/devicetree/bindings/media/video-interfaces.txt |
diff --git a/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt b/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt index 973c27273772..a336599f6c03 100644 --- a/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt +++ b/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt | |||
@@ -16,7 +16,7 @@ The following assumes that only a single peripheral is connected to a DSI | |||
16 | host. Experience shows that this is true for the large majority of setups. | 16 | host. Experience shows that this is true for the large majority of setups. |
17 | 17 | ||
18 | DSI host | 18 | DSI host |
19 | -------- | 19 | ======== |
20 | 20 | ||
21 | In addition to the standard properties and those defined by the parent bus of | 21 | In addition to the standard properties and those defined by the parent bus of |
22 | a DSI host, the following properties apply to a node representing a DSI host. | 22 | a DSI host, the following properties apply to a node representing a DSI host. |
@@ -29,12 +29,24 @@ Required properties: | |||
29 | - #size-cells: Should be 0. There are cases where it makes sense to use a | 29 | - #size-cells: Should be 0. There are cases where it makes sense to use a |
30 | different value here. See below. | 30 | different value here. See below. |
31 | 31 | ||
32 | Optional properties: | ||
33 | - clock-master: boolean. Should be enabled if the host is being used in | ||
34 | conjunction with another DSI host to drive the same peripheral. Hardware | ||
35 | supporting such a configuration generally requires the data on both the busses | ||
36 | to be driven by the same clock. Only the DSI host instance controlling this | ||
37 | clock should contain this property. | ||
38 | |||
32 | DSI peripheral | 39 | DSI peripheral |
33 | -------------- | 40 | ============== |
41 | |||
42 | Peripherals with DSI as control bus, or no control bus | ||
43 | ------------------------------------------------------ | ||
34 | 44 | ||
35 | Peripherals are represented as child nodes of the DSI host's node. Properties | 45 | Peripherals with the DSI bus as the primary control bus, or peripherals with |
36 | described here apply to all DSI peripherals, but individual bindings may want | 46 | no control bus but use the DSI bus to transmit pixel data are represented |
37 | to define additional, device-specific properties. | 47 | as child nodes of the DSI host's node. Properties described here apply to all |
48 | DSI peripherals, but individual bindings may want to define additional, | ||
49 | device-specific properties. | ||
38 | 50 | ||
39 | Required properties: | 51 | Required properties: |
40 | - reg: The virtual channel number of a DSI peripheral. Must be in the range | 52 | - reg: The virtual channel number of a DSI peripheral. Must be in the range |
@@ -49,9 +61,37 @@ case two alternative representations can be chosen: | |||
49 | property is the number of the first virtual channel and the second cell is | 61 | property is the number of the first virtual channel and the second cell is |
50 | the number of consecutive virtual channels. | 62 | the number of consecutive virtual channels. |
51 | 63 | ||
52 | Example | 64 | Peripherals with a different control bus |
53 | ------- | 65 | ---------------------------------------- |
54 | 66 | ||
67 | There are peripherals that have I2C/SPI (or some other non-DSI bus) as the | ||
68 | primary control bus, but are also connected to a DSI bus (mostly for the data | ||
69 | path). Connections between such peripherals and a DSI host can be represented | ||
70 | using the graph bindings [1], [2]. | ||
71 | |||
72 | Peripherals that support dual channel DSI | ||
73 | ----------------------------------------- | ||
74 | |||
75 | Peripherals with higher bandwidth requirements can be connected to 2 DSI | ||
76 | busses. Each DSI bus/channel drives some portion of the pixel data (generally | ||
77 | left/right half of each line of the display, or even/odd lines of the display). | ||
78 | The graph bindings should be used to represent the multiple DSI busses that are | ||
79 | connected to this peripheral. Each DSI host's output endpoint can be linked to | ||
80 | an input endpoint of the DSI peripheral. | ||
81 | |||
82 | [1] Documentation/devicetree/bindings/graph.txt | ||
83 | [2] Documentation/devicetree/bindings/media/video-interfaces.txt | ||
84 | |||
85 | Examples | ||
86 | ======== | ||
87 | - (1), (2) and (3) are examples of a DSI host and peripheral on the DSI bus | ||
88 | with different virtual channel configurations. | ||
89 | - (4) is an example of a peripheral on a I2C control bus connected to a | ||
90 | DSI host using of-graph bindings. | ||
91 | - (5) is an example of 2 DSI hosts driving a dual-channel DSI peripheral, | ||
92 | which uses I2C as its primary control bus. | ||
93 | |||
94 | 1) | ||
55 | dsi-host { | 95 | dsi-host { |
56 | ... | 96 | ... |
57 | 97 | ||
@@ -67,6 +107,7 @@ Example | |||
67 | ... | 107 | ... |
68 | }; | 108 | }; |
69 | 109 | ||
110 | 2) | ||
70 | dsi-host { | 111 | dsi-host { |
71 | ... | 112 | ... |
72 | 113 | ||
@@ -82,6 +123,7 @@ Example | |||
82 | ... | 123 | ... |
83 | }; | 124 | }; |
84 | 125 | ||
126 | 3) | ||
85 | dsi-host { | 127 | dsi-host { |
86 | ... | 128 | ... |
87 | 129 | ||
@@ -96,3 +138,98 @@ Example | |||
96 | 138 | ||
97 | ... | 139 | ... |
98 | }; | 140 | }; |
141 | |||
142 | 4) | ||
143 | i2c-host { | ||
144 | ... | ||
145 | |||
146 | dsi-bridge@35 { | ||
147 | compatible = "..."; | ||
148 | reg = <0x35>; | ||
149 | |||
150 | ports { | ||
151 | ... | ||
152 | |||
153 | port { | ||
154 | bridge_mipi_in: endpoint { | ||
155 | remote-endpoint = <&host_mipi_out>; | ||
156 | }; | ||
157 | }; | ||
158 | }; | ||
159 | }; | ||
160 | }; | ||
161 | |||
162 | dsi-host { | ||
163 | ... | ||
164 | |||
165 | ports { | ||
166 | ... | ||
167 | |||
168 | port { | ||
169 | host_mipi_out: endpoint { | ||
170 | remote-endpoint = <&bridge_mipi_in>; | ||
171 | }; | ||
172 | }; | ||
173 | }; | ||
174 | }; | ||
175 | |||
176 | 5) | ||
177 | i2c-host { | ||
178 | dsi-bridge@35 { | ||
179 | compatible = "..."; | ||
180 | reg = <0x35>; | ||
181 | |||
182 | ports { | ||
183 | #address-cells = <1>; | ||
184 | #size-cells = <0>; | ||
185 | |||
186 | port@0 { | ||
187 | reg = <0>; | ||
188 | dsi0_in: endpoint { | ||
189 | remote-endpoint = <&dsi0_out>; | ||
190 | }; | ||
191 | }; | ||
192 | |||
193 | port@1 { | ||
194 | reg = <1>; | ||
195 | dsi1_in: endpoint { | ||
196 | remote-endpoint = <&dsi1_out>; | ||
197 | }; | ||
198 | }; | ||
199 | }; | ||
200 | }; | ||
201 | }; | ||
202 | |||
203 | dsi0-host { | ||
204 | ... | ||
205 | |||
206 | /* | ||
207 | * this DSI instance drives the clock for both the host | ||
208 | * controllers | ||
209 | */ | ||
210 | clock-master; | ||
211 | |||
212 | ports { | ||
213 | ... | ||
214 | |||
215 | port { | ||
216 | dsi0_out: endpoint { | ||
217 | remote-endpoint = <&dsi0_in>; | ||
218 | }; | ||
219 | }; | ||
220 | }; | ||
221 | }; | ||
222 | |||
223 | dsi1-host { | ||
224 | ... | ||
225 | |||
226 | ports { | ||
227 | ... | ||
228 | |||
229 | port { | ||
230 | dsi1_out: endpoint { | ||
231 | remote-endpoint = <&dsi1_in>; | ||
232 | }; | ||
233 | }; | ||
234 | }; | ||
235 | }; | ||
diff --git a/Documentation/devicetree/bindings/display/renesas,du.txt b/Documentation/devicetree/bindings/display/renesas,du.txt index ec9d34be2ff7..9de67be632d1 100644 --- a/Documentation/devicetree/bindings/display/renesas,du.txt +++ b/Documentation/devicetree/bindings/display/renesas,du.txt | |||
@@ -15,6 +15,8 @@ Required Properties: | |||
15 | - "renesas,du-r8a7796" for R8A7796 (R-Car M3-W) compatible DU | 15 | - "renesas,du-r8a7796" for R8A7796 (R-Car M3-W) compatible DU |
16 | - "renesas,du-r8a77965" for R8A77965 (R-Car M3-N) compatible DU | 16 | - "renesas,du-r8a77965" for R8A77965 (R-Car M3-N) compatible DU |
17 | - "renesas,du-r8a77970" for R8A77970 (R-Car V3M) compatible DU | 17 | - "renesas,du-r8a77970" for R8A77970 (R-Car V3M) compatible DU |
18 | - "renesas,du-r8a77980" for R8A77980 (R-Car V3H) compatible DU | ||
19 | - "renesas,du-r8a77990" for R8A77990 (R-Car E3) compatible DU | ||
18 | - "renesas,du-r8a77995" for R8A77995 (R-Car D3) compatible DU | 20 | - "renesas,du-r8a77995" for R8A77995 (R-Car D3) compatible DU |
19 | 21 | ||
20 | - reg: the memory-mapped I/O registers base address and length | 22 | - reg: the memory-mapped I/O registers base address and length |
@@ -61,6 +63,8 @@ corresponding to each DU output. | |||
61 | R8A7796 (R-Car M3-W) DPAD 0 HDMI 0 LVDS 0 - | 63 | R8A7796 (R-Car M3-W) DPAD 0 HDMI 0 LVDS 0 - |
62 | R8A77965 (R-Car M3-N) DPAD 0 HDMI 0 LVDS 0 - | 64 | R8A77965 (R-Car M3-N) DPAD 0 HDMI 0 LVDS 0 - |
63 | R8A77970 (R-Car V3M) DPAD 0 LVDS 0 - - | 65 | R8A77970 (R-Car V3M) DPAD 0 LVDS 0 - - |
66 | R8A77980 (R-Car V3H) DPAD 0 LVDS 0 - - | ||
67 | R8A77990 (R-Car E3) DPAD 0 LVDS 0 LVDS 1 - | ||
64 | R8A77995 (R-Car D3) DPAD 0 LVDS 0 LVDS 1 - | 68 | R8A77995 (R-Car D3) DPAD 0 LVDS 0 LVDS 1 - |
65 | 69 | ||
66 | 70 | ||
diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt index eeda3597011e..b79e5769f0ae 100644 --- a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt +++ b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt | |||
@@ -8,6 +8,9 @@ Required properties: | |||
8 | - compatible: value should be one of the following | 8 | - compatible: value should be one of the following |
9 | "rockchip,rk3036-vop"; | 9 | "rockchip,rk3036-vop"; |
10 | "rockchip,rk3126-vop"; | 10 | "rockchip,rk3126-vop"; |
11 | "rockchip,px30-vop-lit"; | ||
12 | "rockchip,px30-vop-big"; | ||
13 | "rockchip,rk3188-vop"; | ||
11 | "rockchip,rk3288-vop"; | 14 | "rockchip,rk3288-vop"; |
12 | "rockchip,rk3368-vop"; | 15 | "rockchip,rk3368-vop"; |
13 | "rockchip,rk3366-vop"; | 16 | "rockchip,rk3366-vop"; |
diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index f8773ecb7525..7854fff4fc16 100644 --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt | |||
@@ -78,6 +78,7 @@ Required properties: | |||
78 | 78 | ||
79 | - compatible: value must be one of: | 79 | - compatible: value must be one of: |
80 | * "allwinner,sun8i-a83t-dw-hdmi" | 80 | * "allwinner,sun8i-a83t-dw-hdmi" |
81 | * "allwinner,sun50i-a64-dw-hdmi", "allwinner,sun8i-a83t-dw-hdmi" | ||
81 | - reg: base address and size of memory-mapped region | 82 | - reg: base address and size of memory-mapped region |
82 | - reg-io-width: See dw_hdmi.txt. Shall be 1. | 83 | - reg-io-width: See dw_hdmi.txt. Shall be 1. |
83 | - interrupts: HDMI interrupt number | 84 | - interrupts: HDMI interrupt number |
@@ -96,6 +97,9 @@ Required properties: | |||
96 | first port should be the input endpoint. The second should be the | 97 | first port should be the input endpoint. The second should be the |
97 | output, usually to an HDMI connector. | 98 | output, usually to an HDMI connector. |
98 | 99 | ||
100 | Optional properties: | ||
101 | - hvcc-supply: the VCC power supply of the controller | ||
102 | |||
99 | DWC HDMI PHY | 103 | DWC HDMI PHY |
100 | ------------ | 104 | ------------ |
101 | 105 | ||
@@ -103,6 +107,7 @@ Required properties: | |||
103 | - compatible: value must be one of: | 107 | - compatible: value must be one of: |
104 | * allwinner,sun8i-a83t-hdmi-phy | 108 | * allwinner,sun8i-a83t-hdmi-phy |
105 | * allwinner,sun8i-h3-hdmi-phy | 109 | * allwinner,sun8i-h3-hdmi-phy |
110 | * allwinner,sun8i-r40-hdmi-phy | ||
106 | * allwinner,sun50i-a64-hdmi-phy | 111 | * allwinner,sun50i-a64-hdmi-phy |
107 | - reg: base address and size of memory-mapped region | 112 | - reg: base address and size of memory-mapped region |
108 | - clocks: phandles to the clocks feeding the HDMI PHY | 113 | - clocks: phandles to the clocks feeding the HDMI PHY |
@@ -112,9 +117,9 @@ Required properties: | |||
112 | - resets: phandle to the reset controller driving the PHY | 117 | - resets: phandle to the reset controller driving the PHY |
113 | - reset-names: must be "phy" | 118 | - reset-names: must be "phy" |
114 | 119 | ||
115 | H3 and A64 HDMI PHY require additional clocks: | 120 | H3, A64 and R40 HDMI PHY require additional clocks: |
116 | - pll-0: parent of phy clock | 121 | - pll-0: parent of phy clock |
117 | - pll-1: second possible phy clock parent (A64 only) | 122 | - pll-1: second possible phy clock parent (A64/R40 only) |
118 | 123 | ||
119 | TV Encoder | 124 | TV Encoder |
120 | ---------- | 125 | ---------- |
@@ -151,6 +156,8 @@ Required properties: | |||
151 | * allwinner,sun8i-v3s-tcon | 156 | * allwinner,sun8i-v3s-tcon |
152 | * allwinner,sun9i-a80-tcon-lcd | 157 | * allwinner,sun9i-a80-tcon-lcd |
153 | * allwinner,sun9i-a80-tcon-tv | 158 | * allwinner,sun9i-a80-tcon-tv |
159 | * "allwinner,sun50i-a64-tcon-lcd", "allwinner,sun8i-a83t-tcon-lcd" | ||
160 | * "allwinner,sun50i-a64-tcon-tv", "allwinner,sun8i-a83t-tcon-tv" | ||
154 | - reg: base address and size of memory-mapped region | 161 | - reg: base address and size of memory-mapped region |
155 | - interrupts: interrupt associated to this IP | 162 | - interrupts: interrupt associated to this IP |
156 | - clocks: phandles to the clocks feeding the TCON. | 163 | - clocks: phandles to the clocks feeding the TCON. |
@@ -369,7 +376,11 @@ Required properties: | |||
369 | * allwinner,sun8i-a83t-de2-mixer-0 | 376 | * allwinner,sun8i-a83t-de2-mixer-0 |
370 | * allwinner,sun8i-a83t-de2-mixer-1 | 377 | * allwinner,sun8i-a83t-de2-mixer-1 |
371 | * allwinner,sun8i-h3-de2-mixer-0 | 378 | * allwinner,sun8i-h3-de2-mixer-0 |
379 | * allwinner,sun8i-r40-de2-mixer-0 | ||
380 | * allwinner,sun8i-r40-de2-mixer-1 | ||
372 | * allwinner,sun8i-v3s-de2-mixer | 381 | * allwinner,sun8i-v3s-de2-mixer |
382 | * allwinner,sun50i-a64-de2-mixer-0 | ||
383 | * allwinner,sun50i-a64-de2-mixer-1 | ||
373 | - reg: base address and size of the memory-mapped region. | 384 | - reg: base address and size of the memory-mapped region. |
374 | - clocks: phandles to the clocks feeding the mixer | 385 | - clocks: phandles to the clocks feeding the mixer |
375 | * bus: the mixer interface clock | 386 | * bus: the mixer interface clock |
@@ -403,6 +414,7 @@ Required properties: | |||
403 | * allwinner,sun8i-r40-display-engine | 414 | * allwinner,sun8i-r40-display-engine |
404 | * allwinner,sun8i-v3s-display-engine | 415 | * allwinner,sun8i-v3s-display-engine |
405 | * allwinner,sun9i-a80-display-engine | 416 | * allwinner,sun9i-a80-display-engine |
417 | * allwinner,sun50i-a64-display-engine | ||
406 | 418 | ||
407 | - allwinner,pipelines: list of phandle to the display engine | 419 | - allwinner,pipelines: list of phandle to the display engine |
408 | frontends (DE 1.0) or mixers (DE 2.0) available. | 420 | frontends (DE 1.0) or mixers (DE 2.0) available. |
diff --git a/Documentation/gpu/drivers.rst b/Documentation/gpu/drivers.rst index 65be325bf282..7d2d3875ff1a 100644 --- a/Documentation/gpu/drivers.rst +++ b/Documentation/gpu/drivers.rst | |||
@@ -13,6 +13,7 @@ GPU Driver Documentation | |||
13 | tve200 | 13 | tve200 |
14 | v3d | 14 | v3d |
15 | vc4 | 15 | vc4 |
16 | vkms | ||
16 | bridge/dw-hdmi | 17 | bridge/dw-hdmi |
17 | xen-front | 18 | xen-front |
18 | 19 | ||
diff --git a/Documentation/gpu/drm-kms.rst b/Documentation/gpu/drm-kms.rst index 5dee6b8a4c12..4b1501b4835b 100644 --- a/Documentation/gpu/drm-kms.rst +++ b/Documentation/gpu/drm-kms.rst | |||
@@ -287,8 +287,14 @@ Atomic Mode Setting Function Reference | |||
287 | .. kernel-doc:: drivers/gpu/drm/drm_atomic.c | 287 | .. kernel-doc:: drivers/gpu/drm/drm_atomic.c |
288 | :export: | 288 | :export: |
289 | 289 | ||
290 | .. kernel-doc:: drivers/gpu/drm/drm_atomic.c | 290 | Atomic Mode Setting IOCTL and UAPI Functions |
291 | :internal: | 291 | -------------------------------------------- |
292 | |||
293 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_uapi.c | ||
294 | :doc: overview | ||
295 | |||
296 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_uapi.c | ||
297 | :export: | ||
292 | 298 | ||
293 | CRTC Abstraction | 299 | CRTC Abstraction |
294 | ================ | 300 | ================ |
@@ -323,6 +329,12 @@ Frame Buffer Functions Reference | |||
323 | DRM Format Handling | 329 | DRM Format Handling |
324 | =================== | 330 | =================== |
325 | 331 | ||
332 | .. kernel-doc:: include/uapi/drm/drm_fourcc.h | ||
333 | :doc: overview | ||
334 | |||
335 | Format Functions Reference | ||
336 | -------------------------- | ||
337 | |||
326 | .. kernel-doc:: include/drm/drm_fourcc.h | 338 | .. kernel-doc:: include/drm/drm_fourcc.h |
327 | :internal: | 339 | :internal: |
328 | 340 | ||
@@ -560,7 +572,7 @@ Tile Group Property | |||
560 | Explicit Fencing Properties | 572 | Explicit Fencing Properties |
561 | --------------------------- | 573 | --------------------------- |
562 | 574 | ||
563 | .. kernel-doc:: drivers/gpu/drm/drm_atomic.c | 575 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_uapi.c |
564 | :doc: explicit fencing properties | 576 | :doc: explicit fencing properties |
565 | 577 | ||
566 | Existing KMS Properties | 578 | Existing KMS Properties |
diff --git a/Documentation/gpu/drm-mm.rst b/Documentation/gpu/drm-mm.rst index 21b6b72a9ba8..e725e8449e72 100644 --- a/Documentation/gpu/drm-mm.rst +++ b/Documentation/gpu/drm-mm.rst | |||
@@ -297,7 +297,7 @@ made up of several fields, the more interesting ones being: | |||
297 | struct vm_operations_struct { | 297 | struct vm_operations_struct { |
298 | void (*open)(struct vm_area_struct * area); | 298 | void (*open)(struct vm_area_struct * area); |
299 | void (*close)(struct vm_area_struct * area); | 299 | void (*close)(struct vm_area_struct * area); |
300 | int (*fault)(struct vm_fault *vmf); | 300 | vm_fault_t (*fault)(struct vm_fault *vmf); |
301 | }; | 301 | }; |
302 | 302 | ||
303 | 303 | ||
@@ -505,7 +505,7 @@ GPU Scheduler | |||
505 | Overview | 505 | Overview |
506 | -------- | 506 | -------- |
507 | 507 | ||
508 | .. kernel-doc:: drivers/gpu/drm/scheduler/gpu_scheduler.c | 508 | .. kernel-doc:: drivers/gpu/drm/scheduler/sched_main.c |
509 | :doc: Overview | 509 | :doc: Overview |
510 | 510 | ||
511 | Scheduler Function References | 511 | Scheduler Function References |
@@ -514,5 +514,5 @@ Scheduler Function References | |||
514 | .. kernel-doc:: include/drm/gpu_scheduler.h | 514 | .. kernel-doc:: include/drm/gpu_scheduler.h |
515 | :internal: | 515 | :internal: |
516 | 516 | ||
517 | .. kernel-doc:: drivers/gpu/drm/scheduler/gpu_scheduler.c | 517 | .. kernel-doc:: drivers/gpu/drm/scheduler/sched_main.c |
518 | :export: | 518 | :export: |
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index a7c150d6b63f..77c2b3c25565 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst | |||
@@ -127,7 +127,8 @@ interfaces to fix these issues: | |||
127 | the acquire context explicitly on stack and then also pass it down into | 127 | the acquire context explicitly on stack and then also pass it down into |
128 | drivers explicitly so that the legacy-on-atomic functions can use them. | 128 | drivers explicitly so that the legacy-on-atomic functions can use them. |
129 | 129 | ||
130 | Except for some driver code this is done. | 130 | Except for some driver code this is done. This task should be finished by |
131 | adding WARN_ON(!drm_drv_uses_atomic_modeset) in drm_modeset_lock_all(). | ||
131 | 132 | ||
132 | * A bunch of the vtable hooks are now in the wrong place: DRM has a split | 133 | * A bunch of the vtable hooks are now in the wrong place: DRM has a split |
133 | between core vfunc tables (named ``drm_foo_funcs``), which are used to | 134 | between core vfunc tables (named ``drm_foo_funcs``), which are used to |
@@ -137,13 +138,6 @@ interfaces to fix these issues: | |||
137 | ``_helper_funcs`` since they are not part of the core ABI. There's a | 138 | ``_helper_funcs`` since they are not part of the core ABI. There's a |
138 | ``FIXME`` comment in the kerneldoc for each such case in ``drm_crtc.h``. | 139 | ``FIXME`` comment in the kerneldoc for each such case in ``drm_crtc.h``. |
139 | 140 | ||
140 | * There's a new helper ``drm_atomic_helper_best_encoder()`` which could be | ||
141 | used by all atomic drivers which don't select the encoder for a given | ||
142 | connector at runtime. That's almost all of them, and would allow us to get | ||
143 | rid of a lot of ``best_encoder`` boilerplate in drivers. | ||
144 | |||
145 | This was almost done, but new drivers added a few more cases again. | ||
146 | |||
147 | Contact: Daniel Vetter | 141 | Contact: Daniel Vetter |
148 | 142 | ||
149 | Get rid of dev->struct_mutex from GEM drivers | 143 | Get rid of dev->struct_mutex from GEM drivers |
@@ -164,9 +158,8 @@ private lock. The tricky part is the BO free functions, since those can't | |||
164 | reliably take that lock any more. Instead state needs to be protected with | 158 | reliably take that lock any more. Instead state needs to be protected with |
165 | suitable subordinate locks or some cleanup work pushed to a worker thread. For | 159 | suitable subordinate locks or some cleanup work pushed to a worker thread. For |
166 | performance-critical drivers it might also be better to go with a more | 160 | performance-critical drivers it might also be better to go with a more |
167 | fine-grained per-buffer object and per-context lockings scheme. Currently the | 161 | fine-grained per-buffer object and per-context lockings scheme. Currently only the |
168 | following drivers still use ``struct_mutex``: ``msm``, ``omapdrm`` and | 162 | ``msm`` driver still use ``struct_mutex``. |
169 | ``udl``. | ||
170 | 163 | ||
171 | Contact: Daniel Vetter, respective driver maintainers | 164 | Contact: Daniel Vetter, respective driver maintainers |
172 | 165 | ||
@@ -190,7 +183,8 @@ Convert drivers to use simple modeset suspend/resume | |||
190 | 183 | ||
191 | Most drivers (except i915 and nouveau) that use | 184 | Most drivers (except i915 and nouveau) that use |
192 | drm_atomic_helper_suspend/resume() can probably be converted to use | 185 | drm_atomic_helper_suspend/resume() can probably be converted to use |
193 | drm_mode_config_helper_suspend/resume(). | 186 | drm_mode_config_helper_suspend/resume(). Also there's still open-coded version |
187 | of the atomic suspend/resume code in older atomic modeset drivers. | ||
194 | 188 | ||
195 | Contact: Maintainer of the driver you plan to convert | 189 | Contact: Maintainer of the driver you plan to convert |
196 | 190 | ||
@@ -246,20 +240,10 @@ Core refactorings | |||
246 | Clean up the DRM header mess | 240 | Clean up the DRM header mess |
247 | ---------------------------- | 241 | ---------------------------- |
248 | 242 | ||
249 | Currently the DRM subsystem has only one global header, ``drmP.h``. This is | 243 | The DRM subsystem originally had only one huge global header, ``drmP.h``. This |
250 | used both for functions exported to helper libraries and drivers and functions | 244 | is now split up, but many source files still include it. The remaining part of |
251 | only used internally in the ``drm.ko`` module. The goal would be to move all | 245 | the cleanup work here is to replace any ``#include <drm/drmP.h>`` by only the |
252 | header declarations not needed outside of ``drm.ko`` into | 246 | headers needed (and fixing up any missing pre-declarations in the headers). |
253 | ``drivers/gpu/drm/drm_*_internal.h`` header files. ``EXPORT_SYMBOL`` also | ||
254 | needs to be dropped for these functions. | ||
255 | |||
256 | This would nicely tie in with the below task to create kerneldoc after the API | ||
257 | is cleaned up. Or with the "hide legacy cruft better" task. | ||
258 | |||
259 | Note that this is well in progress, but ``drmP.h`` is still huge. The updated | ||
260 | plan is to switch to per-file driver API headers, which will also structure | ||
261 | the kerneldoc better. This should also allow more fine-grained ``#include`` | ||
262 | directives. | ||
263 | 247 | ||
264 | In the end no .c file should need to include ``drmP.h`` anymore. | 248 | In the end no .c file should need to include ``drmP.h`` anymore. |
265 | 249 | ||
@@ -278,26 +262,6 @@ See https://dri.freedesktop.org/docs/drm/ for what's there already. | |||
278 | 262 | ||
279 | Contact: Daniel Vetter | 263 | Contact: Daniel Vetter |
280 | 264 | ||
281 | Hide legacy cruft better | ||
282 | ------------------------ | ||
283 | |||
284 | Way back DRM supported only drivers which shadow-attached to PCI devices with | ||
285 | userspace or fbdev drivers setting up outputs. Modern DRM drivers take charge | ||
286 | of the entire device, you can spot them with the DRIVER_MODESET flag. | ||
287 | |||
288 | Unfortunately there's still large piles of legacy code around which needs to | ||
289 | be hidden so that driver writers don't accidentally end up using it. And to | ||
290 | prevent security issues in those legacy IOCTLs from being exploited on modern | ||
291 | drivers. This has multiple possible subtasks: | ||
292 | |||
293 | * Extract support code for legacy features into a ``drm-legacy.ko`` kernel | ||
294 | module and compile it only when one of the legacy drivers is enabled. | ||
295 | |||
296 | This is mostly done, the only thing left is to split up ``drm_irq.c`` into | ||
297 | legacy cruft and the parts needed by modern KMS drivers. | ||
298 | |||
299 | Contact: Daniel Vetter | ||
300 | |||
301 | Make panic handling work | 265 | Make panic handling work |
302 | ------------------------ | 266 | ------------------------ |
303 | 267 | ||
@@ -396,17 +360,12 @@ converting things over. For modeset tests we also first need a bit of | |||
396 | infrastructure to use dumb buffers for untiled buffers, to be able to run all | 360 | infrastructure to use dumb buffers for untiled buffers, to be able to run all |
397 | the non-i915 specific modeset tests. | 361 | the non-i915 specific modeset tests. |
398 | 362 | ||
399 | Contact: Daniel Vetter | 363 | Extend virtual test driver (VKMS) |
400 | 364 | --------------------------------- | |
401 | Create a virtual KMS driver for testing (vkms) | ||
402 | ---------------------------------------------- | ||
403 | |||
404 | With all the latest helpers it should be fairly simple to create a virtual KMS | ||
405 | driver useful for testing, or for running X or similar on headless machines | ||
406 | (to be able to still use the GPU). This would be similar to vgem, but aimed at | ||
407 | the modeset side. | ||
408 | 365 | ||
409 | Once the basics are there there's tons of possibilities to extend it. | 366 | See the documentation of :ref:`VKMS <vkms>` for more details. This is an ideal |
367 | internship task, since it only requires a virtual machine and can be sized to | ||
368 | fit the available time. | ||
410 | 369 | ||
411 | Contact: Daniel Vetter | 370 | Contact: Daniel Vetter |
412 | 371 | ||
diff --git a/Documentation/gpu/vkms.rst b/Documentation/gpu/vkms.rst new file mode 100644 index 000000000000..0a6ea6216e41 --- /dev/null +++ b/Documentation/gpu/vkms.rst | |||
@@ -0,0 +1,24 @@ | |||
1 | .. _vkms: | ||
2 | |||
3 | ========================================== | ||
4 | drm/vkms Virtual Kernel Modesetting | ||
5 | ========================================== | ||
6 | |||
7 | .. kernel-doc:: drivers/gpu/drm/vkms/vkms_drv.c | ||
8 | :doc: vkms (Virtual Kernel Modesetting) | ||
9 | |||
10 | TODO | ||
11 | ==== | ||
12 | |||
13 | CRC API | ||
14 | ------- | ||
15 | |||
16 | - Optimize CRC computation ``compute_crc()`` and plane blending ``blend()`` | ||
17 | |||
18 | - Use the alpha value to blend vaddr_src with vaddr_dst instead of | ||
19 | overwriting it in ``blend()``. | ||
20 | |||
21 | - Add igt test to check cleared alpha value for XRGB plane format. | ||
22 | |||
23 | - Add igt test to check extreme alpha values i.e. fully opaque and fully | ||
24 | transparent (intermediate values are affected by hw-specific rounding modes). | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index d05d93761653..af6f6ba1fe80 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -272,6 +272,7 @@ Code Seq#(hex) Include File Comments | |||
272 | 't' 90-91 linux/toshiba.h toshiba and toshiba_acpi SMM | 272 | 't' 90-91 linux/toshiba.h toshiba and toshiba_acpi SMM |
273 | 'u' 00-1F linux/smb_fs.h gone | 273 | 'u' 00-1F linux/smb_fs.h gone |
274 | 'u' 20-3F linux/uvcvideo.h USB video class host driver | 274 | 'u' 20-3F linux/uvcvideo.h USB video class host driver |
275 | 'u' 40-4f linux/udmabuf.h userspace dma-buf misc device | ||
275 | 'v' 00-1F linux/ext2_fs.h conflict! | 276 | 'v' 00-1F linux/ext2_fs.h conflict! |
276 | 'v' 00-1F linux/fs.h conflict! | 277 | 'v' 00-1F linux/fs.h conflict! |
277 | 'v' 00-0F linux/sonypi.h conflict! | 278 | 'v' 00-0F linux/sonypi.h conflict! |