diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-05 13:17:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-05 13:17:26 -0400 |
| commit | a09e9a7a4b907f2dfa9bdb2b98a1828ab4b340b2 (patch) | |
| tree | c7a2df4e887573648eeaf8f7939889046990d3f6 /Documentation/DocBook | |
| parent | 9ab073bc45b8b523cc39658925bb44bef35ca657 (diff) | |
| parent | 86a7e1224a68511d3a1ae0b7e11581b9d37723ae (diff) | |
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm tree changes from Dave Airlie:
"This is the main drm pull request, I have some overlap with sound and
arm-soc, the sound patch is acked and may conflict based on -next
reports but should be a trivial fixup, which I'll leave to you!
Highlights:
- new drivers:
MSM driver from Rob Clark
- non-drm:
switcheroo and hdmi audio driver support for secondary GPU
poweroff, so drivers can use runtime PM to poweroff the GPUs. This
can save 5 or 6W on some optimus laptops.
- drm core:
combined GEM and TTM VMA manager
per-filp mmap permission tracking
initial rendernode support (via a runtime enable for now, until we get api stable),
remove old proc support,
lots of cleanups of legacy code
hdmi vendor infoframes and 4k modes
lots of gem/prime locking and races fixes
async pageflip scaffolding
drm bridge objects
- i915:
Haswell PC8+ support and eLLC support, HDMI 4K support, initial
per-process VMA pieces, watermark reworks, convert to generic hdmi
infoframes, encoder reworking, fastboot support,
- radeon:
CIK PM support, remove 3d blit code in favour of DMA engines,
Berlin GPU support, HDMI audio fixes
- nouveau:
secondary GPU power down support for optimus laptops, lots of
fixes, use MSI, VP3 engine support
- exynos:
runtime pm support for g2d, DT support, remove non-DT,
- tda998x i2c driver:
lots of fixes for sync issues
- gma500:
lots of cleanups
- rcar:
add LVDS support, fbdev emulation,
- tegra:
just minor fixes"
* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (684 commits)
drm/exynos: Fix build error with exynos_drm_connector.c
drm/exynos: Remove non-DT support in exynos_drm_fimd
drm/exynos: Remove non-DT support in exynos_hdmi
drm/exynos: Remove non-DT support in exynos_drm_g2d
drm/exynos: Remove non-DT support in exynos_hdmiphy
drm/exynos: Remove non-DT support in exynos_ddc
drm/exynos: Make Exynos DRM drivers depend on OF
drm/exynos: Consider fallback option to allocation fail
drm/exynos: fimd: move platform data parsing to separate function
drm/exynos: fimd: get signal polarities from device tree
drm/exynos: fimd: replace struct fb_videomode with videomode
drm/exynos: check a pixel format to a particular window layer
drm/exynos: fix fimd pixel format setting
drm/exynos: Add NULL pointer check
drm/exynos: Remove redundant error messages
drm/exynos: Add missing of.h header include
drm/exynos: Remove redundant NULL check in exynos_drm_buf
drm/exynos: add device tree support for rotator
drm/exynos: Add missing includes
drm/exynos: add runtime pm interfaces to g2d driver
...
Diffstat (limited to 'Documentation/DocBook')
| -rw-r--r-- | Documentation/DocBook/drm.tmpl | 138 |
1 files changed, 97 insertions, 41 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 7d1278e7a434..ed1d6d289022 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
| @@ -156,13 +156,6 @@ | |||
| 156 | </para></listitem> | 156 | </para></listitem> |
| 157 | </varlistentry> | 157 | </varlistentry> |
| 158 | <varlistentry> | 158 | <varlistentry> |
| 159 | <term>DRIVER_USE_MTRR</term> | ||
| 160 | <listitem><para> | ||
| 161 | Driver uses MTRR interface for mapping memory, the DRM core will | ||
| 162 | manage MTRR resources. Deprecated. | ||
| 163 | </para></listitem> | ||
| 164 | </varlistentry> | ||
| 165 | <varlistentry> | ||
| 166 | <term>DRIVER_PCI_DMA</term> | 159 | <term>DRIVER_PCI_DMA</term> |
| 167 | <listitem><para> | 160 | <listitem><para> |
| 168 | Driver is capable of PCI DMA, mapping of PCI DMA buffers to | 161 | Driver is capable of PCI DMA, mapping of PCI DMA buffers to |
| @@ -195,28 +188,6 @@ | |||
| 195 | </para></listitem> | 188 | </para></listitem> |
| 196 | </varlistentry> | 189 | </varlistentry> |
| 197 | <varlistentry> | 190 | <varlistentry> |
| 198 | <term>DRIVER_IRQ_VBL</term> | ||
| 199 | <listitem><para>Unused. Deprecated.</para></listitem> | ||
| 200 | </varlistentry> | ||
| 201 | <varlistentry> | ||
| 202 | <term>DRIVER_DMA_QUEUE</term> | ||
| 203 | <listitem><para> | ||
| 204 | Should be set if the driver queues DMA requests and completes them | ||
| 205 | asynchronously. Deprecated. | ||
| 206 | </para></listitem> | ||
| 207 | </varlistentry> | ||
| 208 | <varlistentry> | ||
| 209 | <term>DRIVER_FB_DMA</term> | ||
| 210 | <listitem><para> | ||
| 211 | Driver supports DMA to/from the framebuffer, mapping of frambuffer | ||
| 212 | DMA buffers to userspace will be supported. Deprecated. | ||
| 213 | </para></listitem> | ||
| 214 | </varlistentry> | ||
| 215 | <varlistentry> | ||
| 216 | <term>DRIVER_IRQ_VBL2</term> | ||
| 217 | <listitem><para>Unused. Deprecated.</para></listitem> | ||
| 218 | </varlistentry> | ||
| 219 | <varlistentry> | ||
| 220 | <term>DRIVER_GEM</term> | 191 | <term>DRIVER_GEM</term> |
| 221 | <listitem><para> | 192 | <listitem><para> |
| 222 | Driver use the GEM memory manager. | 193 | Driver use the GEM memory manager. |
| @@ -234,6 +205,12 @@ | |||
| 234 | Driver implements DRM PRIME buffer sharing. | 205 | Driver implements DRM PRIME buffer sharing. |
| 235 | </para></listitem> | 206 | </para></listitem> |
| 236 | </varlistentry> | 207 | </varlistentry> |
| 208 | <varlistentry> | ||
| 209 | <term>DRIVER_RENDER</term> | ||
| 210 | <listitem><para> | ||
| 211 | Driver supports dedicated render nodes. | ||
| 212 | </para></listitem> | ||
| 213 | </varlistentry> | ||
| 237 | </variablelist> | 214 | </variablelist> |
| 238 | </sect3> | 215 | </sect3> |
| 239 | <sect3> | 216 | <sect3> |
| @@ -2212,6 +2189,18 @@ void intel_crt_init(struct drm_device *dev) | |||
| 2212 | !Iinclude/drm/drm_rect.h | 2189 | !Iinclude/drm/drm_rect.h |
| 2213 | !Edrivers/gpu/drm/drm_rect.c | 2190 | !Edrivers/gpu/drm/drm_rect.c |
| 2214 | </sect2> | 2191 | </sect2> |
| 2192 | <sect2> | ||
| 2193 | <title>Flip-work Helper Reference</title> | ||
| 2194 | !Pinclude/drm/drm_flip_work.h flip utils | ||
| 2195 | !Iinclude/drm/drm_flip_work.h | ||
| 2196 | !Edrivers/gpu/drm/drm_flip_work.c | ||
| 2197 | </sect2> | ||
| 2198 | <sect2> | ||
| 2199 | <title>VMA Offset Manager</title> | ||
| 2200 | !Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager | ||
| 2201 | !Edrivers/gpu/drm/drm_vma_manager.c | ||
| 2202 | !Iinclude/drm/drm_vma_manager.h | ||
| 2203 | </sect2> | ||
| 2215 | </sect1> | 2204 | </sect1> |
| 2216 | 2205 | ||
| 2217 | <!-- Internals: kms properties --> | 2206 | <!-- Internals: kms properties --> |
| @@ -2422,18 +2411,18 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
| 2422 | </abstract> | 2411 | </abstract> |
| 2423 | <para> | 2412 | <para> |
| 2424 | The <methodname>firstopen</methodname> method is called by the DRM core | 2413 | The <methodname>firstopen</methodname> method is called by the DRM core |
| 2425 | when an application opens a device that has no other opened file handle. | 2414 | for legacy UMS (User Mode Setting) drivers only when an application |
| 2426 | Similarly the <methodname>lastclose</methodname> method is called when | 2415 | opens a device that has no other opened file handle. UMS drivers can |
| 2427 | the last application holding a file handle opened on the device closes | 2416 | implement it to acquire device resources. KMS drivers can't use the |
| 2428 | it. Both methods are mostly used for UMS (User Mode Setting) drivers to | 2417 | method and must acquire resources in the <methodname>load</methodname> |
| 2429 | acquire and release device resources which should be done in the | 2418 | method instead. |
| 2430 | <methodname>load</methodname> and <methodname>unload</methodname> | ||
| 2431 | methods for KMS drivers. | ||
| 2432 | </para> | 2419 | </para> |
| 2433 | <para> | 2420 | <para> |
| 2434 | Note that the <methodname>lastclose</methodname> method is also called | 2421 | Similarly the <methodname>lastclose</methodname> method is called when |
| 2435 | at module unload time or, for hot-pluggable devices, when the device is | 2422 | the last application holding a file handle opened on the device closes |
| 2436 | unplugged. The <methodname>firstopen</methodname> and | 2423 | it, for both UMS and KMS drivers. Additionally, the method is also |
| 2424 | called at module unload time or, for hot-pluggable devices, when the | ||
| 2425 | device is unplugged. The <methodname>firstopen</methodname> and | ||
| 2437 | <methodname>lastclose</methodname> calls can thus be unbalanced. | 2426 | <methodname>lastclose</methodname> calls can thus be unbalanced. |
| 2438 | </para> | 2427 | </para> |
| 2439 | <para> | 2428 | <para> |
| @@ -2462,7 +2451,12 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
| 2462 | <para> | 2451 | <para> |
| 2463 | The <methodname>lastclose</methodname> method should restore CRTC and | 2452 | The <methodname>lastclose</methodname> method should restore CRTC and |
| 2464 | plane properties to default value, so that a subsequent open of the | 2453 | plane properties to default value, so that a subsequent open of the |
| 2465 | device will not inherit state from the previous user. | 2454 | device will not inherit state from the previous user. It can also be |
| 2455 | used to execute delayed power switching state changes, e.g. in | ||
| 2456 | conjunction with the vga-switcheroo infrastructure. Beyond that KMS | ||
| 2457 | drivers should not do any further cleanup. Only legacy UMS drivers might | ||
| 2458 | need to clean up device state so that the vga console or an independent | ||
| 2459 | fbdev driver could take over. | ||
| 2466 | </para> | 2460 | </para> |
| 2467 | </sect2> | 2461 | </sect2> |
| 2468 | <sect2> | 2462 | <sect2> |
| @@ -2498,7 +2492,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
| 2498 | <programlisting> | 2492 | <programlisting> |
| 2499 | .poll = drm_poll, | 2493 | .poll = drm_poll, |
| 2500 | .read = drm_read, | 2494 | .read = drm_read, |
| 2501 | .fasync = drm_fasync, | ||
| 2502 | .llseek = no_llseek, | 2495 | .llseek = no_llseek, |
| 2503 | </programlisting> | 2496 | </programlisting> |
| 2504 | </para> | 2497 | </para> |
| @@ -2657,6 +2650,69 @@ int (*resume) (struct drm_device *);</synopsis> | |||
| 2657 | info, since man pages should cover the rest. | 2650 | info, since man pages should cover the rest. |
| 2658 | </para> | 2651 | </para> |
| 2659 | 2652 | ||
| 2653 | <!-- External: render nodes --> | ||
| 2654 | |||
| 2655 | <sect1> | ||
| 2656 | <title>Render nodes</title> | ||
| 2657 | <para> | ||
| 2658 | DRM core provides multiple character-devices for user-space to use. | ||
| 2659 | Depending on which device is opened, user-space can perform a different | ||
| 2660 | set of operations (mainly ioctls). The primary node is always created | ||
| 2661 | and called <term>card<num></term>. Additionally, a currently | ||
| 2662 | unused control node, called <term>controlD<num></term> is also | ||
| 2663 | created. The primary node provides all legacy operations and | ||
| 2664 | historically was the only interface used by userspace. With KMS, the | ||
| 2665 | control node was introduced. However, the planned KMS control interface | ||
| 2666 | has never been written and so the control node stays unused to date. | ||
| 2667 | </para> | ||
| 2668 | <para> | ||
| 2669 | With the increased use of offscreen renderers and GPGPU applications, | ||
| 2670 | clients no longer require running compositors or graphics servers to | ||
| 2671 | make use of a GPU. But the DRM API required unprivileged clients to | ||
| 2672 | authenticate to a DRM-Master prior to getting GPU access. To avoid this | ||
| 2673 | step and to grant clients GPU access without authenticating, render | ||
| 2674 | nodes were intr | ||
