drm_mode.h
001:
002: <airlied@linux.ie>
003: <wallbraker@gmail.com>
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027: #ifndef _DRM_MODE_H
028: #define _DRM_MODE_H
029:
030: #define DRM_DISPLAY_INFO_LEN 32
031: #define DRM_CONNECTOR_NAME_LEN 32
032: #define DRM_DISPLAY_MODE_LEN 32
033: #define DRM_PROP_NAME_LEN 32
034:
035: #define DRM_MODE_TYPE_BUILTIN (1<<0)
036: #define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN)
037: #define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN)
038: #define DRM_MODE_TYPE_PREFERRED (1<<3)
039: #define DRM_MODE_TYPE_DEFAULT (1<<4)
040: #define DRM_MODE_TYPE_USERDEF (1<<5)
041: #define DRM_MODE_TYPE_DRIVER (1<<6)
042:
043:
044:
045: #define DRM_MODE_FLAG_PHSYNC (1<<0)
046: #define DRM_MODE_FLAG_NHSYNC (1<<1)
047: #define DRM_MODE_FLAG_PVSYNC (1<<2)
048: #define DRM_MODE_FLAG_NVSYNC (1<<3)
049: #define DRM_MODE_FLAG_INTERLACE (1<<4)
050: #define DRM_MODE_FLAG_DBLSCAN (1<<5)
051: #define DRM_MODE_FLAG_CSYNC (1<<6)
052: #define DRM_MODE_FLAG_PCSYNC (1<<7)
053: #define DRM_MODE_FLAG_NCSYNC (1<<8)
054: #define DRM_MODE_FLAG_HSKEW (1<<9)
055: #define DRM_MODE_FLAG_BCAST (1<<10)
056: #define DRM_MODE_FLAG_PIXMUX (1<<11)
057: #define DRM_MODE_FLAG_DBLCLK (1<<12)
058: #define DRM_MODE_FLAG_CLKDIV2 (1<<13)
059:
060:
061:
062: #define DRM_MODE_DPMS_ON 0
063: #define DRM_MODE_DPMS_STANDBY 1
064: #define DRM_MODE_DPMS_SUSPEND 2
065: #define DRM_MODE_DPMS_OFF 3
066:
067:
068: #define DRM_MODE_SCALE_NONE 0
069:
070: #define DRM_MODE_SCALE_FULLSCREEN 1
071: #define DRM_MODE_SCALE_CENTER 2
072: #define DRM_MODE_SCALE_ASPECT 3
073:
074:
075: #define DRM_MODE_DITHERING_OFF 0
076: #define DRM_MODE_DITHERING_ON 1
077: #define DRM_MODE_DITHERING_AUTO 2
078:
079:
080: #define DRM_MODE_DIRTY_OFF 0
081: #define DRM_MODE_DIRTY_ON 1
082: #define DRM_MODE_DIRTY_ANNOTATE 2
083:
084: struct drm_mode_modeinfo {
085: __u32 clock;
086: __u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
087: __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
088:
089: __u32 vrefresh;
090:
091: __u32 flags;
092: __u32 type;
093: char name[DRM_DISPLAY_MODE_LEN];
094: };
095:
096: struct drm_mode_card_res {
097: __u64 fb_id_ptr;
098: __u64 crtc_id_ptr;
099: __u64 connector_id_ptr;
100: __u64 encoder_id_ptr;
101: __u32 count_fbs;
102: __u32 count_crtcs;
103: __u32 count_connectors;
104: __u32 count_encoders;
105: __u32 min_width, max_width;
106: __u32 min_height, max_height;
107: };
108:
109: struct drm_mode_crtc {
110: __u64 set_connectors_ptr;
111: __u32 count_connectors;
112:
113: __u32 crtc_id;
114: __u32 fb_id;
115:
116: __u32 x, y;
117:
118: __u32 gamma_size;
119: __u32 mode_valid;
120: struct drm_mode_modeinfo mode;
121: };
122:
123: #define DRM_MODE_ENCODER_NONE 0
124: #define DRM_MODE_ENCODER_DAC 1
125: #define DRM_MODE_ENCODER_TMDS 2
126: #define DRM_MODE_ENCODER_LVDS 3
127: #define DRM_MODE_ENCODER_TVDAC 4
128: #define DRM_MODE_ENCODER_VIRTUAL 5
129:
130: struct drm_mode_get_encoder {
131: __u32 encoder_id;
132: __u32 encoder_type;
133:
134: __u32 crtc_id;
135:
136: __u32 possible_crtcs;
137: __u32 possible_clones;
138: };
139:
140:
141:
142: #define DRM_MODE_SUBCONNECTOR_Automatic 0
143: #define DRM_MODE_SUBCONNECTOR_Unknown 0
144: #define DRM_MODE_SUBCONNECTOR_DVID 3
145: #define DRM_MODE_SUBCONNECTOR_DVIA 4
146: #define DRM_MODE_SUBCONNECTOR_Composite 5
147: #define DRM_MODE_SUBCONNECTOR_SVIDEO 6
148: #define DRM_MODE_SUBCONNECTOR_Component 8
149: #define DRM_MODE_SUBCONNECTOR_SCART 9
150:
151: #define DRM_MODE_CONNECTOR_Unknown 0
152: #define DRM_MODE_CONNECTOR_VGA 1
153: #define DRM_MODE_CONNECTOR_DVII 2
154: #define DRM_MODE_CONNECTOR_DVID 3
155: #define DRM_MODE_CONNECTOR_DVIA 4
156: #define DRM_MODE_CONNECTOR_Composite 5
157: #define DRM_MODE_CONNECTOR_SVIDEO 6
158: #define DRM_MODE_CONNECTOR_LVDS 7
159: #define DRM_MODE_CONNECTOR_Component 8
160: #define DRM_MODE_CONNECTOR_9PinDIN 9
161: #define DRM_MODE_CONNECTOR_DisplayPort 10
162: #define DRM_MODE_CONNECTOR_HDMIA 11
163: #define DRM_MODE_CONNECTOR_HDMIB 12
164: #define DRM_MODE_CONNECTOR_TV 13
165: #define DRM_MODE_CONNECTOR_eDP 14
166: #define DRM_MODE_CONNECTOR_VIRTUAL 15
167:
168: struct drm_mode_get_connector {
169:
170: __u64 encoders_ptr;
171: __u64 modes_ptr;
172: __u64 props_ptr;
173: __u64 prop_values_ptr;
174:
175: __u32 count_modes;
176: __u32 count_props;
177: __u32 count_encoders;
178:
179: __u32 encoder_id;
180: __u32 connector_id;
181: __u32 connector_type;
182: __u32 connector_type_id;
183:
184: __u32 connection;
185: __u32 mm_width, mm_height;
186: __u32 subpixel;
187: };
188:
189: #define DRM_MODE_PROP_PENDING (1<<0)
190: #define DRM_MODE_PROP_RANGE (1<<1)
191: #define DRM_MODE_PROP_IMMUTABLE (1<<2)
192: #define DRM_MODE_PROP_ENUM (1<<3)
193: #define DRM_MODE_PROP_BLOB (1<<4)
194:
195: struct drm_mode_property_enum {
196: __u64 value;
197: char name[DRM_PROP_NAME_LEN];
198: };
199:
200: struct drm_mode_get_property {
201: __u64 values_ptr;
202: __u64 enum_blob_ptr;
203:
204: __u32 prop_id;
205: __u32 flags;
206: char name[DRM_PROP_NAME_LEN];
207:
208: __u32 count_values;
209: __u32 count_enum_blobs;
210: };
211:
212: struct drm_mode_connector_set_property {
213: __u64 value;
214: __u32 prop_id;
215: __u32 connector_id;
216: };
217:
218: struct drm_mode_get_blob {
219: __u32 blob_id;
220: __u32 length;
221: __u64 data;
222: };
223:
224: struct drm_mode_fb_cmd {
225: __u32 fb_id;
226: __u32 width, height;
227: __u32 pitch;
228: __u32 bpp;
229: __u32 depth;
230:
231: __u32 handle;
232: };
233:
234: #define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
235: #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
236: #define DRM_MODE_FB_DIRTY_FLAGS 0x03
237:
238: #define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267: struct drm_mode_fb_dirty_cmd {
268: __u32 fb_id;
269: __u32 flags;
270: __u32 color;
271: __u32 num_clips;
272: __u64 clips_ptr;
273: };
274:
275: struct drm_mode_mode_cmd {
276: __u32 connector_id;
277: struct drm_mode_modeinfo mode;
278: };
279:
280: #define DRM_MODE_CURSOR_BO 0x01
281: #define DRM_MODE_CURSOR_MOVE 0x02
282: #define DRM_MODE_CURSOR_FLAGS 0x03
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298: struct drm_mode_cursor {
299: __u32 flags;
300: __u32 crtc_id;
301: __s32 x;
302: __s32 y;
303: __u32 width;
304: __u32 height;
305:
306: __u32 handle;
307: };
308:
309: struct drm_mode_crtc_lut {
310: __u32 crtc_id;
311: __u32 gamma_size;
312:
313:
314: __u64 red;
315: __u64 green;
316: __u64 blue;
317: };
318:
319: #define DRM_MODE_PAGE_FLIP_EVENT 0x01
320: #define DRM_MODE_PAGE_FLIP_FLAGS DRM_MODE_PAGE_FLIP_EVENT
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344: struct drm_mode_crtc_page_flip {
345: __u32 crtc_id;
346: __u32 fb_id;
347: __u32 flags;
348: __u32 reserved;
349: __u64 user_data;
350: };
351:
352:
353: struct drm_mode_create_dumb {
354: uint32_t height;
355: uint32_t width;
356: uint32_t bpp;
357: uint32_t flags;
358:
359: uint32_t handle;
360: uint32_t pitch;
361: uint64_t size;
362: };
363:
364:
365: struct drm_mode_map_dumb {
366:
367: __u32 handle;
368: __u32 pad;
369:
370:
371:
372:
373:
374: __u64 offset;
375: };
376:
377: struct drm_mode_destroy_dumb {
378: uint32_t handle;
379: };
380:
381: #endif
382:
© Andrew Scott 2006 -
2025,
All Rights Reserved