Linux DRM Developer's Guide

Jesse Barnes

Initial version 
Intel Corporation


Laurent Pinchart

Driver internals 
Ideas on board SPRL

Daniel Vetter

Contributions all over the place 
Intel Corporation


The contents of this file may be used under the terms of the GNU General Public License version 2 (the "GPL") as distributed in the kernel source COPYING file.

Revision History
Revision 1.02012-07-13LP
Added extensive documentation about driver internals.

Table of Contents

I. DRM Core
1. Introduction
2. DRM Internals
Driver Initialization
Driver Information
Device Registration
Driver Load
Memory management
The Translation Table Manager (TTM)
The Graphics Execution Manager (GEM)
VMA Offset Manager
PRIME Buffer Sharing
PRIME Function References
DRM MM Range Allocator
DRM MM Range Allocator Function References
Mode Setting
Display Modes Function Reference
Frame Buffer Creation
Dumb Buffer Objects
Output Polling
KMS Initialization and Cleanup
CRTCs (struct drm_crtc)
Planes (struct drm_plane)
Encoders (struct drm_encoder)
Connectors (struct drm_connector)
Output discovery and initialization example
KMS API Functions
KMS Locking
Mode Setting Helper Functions
Helper Functions
CRTC Helper Operations
Encoder Helper Operations
Connector Helper Operations
Modeset Helper Functions Reference
Output Probing Helper Functions Reference
fbdev Helper Functions Reference
Display Port Helper Functions Reference
Display Port MST Helper Functions Reference
EDID Helper Functions Reference
Rectangle Utilities Reference
Flip-work Helper Reference
HDMI Infoframes Helper Reference
Plane Helper Reference
KMS Properties
Existing KMS Properties
Vertical Blanking
Vertical Blanking and Interrupt Handling Functions Reference
Open/Close, File Operations and IOCTLs
Open and Close
File Operations
Legacy Support Code
Legacy Suspend/Resume
Legacy DMA Services
3. Userland interfaces
Render nodes
VBlank event handling
II. DRM Drivers
4. drm/i915 Intel GFX Driver
Display Hardware Handling
Mode Setting Infrastructure
Plane Configuration
Output Probing
Memory Management and Command Submission
Batchbuffer Parsing
Logical Rings, Logical Ring Contexts and Execlists

List of Tables

4.1. Dual channel PHY (VLV/CHV)
4.2. Single channel PHY (CHV)