drm_mode.h revision 3e48613b482a8ca01ea5719e9cc342a9d4b28db0
12b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/*
22b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Copyright (c) 2007 Dave Airlie <airlied@linux.ie>
32b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com>
42b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Copyright (c) 2008 Red Hat Inc.
52b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
62b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Copyright (c) 2007-2008 Intel Corporation
72b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *
82b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Permission is hereby granted, free of charge, to any person obtaining a
92b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * copy of this software and associated documentation files (the "Software"),
102b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * to deal in the Software without restriction, including without limitation
112b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
122b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * and/or sell copies of the Software, and to permit persons to whom the
132b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * Software is furnished to do so, subject to the following conditions:
142b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *
152b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * The above copyright notice and this permission notice shall be included in
162b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * all copies or substantial portions of the Software.
172b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *
182b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
192b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
202b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
212b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
222b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
232b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
242b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * IN THE SOFTWARE.
252b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg */
262b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
272b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#ifndef _DRM_MODE_H
282b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define _DRM_MODE_H
292b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
302b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_DISPLAY_INFO_LEN	32
312b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_CONNECTOR_NAME_LEN	32
322b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_DISPLAY_MODE_LEN	32
332b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_PROP_NAME_LEN	32
342b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
352b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_BUILTIN	(1<<0)
362b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_CLOCK_C	((1<<1) | DRM_MODE_TYPE_BUILTIN)
372b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_CRTC_C	((1<<2) | DRM_MODE_TYPE_BUILTIN)
382b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_PREFERRED	(1<<3)
392b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_DEFAULT	(1<<4)
402b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_USERDEF	(1<<5)
412b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_TYPE_DRIVER	(1<<6)
422b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
432b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* Video mode flags */
442b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* bit compatible with the xorg definitions. */
452b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_PHSYNC	(1<<0)
462b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_NHSYNC	(1<<1)
472b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_PVSYNC	(1<<2)
482b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_NVSYNC	(1<<3)
492b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_INTERLACE	(1<<4)
502b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_DBLSCAN	(1<<5)
512b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_CSYNC	(1<<6)
522b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_PCSYNC	(1<<7)
532b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_NCSYNC	(1<<8)
542b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_HSKEW	(1<<9) /* hskew provided */
552b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_BCAST	(1<<10)
562b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_PIXMUX	(1<<11)
572b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_DBLCLK	(1<<12)
582b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_FLAG_CLKDIV2	(1<<13)
592b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
602b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* DPMS flags */
612b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* bit compatible with the xorg definitions. */
622b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DPMS_ON	0
632b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DPMS_STANDBY	1
642b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DPMS_SUSPEND	2
652b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DPMS_OFF	3
662b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
672b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* Scaling mode options */
682b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SCALE_NONE		0 /* Unmodified timing (display or
692b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg					     software can still scale) */
702b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SCALE_FULLSCREEN	1 /* Full screen, ignore aspect */
712b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SCALE_CENTER		2 /* Centered, no scaling */
722b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SCALE_ASPECT		3 /* Full screen, preserve aspect */
732b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
742b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* Dithering mode options */
752b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DITHERING_OFF	0
762b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_DITHERING_ON	1
772b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
782b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_modeinfo {
792b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 clock;
802b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
812b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
822b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
832b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 vrefresh; /* vertical refresh * 1000 */
842b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
852b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 flags;
862b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 type;
872b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	char name[DRM_DISPLAY_MODE_LEN];
882b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
892b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
902b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_card_res {
912b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 fb_id_ptr;
922b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 crtc_id_ptr;
932b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 connector_id_ptr;
942b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 encoder_id_ptr;
952b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_fbs;
962b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_crtcs;
972b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_connectors;
982b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_encoders;
992b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 min_width, max_width;
1002b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 min_height, max_height;
1012b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
1022b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1032b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_crtc {
1042b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 set_connectors_ptr;
1052b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_connectors;
1062b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1072b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 crtc_id; /**< Id */
1082b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 fb_id; /**< Id of framebuffer */
1092b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1102b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 x, y; /**< Position on the frameuffer */
1112b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1122b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 gamma_size;
1132b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 mode_valid;
1142b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	struct drm_mode_modeinfo mode;
1152b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
1162b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1172b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_ENCODER_NONE	0
1182b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_ENCODER_DAC	1
1192b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_ENCODER_TMDS	2
1202b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_ENCODER_LVDS	3
1212b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_ENCODER_TVDAC	4
1222b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1232b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_get_encoder {
1242b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 encoder_id;
1252b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 encoder_type;
1262b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1272b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 crtc_id; /**< Id of crtc */
1282b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1292b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 possible_crtcs;
1302b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 possible_clones;
1312b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
1322b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1332b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* This is for connectors with multiple signal types. */
1342b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */
1352b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_Automatic	0
1362b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_Unknown	0
1372b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_DVID	3
1382b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_DVIA	4
1392b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_Composite	5
1402b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_SVIDEO	6
1412b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_Component	8
1422b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_SUBCONNECTOR_SCART	9
1432b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1442b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_Unknown	0
1452b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_VGA		1
1462b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_DVII		2
1472b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_DVID		3
1482b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_DVIA		4
1492b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_Composite	5
1502b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_SVIDEO	6
1512b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_LVDS		7
1522b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_Component	8
1532b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_9PinDIN	9
1542b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_DisplayPort	10
1552b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_HDMIA	11
1562b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_HDMIB	12
1572b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CONNECTOR_TV		13
1582b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1592b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_get_connector {
1602b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1612b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 encoders_ptr;
1622b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 modes_ptr;
1632b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 props_ptr;
1642b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 prop_values_ptr;
1652b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1662b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_modes;
1672b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_props;
1682b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_encoders;
1692b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1702b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 encoder_id; /**< Current Encoder */
1712b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connector_id; /**< Id */
1722b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connector_type;
1732b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connector_type_id;
1742b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1752b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connection;
1762b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 mm_width, mm_height; /**< HxW in millimeters */
1772b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 subpixel;
1782b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
1792b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1802b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_PROP_PENDING	(1<<0)
1812b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_PROP_RANGE	(1<<1)
1822b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_PROP_IMMUTABLE	(1<<2)
1832b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_PROP_ENUM	(1<<3) /* enumerated type with text strings */
1842b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_PROP_BLOB	(1<<4)
1852b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1862b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_property_enum {
1872b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 value;
1882b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	char name[DRM_PROP_NAME_LEN];
1892b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
1902b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1912b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_get_property {
1922b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 values_ptr; /* values and blob lengths */
1932b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 enum_blob_ptr; /* enum and blob id ptrs */
1942b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1952b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 prop_id;
1962b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 flags;
1972b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	char name[DRM_PROP_NAME_LEN];
1982b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
1992b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_values;
2002b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 count_enum_blobs;
2012b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2022b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2032b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_connector_set_property {
2042b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 value;
2052b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 prop_id;
2062b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connector_id;
2072b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2082b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2092b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_get_blob {
2102b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 blob_id;
2112b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 length;
2122b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 data;
2132b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2142b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2152b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_fb_cmd {
2162b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 fb_id;
2172b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 width, height;
2182b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 pitch;
2192b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 bpp;
2202b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 depth;
2212b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	/* driver specific handle */
2222b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 handle;
2232b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2242b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2253e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantzstruct drm_mode_fb_dirty_cmd {
2263e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u32 fb_id;
2273e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u32 flags;
2283e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u32 num_clips;
2293e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u32 reserved1;
2303e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u64 reserved2;
2313e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz	__u64 clips_ptr;
2323e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz};
2333e48613b482a8ca01ea5719e9cc342a9d4b28db0Jakob Bornecrantz
2342b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_mode_cmd {
2352b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 connector_id;
2362b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	struct drm_mode_modeinfo mode;
2372b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2382b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2392b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CURSOR_BO	(1<<0)
2402b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#define DRM_MODE_CURSOR_MOVE	(1<<1)
2412b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2422b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg/*
2432b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * depending on the value in flags diffrent members are used.
2442b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *
2452b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * CURSOR_BO uses
2462b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    crtc
2472b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    width
2482b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    height
2492b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    handle - if 0 turns the cursor of
2502b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *
2512b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg * CURSOR_MOVE uses
2522b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    crtc
2532b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    x
2542b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg *    y
2552b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg */
2562b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_cursor {
2572b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 flags;
2582b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 crtc_id;
2592b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__s32 x;
2602b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__s32 y;
2612b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 width;
2622b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 height;
2632b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	/* driver specific handle */
2642b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 handle;
2652b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2662b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2672b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsbergstruct drm_mode_crtc_lut {
2682b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 crtc_id;
2692b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u32 gamma_size;
2702b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2712b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	/* pointers to arrays */
2722b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 red;
2732b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 green;
2742b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg	__u64 blue;
2752b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg};
2762b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg
2772b42af9a2fd8e35e920d61a212ce6b9c85354289Kristian Høgsberg#endif
278