1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2007 Dave Airlie <airlied@linux.ie> 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com> 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2008 Red Hat Inc. 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2007-2008 Intel Corporation 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Permission is hereby granted, free of charge, to any person obtaining a 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * copy of this software and associated documentation files (the "Software"), 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * to deal in the Software without restriction, including without limitation 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * and/or sell copies of the Software, and to permit persons to whom the 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Software is furnished to do so, subject to the following conditions: 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The above copyright notice and this permission notice shall be included in 16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * all copies or substantial portions of the Software. 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IN THE SOFTWARE. 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _DRM_MODE_H 28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _DRM_MODE_H 29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_DISPLAY_INFO_LEN 32 33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_CONNECTOR_NAME_LEN 32 34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_DISPLAY_MODE_LEN 32 35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_PROP_NAME_LEN 32 36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_BUILTIN (1<<0) 38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN) 39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN) 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_PREFERRED (1<<3) 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_DEFAULT (1<<4) 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_USERDEF (1<<5) 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_TYPE_DRIVER (1<<6) 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Video mode flags */ 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* bit compatible with the xorg definitions. */ 47e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_PHSYNC (1<<0) 48e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_NHSYNC (1<<1) 49e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_PVSYNC (1<<2) 50e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_NVSYNC (1<<3) 51e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_INTERLACE (1<<4) 52e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_DBLSCAN (1<<5) 53e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_CSYNC (1<<6) 54e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_PCSYNC (1<<7) 55e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_NCSYNC (1<<8) 56e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_HSKEW (1<<9) /* hskew provided */ 57e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_BCAST (1<<10) 58e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_PIXMUX (1<<11) 59e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_DBLCLK (1<<12) 60e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_CLKDIV2 (1<<13) 61e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* 62e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * When adding a new stereo mode don't forget to adjust DRM_MODE_FLAGS_3D_MAX 63e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * (define not exposed to user space). 64e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 65e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_MASK (0x1f<<14) 66e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_NONE (0<<14) 67e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_FRAME_PACKING (1<<14) 68e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2<<14) 69e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3<<14) 70e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4<<14) 71e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_L_DEPTH (5<<14) 72e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6<<14) 73e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7<<14) 74e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8<<14) 75e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* DPMS flags */ 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* bit compatible with the xorg definitions. */ 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DPMS_ON 0 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DPMS_STANDBY 1 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DPMS_SUSPEND 2 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DPMS_OFF 3 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Scaling mode options */ 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SCALE_NONE 0 /* Unmodified timing (display or 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng software can still scale) */ 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SCALE_FULLSCREEN 1 /* Full screen, ignore aspect */ 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SCALE_CENTER 2 /* Centered, no scaling */ 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SCALE_ASPECT 3 /* Full screen, preserve aspect */ 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 917c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris/* Picture aspect ratio options */ 927c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris#define DRM_MODE_PICTURE_ASPECT_NONE 0 937c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris#define DRM_MODE_PICTURE_ASPECT_4_3 1 947c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris#define DRM_MODE_PICTURE_ASPECT_16_9 2 957c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris 96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Dithering mode options */ 97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DITHERING_OFF 0 98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DITHERING_ON 1 99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DITHERING_AUTO 2 100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Dirty info options */ 102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DIRTY_OFF 0 103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DIRTY_ON 1 104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_DIRTY_ANNOTATE 2 105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_modeinfo { 107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 clock; 108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 hdisplay, hsync_start, hsync_end, htotal, hskew; 109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan; 110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 vrefresh; 112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; 114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 type; 115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[DRM_DISPLAY_MODE_LEN]; 116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_card_res { 119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 fb_id_ptr; 120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 crtc_id_ptr; 121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 connector_id_ptr; 122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 encoder_id_ptr; 123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_fbs; 124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_crtcs; 125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_connectors; 126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_encoders; 127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 min_width, max_width; 128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 min_height, max_height; 129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_crtc { 132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 set_connectors_ptr; 133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_connectors; 134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; /**< Id */ 136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; /**< Id of framebuffer */ 137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 x, y; /**< Position on the frameuffer */ 139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 gamma_size; 141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 mode_valid; 142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct drm_mode_modeinfo mode; 143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PRESENT_TOP_FIELD (1<<0) 146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PRESENT_BOTTOM_FIELD (1<<1) 147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Planes blend with or override other bits on the CRTC */ 149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_set_plane { 150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 plane_id; 151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; 152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; /* fb object contains surface format type */ 153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; /* see above flags */ 154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* Signed dest location allows it to be partially off screen */ 156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s32 crtc_x, crtc_y; 157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_w, crtc_h; 158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* Source values are 16.16 fixed point */ 160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 src_x, src_y; 161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 src_h, src_w; 162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_plane { 165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 plane_id; 166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; 168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; 169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 possible_crtcs; 171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 gamma_size; 172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_format_types; 174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 format_type_ptr; 175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_plane_res { 178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 plane_id_ptr; 179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_planes; 180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_NONE 0 183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_DAC 1 184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_TMDS 2 185224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_LVDS 3 186224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_TVDAC 4 187224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_ENCODER_VIRTUAL 5 188e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_ENCODER_DSI 6 189314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_ENCODER_DPMST 7 190224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 191224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_encoder { 192224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 encoder_id; 193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 encoder_type; 194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; /**< Id of crtc */ 196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 possible_crtcs; 198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 possible_clones; 199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 200224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 201224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* This is for connectors with multiple signal types. */ 202224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */ 203224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_Automatic 0 204224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_Unknown 0 205224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_DVID 3 206224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_DVIA 4 207224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_Composite 5 208224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_SVIDEO 6 209224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_Component 8 210224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_SUBCONNECTOR_SCART 9 211224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 212224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_Unknown 0 213224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_VGA 1 214224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_DVII 2 215224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_DVID 3 216224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_DVIA 4 217224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_Composite 5 218224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_SVIDEO 6 219224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_LVDS 7 220224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_Component 8 221224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_9PinDIN 9 222224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_DisplayPort 10 223224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_HDMIA 11 224224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_HDMIB 12 225224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_TV 13 226224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_eDP 14 227224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CONNECTOR_VIRTUAL 15 228e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_CONNECTOR_DSI 16 229224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 230224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_connector { 231224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 232224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 encoders_ptr; 233224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 modes_ptr; 234224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 props_ptr; 235224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 prop_values_ptr; 236224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 237224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_modes; 238224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_props; 239224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_encoders; 240224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 241224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 encoder_id; /**< Current Encoder */ 242224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connector_id; /**< Id */ 243224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connector_type; 244224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connector_type_id; 245224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 246224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connection; 247224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 mm_width, mm_height; /**< HxW in millimeters */ 248224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 subpixel; 249e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 250e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 pad; 251224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 252224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 253224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_PENDING (1<<0) 254224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_RANGE (1<<1) 255224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_IMMUTABLE (1<<2) 256224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_ENUM (1<<3) /* enumerated type with text strings */ 257224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_BLOB (1<<4) 258224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PROP_BITMASK (1<<5) /* bitmask of enumerated types */ 259224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 260314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris/* non-extended types: legacy bitmask, one bit per type: */ 261314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_PROP_LEGACY_TYPE ( \ 262314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris DRM_MODE_PROP_RANGE | \ 263314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris DRM_MODE_PROP_ENUM | \ 264314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris DRM_MODE_PROP_BLOB | \ 265314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris DRM_MODE_PROP_BITMASK) 266314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris 267314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris/* extended-types: rather than continue to consume a bit per type, 268314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * grab a chunk of the bits to use as integer type id. 269314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris */ 270314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0 271314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_PROP_TYPE(n) ((n) << 6) 272314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1) 273314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2) 274314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris 275224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_property_enum { 276224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 value; 277224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[DRM_PROP_NAME_LEN]; 278224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 279224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 280224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_property { 281224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 values_ptr; /* values and blob lengths */ 282224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 enum_blob_ptr; /* enum and blob id ptrs */ 283224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 284224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 prop_id; 285224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; 286224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[DRM_PROP_NAME_LEN]; 287224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 288224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_values; 289224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_enum_blobs; 290224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 291224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 292224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_connector_set_property { 293224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 value; 294224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 prop_id; 295224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connector_id; 296224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 297224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 298224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_obj_get_properties { 299224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 props_ptr; 300224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 prop_values_ptr; 301224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 count_props; 302224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 obj_id; 303224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 obj_type; 304224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 305224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 306224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_obj_set_property { 307224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 value; 308224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 prop_id; 309224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 obj_id; 310224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 obj_type; 311224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 312224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 313224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_get_blob { 314224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 blob_id; 315224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 length; 316224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 data; 317224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 318224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 319224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_fb_cmd { 320224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; 321224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 width, height; 322224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pitch; 323224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 bpp; 324224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 depth; 325224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* driver specific handle */ 326224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 handle; 327224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 328224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 329224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */ 330224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 331224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_fb_cmd2 { 332224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; 333224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 width, height; 334224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pixel_format; /* fourcc code from drm_fourcc.h */ 335224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; /* see above flags */ 336224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 337224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* 338224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * In case of planar formats, this ioctl allows up to 4 339224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * buffer objects with offets and pitches per plane. 340224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The pitch and offset order is dictated by the fourcc, 341224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as: 342224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 343224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * YUV 4:2:0 image with a plane of 8 bit Y samples 344224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * followed by an interleaved U/V plane containing 345224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 8 bit 2x2 subsampled colour difference samples. 346224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 347224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * So it would consist of Y as offset[0] and UV as 348224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * offeset[1]. Note that offset[0] will generally 349224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * be 0. 350224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 351224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 handles[4]; 352224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pitches[4]; /* pitch for each plane */ 353224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 offsets[4]; /* offset of each plane */ 354224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 355224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 356224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01 357224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02 358224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_FB_DIRTY_FLAGS 0x03 359224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 360224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_FB_DIRTY_MAX_CLIPS 256 361224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 362224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 363224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Mark a region of a framebuffer as dirty. 364224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 365224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Some hardware does not automatically update display contents 366224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * as a hardware or software draw to a framebuffer. This ioctl 367224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * allows userspace to tell the kernel and the hardware what 368224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * regions of the framebuffer have changed. 369224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 370224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The kernel or hardware is free to update more then just the 371224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * region specified by the clip rects. The kernel or hardware 372224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * may also delay and/or coalesce several calls to dirty into a 373224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * single update. 374224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 375224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Userspace may annotate the updates, the annotates are a 376224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * promise made by the caller that the change is either a copy 377224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * of pixels or a fill of a single color in the region specified. 378224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 379224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * If the DRM_MODE_FB_DIRTY_ANNOTATE_COPY flag is given then 380224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the number of updated regions are half of num_clips given, 381224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * where the clip rects are paired in src and dst. The width and 382224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * height of each one of the pairs must match. 383224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 384224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * If the DRM_MODE_FB_DIRTY_ANNOTATE_FILL flag is given the caller 385224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * promises that the region specified of the clip rects is filled 386224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * completely with a single color as given in the color argument. 387224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 388224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 389224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_fb_dirty_cmd { 390224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; 391224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; 392224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 color; 393224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 num_clips; 394224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 clips_ptr; 395224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 396224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 397224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_mode_cmd { 398224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 connector_id; 399224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct drm_mode_modeinfo mode; 400224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 401224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 402224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CURSOR_BO 0x01 403224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CURSOR_MOVE 0x02 404224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_CURSOR_FLAGS 0x03 405224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 406224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 407224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * depending on the value in flags different members are used. 408224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 409224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * CURSOR_BO uses 410224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * crtc_id 411224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * width 412224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * height 413224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * handle - if 0 turns the cursor off 414224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 415224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * CURSOR_MOVE uses 416224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * crtc_id 417224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * x 418224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * y 419224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 420224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_cursor { 421224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; 422224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; 423224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s32 x; 424224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s32 y; 425224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 width; 426224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 height; 427224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* driver specific handle */ 428224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 handle; 429224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 430224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 431e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct drm_mode_cursor2 { 432e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 flags; 433e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 crtc_id; 434e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s32 x; 435e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s32 y; 436e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 width; 437e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 height; 438e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* driver specific handle */ 439e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 handle; 440e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s32 hot_x; 441e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s32 hot_y; 442e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 443e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 444224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_crtc_lut { 445224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; 446224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 gamma_size; 447224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 448224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* pointers to arrays */ 449224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 red; 450224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 green; 451224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 blue; 452224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 453224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 454224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DRM_MODE_PAGE_FLIP_EVENT 0x01 455e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_PAGE_FLIP_ASYNC 0x02 456e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT|DRM_MODE_PAGE_FLIP_ASYNC) 457224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 458224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 459224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Request a page flip on the specified crtc. 460224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 461224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This ioctl will ask KMS to schedule a page flip for the specified 462224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * crtc. Once any pending rendering targeting the specified fb (as of 463224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ioctl time) has completed, the crtc will be reprogrammed to display 464224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * that fb after the next vertical refresh. The ioctl returns 465224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * immediately, but subsequent rendering to the current fb will block 466224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * in the execbuffer ioctl until the page flip happens. If a page 467224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * flip is already pending as the ioctl is called, EBUSY will be 468224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * returned. 469224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 470e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Flag DRM_MODE_PAGE_FLIP_EVENT requests that drm sends back a vblank 471e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * event (see drm.h: struct drm_event_vblank) when the page flip is 472e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * done. The user_data field passed in with this ioctl will be 473e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * returned as the user_data field in the vblank event struct. 474e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 475e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Flag DRM_MODE_PAGE_FLIP_ASYNC requests that the flip happen 476e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 'as soon as possible', meaning that it not delay waiting for vblank. 477e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * This may cause tearing on the screen. 478224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 479224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The reserved field must be zero until we figure out something 480224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * clever to use it for. 481224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 482224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 483224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_crtc_page_flip { 484224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 crtc_id; 485224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fb_id; 486224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 flags; 487224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 reserved; 488224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 user_data; 489224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 490224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 491224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* create a dumb scanout buffer */ 492224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_create_dumb { 493224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t height; 494224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t width; 495224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t bpp; 496224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t flags; 497224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* handle, pitch, size will be returned */ 498224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t handle; 499224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t pitch; 500224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint64_t size; 501224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 502224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 503224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* set up for mmap of a dumb scanout buffer */ 504224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_map_dumb { 505224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /** Handle for the object being mapped. */ 506224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 handle; 507224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pad; 508224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /** 509224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Fake offset to use for subsequent mmap call 510224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 511224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This is a fixed-size type for 32/64 compatibility. 512224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 513224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 offset; 514224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 515224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 516224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct drm_mode_destroy_dumb { 517224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng uint32_t handle; 518224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 519224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 520224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 521